Requirements
| Requirement | Version |
|---|---|
| PHP | 8.2+ |
| Composer | 2 |
| Node.js | 20 (LTS recommended) |
| npm | 10+ |
| Database | MySQL 8.0+ / MariaDB 10.6+ or SQLite |
| Redis | 6+ (optional — required for sessions and queues in production) |
| Web server | Nginx (production) |
| Process manager | Supervisor (production) |
Step 1: Install dependencies
Step 2: Create and configure .env
Step 3: Generate the application key
Step 4: Set up the database
- SQLite
- MySQL / MariaDB
SQLite requires no server. It is suitable for local development and quick demos.Set the following in Leave the
macOS / Linux
PowerShell
.env:.env
DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, and DB_PASSWORD lines commented out.Step 5: Run migrations
--seed flag populates demo data: categories, cities, tenants, products, and two user accounts (super admin and a tenant owner). See database/seeders/DatabaseSeeder.php for the full list of seeded records.
Review
database/seeders/DatabaseSeeder.php before running the seeder in any shared or non-local environment. It creates known credentials and publicly accessible demo tenants.Step 6: Link storage
public/storage to storage/app/public, which is required for serving locally uploaded media.
Environment variables
Application
| Variable | Description | Example |
|---|---|---|
APP_NAME | Display name shown in emails and UI | Vito Business OS |
APP_ENV | Environment (local, production) | local |
APP_KEY | Encryption key — generated by key:generate | — |
APP_DEBUG | Show detailed errors (true in local only) | false |
APP_URL | Full base URL including protocol | http://localhost:8000 |
APP_DOMAIN | Root domain used for cookies and tenancy | localhost |
Database
| Variable | Description |
|---|---|
DB_CONNECTION | Driver: sqlite or mysql |
DB_HOST | Database host (MySQL only) |
DB_PORT | Database port (MySQL only, default 3306) |
DB_DATABASE | Database name or path to SQLite file |
DB_USERNAME | Database user (MySQL only) |
DB_PASSWORD | Database password (MySQL only) |
Session, cache, and queue
| Variable | SQLite / local value | Redis / production value |
|---|---|---|
SESSION_DRIVER | database | redis |
CACHE_STORE | database | redis |
QUEUE_CONNECTION | database | redis |
.env (Redis)
Storage and S3
By default, files are stored locally atstorage/app/public. To switch to S3:
.env
infrastructure/aws/ directory contains a lifecycle policy you can apply to your S3 bucket for automatic orphan cleanup.
Broadcasting and WebSockets (Reverb)
Vito Business OS uses Laravel Reverb for real-time broadcasting..env
BROADCAST_CONNECTION at its default value. Real-time features (order updates, low stock alerts, login alerts) require Reverb to be running.
Payments
| Variable | Description |
|---|---|
PAYMENT_PROVIDER | Payment adapter: generic (local/demo) or stripe |
PAYMENT_WEBHOOK_SECRET | Secret used to verify incoming webhook signatures. Required at boot. |
.env
Web Push (VAPID)
Optional. Required only if you want browser push notifications..env
Starting the development environment
concurrently to run four processes in one terminal session:
| Process | Command |
|---|---|
| HTTP server | php artisan serve |
| Queue listener | php artisan queue:listen --tries=1 |
| Log viewer | php artisan pail --timeout=0 |
| Vite dev server | npm run dev |
Production setup with Supervisor
For production, use Supervisor to keep the queue worker and Reverb process running.devops/ directory also contains:
| File | Purpose |
|---|---|
deploy.sh | Zero-downtime atomic deployment script |
nginx_app.conf | Nginx server block with security hardening |
conecta-worker.conf | Supervisor config for queue workers and Reverb |
devops/README.md for the complete server provisioning walkthrough.
The Supervisor config in
devops/conecta-worker.conf also manages the Reverb WebSocket server process. You do not need a separate daemon configuration for Reverb.Verifying your installation
After setup, open the following URLs to confirm everything is working:| URL | Expected |
|---|---|
http://localhost:8000 | Public landing page |
http://localhost:8000/admin | Filament super admin login |
http://localhost:8000/app | Filament tenant panel login |
http://localhost:8000/api/documentation | Swagger UI for REST API v1 |
Next steps
Architecture overview
Understand the modular monolith, DDD layers, and bounded contexts.
Multi-tenancy
Learn how tenant routing, isolation, and panels are structured.
Deployment
Full production deployment guide with Nginx and zero-downtime deploys.
API reference
Explore the REST API v1, authentication, and webhook contracts.