Skip to content

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 .env needed for local dev. SQLite (backend/crm.db) and dev auth are the defaults — settings.dev_auth is true whenever SUPABASE_URL / SUPABASE_JWT_SECRET are unset.
  • Swagger UI: http://localhost:8083/docs

Frontend → http://localhost:5178

cd frontend
npm install
npm run dev

frontend/.env (or .env.local) sets VITE_API_BASE_URL=http://localhost:8083.

Demo logins (dev auth — any password)

Email Role Plan
demo@navase.example admin (manager) free
agent@navase.example agent
owner@navase.example super-admin (app owner)

Sign in as owner@navase.exampleAdmin → 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.)