Running it locally¶
Repo: C:\Users\dell\Desktop\NavAse Universal CRM
Backend → http://localhost:8083¶
cd backend
python -m venv .venv
.venv/Scripts/pip install -r requirements.txt
# create/refresh a demo workspace + 3 logins (safe to re-run — it wipes and reseeds)
.venv/Scripts/python seed.py
.venv/Scripts/python -m uvicorn app.main:app --port 8083 --reload
- No
.envneeded for local dev. SQLite (backend/crm.db) and dev auth are the defaults —settings.dev_authis true wheneverSUPABASE_URL/SUPABASE_JWT_SECRETare unset. - Swagger UI:
http://localhost:8083/docs
Frontend → http://localhost:5178¶
frontend/.env (or .env.local) sets VITE_API_BASE_URL=http://localhost:8083.
Demo logins (dev auth — any password)¶
| Role | Plan | |
|---|---|---|
demo@navase.example |
admin (manager) | free |
agent@navase.example |
agent | — |
owner@navase.example |
super-admin (app owner) | — |
Sign in as owner@navase.example → Admin → Companies to flip
demo@navase.example's workspace to premium for testing write paths.
Environment variables¶
Backend (backend/.env — all optional locally)¶
| Var | Purpose |
|---|---|
DATABASE_URL |
Postgres DSN; unset → SQLite |
SUPABASE_URL, SUPABASE_JWT_SECRET |
switch to real JWT auth; unset → dev auth |
FRONTEND_URL, CORS_ORIGINS |
allowed origins (comma-separated) |
STRIPE_SECRET_KEY, STRIPE_PRICE_ID, STRIPE_WEBHOOK_SECRET |
real Stripe; unset → "simulate payment" button |
settings.stripe_enabled is true only when both STRIPE_SECRET_KEY and
STRIPE_PRICE_ID are set.
Frontend (frontend/.env*)¶
| Var | Purpose |
|---|---|
VITE_API_BASE_URL |
API base — http://localhost:8083 locally, /api in the bundled production build |
VITE_SUPABASE_URL, VITE_SUPABASE_ANON_KEY |
enable the real Supabase login UI; unset → dev login form |
Ports at a glance¶
| Universal CRM | |
|---|---|
| API | 8083 |
| Frontend | 5178 |
(Each NavAse SaaS app uses a different pair — see its own docs.)