Getting Started

This guide walks you through installing, configuring, and using Omega Shop for the first time.

Installation

Follow these steps to set up a local development environment for Omega Shop.

# Clone the repository
git clone <repo-url> omega-shop && cd omega-shop

# Install PHP dependencies
composer install

# Install Node dependencies
npm install

# Copy environment file
cp .env.example .env

# Generate application key
php artisan key:generate

Configuration

After installation, complete these configuration steps to enable all platform features:

  1. Configure Stripe keys (STRIPE_KEY, STRIPE_SECRET, STRIPE_WEBHOOK_SECRET) for payment processing
  2. Set up Meilisearch and configure SCOUT_DRIVER=meilisearch, MEILISEARCH_HOST, MEILISEARCH_KEY for full-text search
  3. Set up Google and Facebook OAuth apps and add client IDs/secrets for social login (optional)
  4. Configure AWS S3 credentials for production file storage (optional, falls back to local disk)
  5. Install and configure ClamAV for virus scanning on file uploads (optional)
  6. Set up Vonage credentials for SMS notifications (optional)
  7. Configure Sentry DSN for error monitoring (optional)
  8. Run php artisan horizon to start the queue worker for background jobs
  9. Set up a cron entry for Laravel scheduler: * * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

Environment Variables

Required Variables

  • Name
    APP_NAME
    Type
    string
    Description

    Application display name. Defaults to Laravel.

  • Name
    APP_URL
    Type
    string
    Description

    Base URL of the application. Defaults to http://localhost.

  • Name
    DB_CONNECTION
    Type
    string
    Description

    Database driver (mysql, sqlite, pgsql). Defaults to sqlite.

  • Name
    STRIPE_KEY
    Type
    string
    Description

    Stripe publishable key for payment processing.

  • Name
    STRIPE_SECRET
    Type
    string
    Description

    Stripe secret key for server-side API calls.

  • Name
    STRIPE_WEBHOOK_SECRET
    Type
    string
    Description

    Stripe webhook signing secret for verifying incoming webhooks.

  • Name
    CASHIER_CURRENCY
    Type
    string
    Description

    Default currency for Stripe transactions (e.g., usd, eur).

Search & Integrations

  • Name
    SCOUT_DRIVER
    Type
    string
    Description

    Search driver (meilisearch for production, collection for testing).

  • Name
    MEILISEARCH_HOST
    Type
    string
    Description

    Meilisearch server URL.

  • Name
    MEILISEARCH_KEY
    Type
    string
    Description

    Meilisearch master API key.

Social Login

  • Name
    GOOGLE_CLIENT_ID
    Type
    string
    Description

    Google OAuth client ID for social login.

  • Name
    GOOGLE_CLIENT_SECRET
    Type
    string
    Description

    Google OAuth client secret.

  • Name
    FACEBOOK_CLIENT_ID
    Type
    string
    Description

    Facebook OAuth app ID for social login.

  • Name
    FACEBOOK_CLIENT_SECRET
    Type
    string
    Description

    Facebook OAuth app secret.

Notifications

  • Name
    VONAGE_KEY
    Type
    string
    Description

    Vonage API key for SMS notifications.

  • Name
    VONAGE_SECRET
    Type
    string
    Description

    Vonage API secret.

AWS & Storage

  • Name
    AWS_ACCESS_KEY_ID
    Type
    string
    Description

    AWS access key for S3 file storage.

  • Name
    AWS_SECRET_ACCESS_KEY
    Type
    string
    Description

    AWS secret key for S3.

  • Name
    AWS_DEFAULT_REGION
    Type
    string
    Description

    AWS region for S3 bucket.

  • Name
    AWS_BUCKET
    Type
    string
    Description

    S3 bucket name for media and file uploads.

Monitoring & Security

  • Name
    SENTRY_LARAVEL_DSN
    Type
    string
    Description

    Sentry DSN for server-side error tracking.

  • Name
    CLAMAV_PREFERRED_SOCKET
    Type
    string
    Description

    ClamAV connection type (unix_socket or tcp_socket). Defaults to unix_socket.

  • Name
    MOBILE_REDIRECT_ENABLED
    Type
    boolean
    Description

    Enable deep-linking redirects to mobile app. Defaults to true.

