Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
翻訳待ち
SevaRath - Brahmakumaris Internal EV Booking System
翻訳待ち
Loading the full README. The saved excerpt is shown below.
SevaRath
Brahma Kumaris Internal EV Booking System
Build an internal EV transportation application for use within the Shantivan and nearby premises.
The application provides a simple Uber-like experience for:
• Requesting an EV ride
• Matching a request with an available driver
• Driver accepting or rejecting a request
• Real-time driver/user location
• Pickup and destination selection
• Map display
• Navigation directions
• Ride status tracking
• Ride completion
• Basic ride history
There is no payment, fare calculation, surge pricing, wallet, or commercial transaction.Read the full README ↗Build an internal EV transportation application for use within the Shantivan and nearby premises.
The application provides a simple Uber-like experience for:
There is no payment, fare calculation, surge pricing, wallet, or commercial transaction.
The system is intended for controlled internal use within the headquarters premises.
Two mobile apps and one admin console:
Full user stories and functional/non-functional requirements: docs/specification.md.
Designed around the actual headquarters environment, not a reproduction of Uber. Deliberately excludes payments, fares, ratings, tips, promotions, surge pricing, public driver registration, and advanced dispatch optimization - see docs/specification.md §4 for the full non-goals list.
Primary workflow:
User -> Request EV -> Find Available Driver -> Driver Accepts
-> Ride Assigned -> Navigate to Pickup -> Ride Started
-> Navigate to Destination -> Ride Completed
Modular NestJS monolith (not microservices) backing a React Admin console and Flutter User/Driver apps, with PostgreSQL as business truth and Redis for real-time/transient state.
Flutter Apps (User/Driver) Admin (React + shadcn/ui)
| |
+---------------+------------------+
|
NestJS API (OpenAPI v1)
Auth / Rides / Dispatch / ...
/ \
v v
PostgreSQL + PostGIS Redis
(Drizzle ORM) (cache, presence, BullMQ)
Full technical design (modules, API/versioning, WebSocket events, data model, security): docs/architecture.md.
| Layer | Choice |
|---|---|
| Backend | NestJS + Drizzle ORM (PostgreSQL + PostGIS) |
| Real-time / cache / queue | Redis + BullMQ |
| Admin frontend | React + Tailwind CSS + shadcn/ui + Base Web |
| User / Driver apps | Flutter |
| Maps & navigation | MapLibre GL (Flutter) + self-hosted OpenMapTiles/Martin tiles + Valhalla routing - all open-source |
| API | REST, OpenAPI 3.1, versioned (/api/v1) |
| Identity | NestJS Passport - Google OAuth (SSO) + Mobile OTP |
| Deployment | Docker on on-prem Kubernetes |
Details and rationale: docs/architecture.md §1. Admin coding conventions: docs/frontend-guidelines.md.
Full diagram and per-layer detail: docs/architecture.md §9.
This is a pnpm workspace monorepo (see pnpm-workspace.yaml):
apps/
api/ NestJS backend (Drizzle ORM, PostgreSQL+PostGIS, Redis, Firebase auth)
admin/ React + Tailwind + shadcn/ui + Base Web admin console (Vite)
docs/ specification.md, architecture.md, frontend-guidelines.md, plan.md
k8s/ Kubernetes manifests for the sevarath namespace - see k8s/README.md
The Flutter User/Driver app (apps/mobile) was split out on 2026-10-12 into its own repo - bkrajendra/sevarath-mobile - see docs/repo-split-plan.md for why and how.
Requires Node 22+ and pnpm (corepack enable picks up the pinned version from package.json).
pnpm install # installs both apps/api and apps/admin
docker compose up -d # Postgres+PostGIS on :5433, Redis on :6380
cp apps/api/.env.example apps/api/.env # fill in Firebase service account - see §5
cp apps/admin/.env.example apps/admin/.env # fill in Firebase web config - see §5
pnpm api:db:migrate
pnpm api:dev # http://localhost:3000, OpenAPI docs at /api-docs
pnpm admin:dev # http://localhost:5173 (proxies /api -> :3000)
Host ports are remapped (5433/6380) to avoid clashing with any pre-existing local Postgres/Redis. Without Firebase configured, both apps still run: the API's /auth/login returns 503 instead of crashing, and the Admin app's sign-in button shows a clear "not configured" message instead of a blank page.
Other workspace-wide commands: pnpm --filter @sevarath/api <script> / pnpm --filter @sevarath/admin <script> run any script from that app's package.json (e.g. pnpm --filter @sevarath/admin gen:api-types regenerates the Admin app's OpenAPI-derived types from a running API — see docs/frontend-guidelines.md).
This is the beginning of the README. Read the rest at the original. Read the full README ↗