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
Make sure you have PHP 8.3+, Composer 2.x, Node.js 18+, and either MySQL 8.0+ or SQLite available before starting the installation.
Configuration
After installation, complete these configuration steps to enable all platform features:
- Configure Stripe keys (
STRIPE_KEY,STRIPE_SECRET,STRIPE_WEBHOOK_SECRET) for payment processing - Set up Meilisearch and configure
SCOUT_DRIVER=meilisearch,MEILISEARCH_HOST,MEILISEARCH_KEYfor full-text search - Set up Google and Facebook OAuth apps and add client IDs/secrets for social login (optional)
- Configure AWS S3 credentials for production file storage (optional, falls back to local disk)
- Install and configure ClamAV for virus scanning on file uploads (optional)
- Set up Vonage credentials for SMS notifications (optional)
- Configure Sentry DSN for error monitoring (optional)
- Run
php artisan horizonto start the queue worker for background jobs - 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 tosqlite.
- 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 (
meilisearchfor production,collectionfor 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_socketortcp_socket). Defaults tounix_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:
- Admin creates products — Admins create products (digital, service, or physical) with media, pricing tiers, and specifications via the Filament panel.
- Stripe sync — Products are synced to Stripe automatically upon approval.
- Customer browsing — Customers browse the catalog via the API or mobile app, with full-text search and category filtering.
- Cart management — Customers add items to their cart or wishlist.
- Checkout — At checkout, the customer selects billing details and delivery address, then pays via Stripe.
- Digital delivery — For digital products, the customer receives license keys and download links in their purchase history.
- Physical fulfillment — For physical products, the order moves through status stages (Pending, Processing, Completed).
- Admin management — Admins manage orders, users, and integrations from the Filament dashboard.
- 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, orunlimited).
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}"