TransitOps is a role-based transport operations platform built for logistics teams. It replaces spreadsheets with a real-time dashboard covering every operational layer — vehicles, drivers, trips, maintenance, fuel, and expenses.
| Layer | Technology |
|---|---|
| Framework | TanStack Start (SSR) + React 19 |
| Language | TypeScript (strict) |
| Database | Supabase PostgreSQL + Row Level Security |
| Auth | Clerk (JWT → Supabase Third-Party Auth) |
| Styling | Tailwind CSS v4 + shadcn/ui |
| Deployment | Cloudflare Pages + Workers (Nitro) |
| State | TanStack Query |
| Charts | Recharts |
| Module | Capabilities |
|---|---|
| 🚗 Fleet | Vehicle registry, status tracking (available / on-trip / in-shop / retired), capacity |
| 👤 Drivers | License management, safety scores, expiry alerts |
| 📦 Dispatch | Trip lifecycle — draft → dispatch → complete → cancel with business rule validation |
| 🔧 Maintenance | Service logs, in-shop status, cost tracking |
| ⛽ Fuel | Per-trip fuel consumption, cost analysis |
| 💰 Expenses | Toll, misc costs linked to trips |
| 📊 Analytics | Fleet utilization, cost trends, KPI dashboard |
| ⚙️ Settings | Depot config, currency, distance unit |
Browser ──► Cloudflare Pages (SSR + Workers)
│
├── Clerk (authentication + JWT)
│
└── Supabase (PostgreSQL + RLS)
│
└── auth.jwt()->>'sub' (Clerk user ID in every policy)
RBAC Roles: fleet_manager · dispatcher · safety_officer · financial_analyst
New users get dispatcher automatically on first sign-in.
# 1. Clone and install
git clone https://github.com/MohitSutharOfficial/Odoo26-TransitOps.git
cd Odoo26-TransitOps
npm install
# 2. Set up environment
cp .env.example .env
# Fill in Supabase + Clerk keys (see .env.example for sources)
# 3. Run locally
npm run dev| Variable | Description |
|---|---|
VITE_SUPABASE_URL |
Your Supabase project URL |
VITE_SUPABASE_PUBLISHABLE_KEY |
Supabase anon/publishable key |
SUPABASE_SERVICE_ROLE_KEY |
Server-only service role key |
VITE_CLERK_PUBLISHABLE_KEY |
Clerk publishable key (pk_test_...) |
CLERK_SECRET_KEY |
Server-only Clerk secret (sk_test_...) |
See .env.example for the full list.
| Target | Command | Config |
|---|---|---|
| Cloudflare Pages | npm run build |
wrangler.toml |
| Vercel | NITRO_PRESET=vercel npm run build |
vercel.json |
See DEPLOYMENT.md for step-by-step deploy instructions.