Deployment

  • Name
    DEPLOY_USER
    Type
    string
    Description

    SSH user for Envoy deployment.

  • Name
    DEPLOY_HOST
    Type
    string
    Description

    Production server hostname for deployment.

  • Name
    DEPLOY_REPOSITORY
    Type
    string
    Description

    Git repository URL for deployment.

  • Name
    DEPLOY_APP_DIR
    Type
    string
    Description

    Application root directory on the server.

  • Name
    DEPLOY_RELEASE_DIR
    Type
    string
    Description

    Directory for release folders on the server.

  • Name
    DEPLOY_BRANCH
    Type
    string
    Description

    Git branch to deploy. Defaults to main.

Basic Usage Flow

The typical workflow for Omega Shop follows these steps:

  1. Admin creates products — Admins create products (digital, service, or physical) with media, pricing tiers, and specifications via the Filament panel.
  2. Stripe sync — Products are synced to Stripe automatically upon approval.
  3. Customer browsing — Customers browse the catalog via the API or mobile app, with full-text search and category filtering.
  4. Cart management — Customers add items to their cart or wishlist.
  5. Checkout — At checkout, the customer selects billing details and delivery address, then pays via Stripe.
  6. Digital delivery — For digital products, the customer receives license keys and download links in their purchase history.
  7. Physical fulfillment — For physical products, the order moves through status stages (Pending, Processing, Completed).
  8. Admin management — Admins manage orders, users, and integrations from the Filament dashboard.
  9. Multi-channel selling — Products optionally sync to Shopify/WooCommerce for multi-channel selling.

API Examples

The REST API (v1) uses Sanctum token authentication. Below are common API operations.

Register a new user

Create a new user account with email and password.

  • Name
    name
    Type
    string
    Description

    The user's full name.

  • Name
    email
    Type
    string
    Description

    The user's email address.

  • Name
    password
    Type
    string
    Description

    Account password.

  • Name
    password_confirmation
    Type
    string
    Description

    Password confirmation (must match password).

POST /api/v1/auth/register

curl -X POST https://your-domain.com/api/v1/auth/register \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "name": "John Doe",
    "email": "john@example.com",
    "password": "securepassword",
    "password_confirmation": "securepassword"
  }'

List products with search

Browse the product catalog with full-text search and pagination.

GET /api/v1/products

curl -X GET "https://your-domain.com/api/v1/products?search=wordpress+theme&per_page=20" \
  -H "Accept: application/json"

Add to cart

Add a product to the authenticated user's cart. For license products, specify the license tier.

  • Name
    product_id
    Type
    integer
    Description

    The ID of the product to add.

  • Name
    quantity
    Type
    integer
    Description

    Number of units to add.

  • Name
    license_type
    Type
    string
    Description

    License tier for digital products (standard, extended, or unlimited).

POST /api/v1/cart

curl -X POST https://your-domain.com/api/v1/cart \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer {token}" \
  -d '{
    "product_id": 1,
    "quantity": 1,
    "license_type": "extended"
  }'

Create a purchase

Initiate checkout by providing billing and delivery details. Payment is processed through Stripe.

  • Name
    billing_detail_id
    Type
    integer
    Description

    ID of the saved billing detail to use.

  • Name
    delivery_address_id
    Type
    integer
    Description

    ID of the saved delivery address.

POST /api/v1/checkout

curl -X POST https://your-domain.com/api/v1/checkout \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer {token}" \
  -d '{
    "billing_detail_id": 1,
    "delivery_address_id": 2
  }'

Get download URL

Retrieve a signed download URL for a purchased digital product. URLs are time-limited and access is tracked.

GET /api/v1/downloads/{download_id}/url

curl -X GET https://your-domain.com/api/v1/downloads/42/url \
  -H "Accept: application/json" \
  -H "Authorization: Bearer {token}"

Was this page helpful?