JANSEVA is an AI-assisted civic complaint platform with a citizen app, an admin dashboard, a backend API, and an AI service for transcription, translation, classification, and complaint review.
- Lets citizens file complaints by text or voice
- Shows AI-generated transcript, English translation, category, and priority before filing
- Sends complaints to the backend and surfaces them on the admin dashboard
- Tracks complaint history and current status in the citizen app
mobile/- Expo citizen app for text and voice complaint filingfrontend/- React + Vite admin dashboardbackend/- Express API for complaints, interactions, media, and citizensai/- FastAPI AI service for transcription, extraction, translation, and chat utilitiesscripts/- local development helpers
- Citizen types a complaint in the mobile app
- App calls
POST /api/interactions/preview - AI returns category, priority, and English translation
- Citizen confirms and the complaint is filed through
POST /api/interactions/chat - Complaint appears in the dashboard and citizen history
- Citizen selects a language and records a voice complaint
- App calls
POST /api/interactions/voice/transcribe - AI returns transcript, translation, category, and priority preview
- Citizen confirms and the complaint is filed through
POST /api/interactions/voice/submit - Complaint appears in the dashboard and citizen history
- Mobile app: Expo, React Native, React Native Web
- Dashboard: React, Vite, Tailwind CSS, Axios
- Backend: Node.js, Express, Supabase, Multer, Socket.IO
- AI service: FastAPI, Groq, Whisper-style transcription flow
- Node.js 18+
- npm
- Python 3.11+
- A configured Supabase project
- AI service credentials in
ai/.env
From the repo root:
npm installInstall AI dependencies separately:
cd ai
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txtFrom the repo root:
npm run dev:allThis starts:
- backend on
http://localhost:5000 - dashboard on
http://localhost:5173if free, otherwise the next Vite port - AI service on
http://127.0.0.1:8000
The dev:all script automatically clears stale backend processes on port 5000 before startup.
npm run dev:backend
npm run dev:frontend
npm run dev:aiGET /api/healthGET /api/complaintsPOST /api/interactions/previewPOST /api/interactions/chatPOST /api/interactions/voice/transcribePOST /api/interactions/voice/submit
POST /transcribePOST /classifyPOST /extractPOST /translate
You need working environment variables in the backend and AI service for the project to function correctly.
Typical requirements include:
- backend Supabase URL and service key
- AI provider key for transcription / LLM operations
If the mobile app shows fallback review messages, first confirm:
- backend is running on port
5000 - AI service is running on port
8000
- Mobile app opens with onboarding screens and then goes to the homepage
- Voice complaint flow supports web and native upload paths
- JANSEVA branding is applied across the citizen app and admin dashboard
- Non-functional placeholder UI has been removed from the citizen app
Dashboard build:
npm run build --workspace frontendMobile web export:
cd mobile
npx expo export --platform web