SUVIDHA is a civic-service kiosk platform for citizen service requests, complaints, payments, document upload, and status tracking with multilingual + accessibility-first UX.
It includes:
- Citizen and Admin flows
- OTP-based citizen login and admin MFA login
- Voice guidance + voice field-fill assistance
- Offline-ready queue sync for core workflows
- Fraud scoring for payments
- Admin monitoring and operational tools
SUVIDHA is designed for kiosk and assisted-service environments where users need a guided, touch-friendly workflow.
- Service request submission
- Complaint registration
- Document upload
- Payment simulation and receipt generation
- Status tracking by 4-digit reference ID
- Admin MFA login (password + OTP)
- Requests and complaints management
- View user-submitted documents in context
- Update status (
PENDING,IN_PROGRESS,RESOLVED,REJECTED) - Close & permanently delete resolved/rejected items
- Dashboard, audit logs, and system health
- Frontend: React (Vite), Tailwind CSS, Redux Toolkit, i18next
- Backend: Node.js, Express, Prisma, JWT, RBAC
- Database (local dev): SQLite
- OTP channels: Email + SMS abstraction (provider or mock)
- Storage: Local uploads (
/uploads) with service abstraction - Infra: Docker, Docker Compose, Kubernetes manifests, Istio mTLS policy
client/– React frontendserver/– Main API + Prisma schemamicroservices/– Phase-2 extracted services (auth-service,payment-fraud-service,notification-service,api-gateway)k8s/– Kubernetes deployment manifestsDEPLOYMENT.md– deployment guidanceserver/API.md– API endpoint reference
- Node.js 18+
- npm 9+
- Git
cd server
npm install
cp .env.example .env
npx prisma generate
npx prisma db push
npm run seed:admincd client
npm install
cp .env.example .envTerminal 1 (backend):
cd server && PORT=5003 CORS_ORIGIN='http://localhost:5173,http://localhost:8080' npm run devTerminal 2 (frontend):
cd client && npm run dev -- --host 0.0.0.0 --port 5173(cd server && PORT=5003 CORS_ORIGIN='http://localhost:5173,http://localhost:8080' npm run dev >/tmp/suvidha-server.log 2>&1 &) && cd client && npm run dev -- --host 0.0.0.0 --port 5173- Frontend:
http://localhost:5173 - Backend health:
http://localhost:5003/api/health
After npm run seed:admin:
- Mobile:
9999999999 - Password:
Admin@123
Note: Admin login is MFA. After password login, OTP verification is required.
- Select language
- OTP login
- Use dashboard modules:
- Service request
- Complaint
- Upload documents
- Payment
- Status tracking
- Track with generated 4-digit reference code
- Login with mobile + password
- Verify OTP challenge
- Manage requests/complaints
- Optionally close and delete completed/rejected cases
- 4-digit unique reference IDs for service requests and complaints
- Status lookup supports reference code (preferred) and legacy numeric IDs
- Request/complaint cards show:
- category/type
- description text
- user documents (clickable)
Close & Deleteaction is available only forRESOLVED/REJECTED
- Audio guidance and repeat prompts
- Voice command and voice-fill on selected forms
- Toggle keyboard/keypad support
- Theme change controls (Normal/High Contrast) and font scaling
- Idle privacy reset and quick
Start New User
- Offline AI assistant chatbot (
Suvidha) available across pages - Guided step-by-step support for login, services, complaints, payment, and tracking
- General Q&A support for kiosk users without internet dependency
- Voice command navigation (e.g., open dashboard/services/complaints/payment/tracking)
- Voice field-fill support on key forms for faster assisted usage
- Say
open dashboardto go to dashboard - Say
open servicesto navigate to service request screen - Say
open complaintsto navigate to complaint screen - Say
open paymentto navigate to payment screen - Say
open trackingto navigate to status tracking - Say
open languageto return to language selection - Say
start new userto reset kiosk session - Say
audio on/audio offfor guidance control - Say
volume up/volume down/mute/max volume - Say
high contrast on/high contrast off
- Offline queue + sync for key citizen actions
- API audit logging and health endpoints
- Helmet security headers
- JWT auth for protected routes
- Role-based access control (
CITIZEN,ADMIN,SUPER_ADMIN) - OTP expiry and rate limiting
- Password hashing with
bcrypt - Kiosk heartbeat device-auth headers (
x-kiosk-id,x-kiosk-key)
Detailed API docs: server/API.md
Important endpoints:
POST /api/auth/send-otpPOST /api/auth/verify-otpPOST /api/admin/loginPOST /api/admin/login/verifyPOST /api/services/requestPOST /api/complaintsGET /api/services/application-status/:idDELETE /api/admin/close/:id
- Docker:
client/Dockerfile,server/Dockerfile - Compose:
docker-compose.yml - Kubernetes manifests in
k8s/ - Additional architecture docs:
DEPLOYMENT.mdSUVIDHA_ARCHITECTURE.mdMICROSERVICES_PHASE2.md
lsof -nP -iTCP:5003 -sTCP:LISTEN
lsof -nP -iTCP:5173 -sTCP:LISTENcd server
npx prisma generate
npx prisma db pushThen restart backend.
- Ensure backend runs on
5003 - New uploads use request host dynamically
- Legacy links are rewritten on admin pages
cd server
npm run seed:adminThis repository currently contains both:
- Main monolith (
server) used for active local flow - Phase-2 extracted microservice code under
microservices/
Use monolith paths for quickest local MVP run unless you are explicitly testing gateway/microservice deployment.