This guide walks you through cloning the Zippi monorepo, configuring your local environment, running database migrations, seeding initial data, and starting both servers. By the end you will have the Flask API running on port 5000 and the Vite frontend running on port 5174.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/CRISTIANCAMACH34/Zippi/llms.txt
Use this file to discover all available pages before exploring further.
Clone the repo and verify prerequisites
Clone the Zippi monorepo and confirm that the required runtimes are installed before proceeding.Required dependencies:
Create the database before continuing:
| Dependency | Minimum version | Notes |
|---|---|---|
| Python | 3.10 | Python 3.10 or newer required |
| Node.js | 18 | LTS recommended |
| MySQL | 8.0 | Create the zippi_db database before running migrations |
| Redis | 6+ | Required for Celery workers; optional for basic API usage |
Set up the Python backend
Create a virtual environment, install all development dependencies, and copy the example environment file.
The application reads
.env from the backend/ directory. Keep your terminal working directory inside backend/ when running Flask commands.Configure .env
Open Other notable variables you may want to set now:
backend/.env in your editor. The three variables below are mandatory — the application will not start without them.backend/.env
| Variable | Default | Description |
|---|---|---|
APP_ENV | development | Set to production in prod |
TIMEZONE | America/Bogota | Used for timestamps and SLAs |
CORS_ALLOWED_ORIGINS | http://localhost:5173,... | Add your frontend URL |
WOMPI_ENV | sandbox | Switch to production for live payments |
STORAGE_DRIVER | local | Set to s3 and fill AWS vars for S3 |
Run migrations and seed data
Apply all Alembic migrations to create the schema, then run the seed script to populate base configuration, service types, order states, and payment methods.
seed_data.py registers the base configuration, service type catalog, order state definitions, and payment methods. Run it exactly once on a fresh database.The
create_admin.py script accepts any of the 16 role keys from rbac.py. Common bootstrap roles are super_admin (global scope) and city_admin (city scope). See Roles & Portals for the full list.Set up the frontend
Open a new terminal, move to the Edit
frontend/ directory, install npm dependencies, and configure the frontend environment file.frontend/.env and point VITE_API_URL at the backend:frontend/.env
Local URLs Reference
| Service | URL | Description |
|---|---|---|
| Flask API | http://127.0.0.1:5000/api/v1 | Main REST API (all endpoints) |
| Health check | http://127.0.0.1:5000/health | Returns {"status":"ok"} |
| Readiness check | http://127.0.0.1:5000/ready | Pings the database |
| Vite frontend | http://127.0.0.1:5174 | All portal surfaces |
| WhatsApp webhook | http://127.0.0.1:5000/api/v1/whatsapp | Requires tunnel (ngrok) for Meta verification |
| Wompi webhook | http://127.0.0.1:5000/api/v1/payments/wompi/webhook | Requires tunnel for sandbox callbacks |
Mocks mode: Set
VITE_USE_MOCKS=true in frontend/.env to run the frontend with in-memory mock data. This is useful for working on UI components without a running backend or database. Mock mode does not validate permissions or scope — it is for UI development only.