- Role-based portal: Admin / Officer / Citizen / NGO / Tourist
- Multilingual UI: English + Nepali / Lepcha / Bhutia (i18n-ready)
- Offline-first touches: Caching for low-connectivity regions
- Geo-aware modules: Maps, ward-wise filters, route hints
- Accessible by design: Keyboard nav, high contrast, screen-reader labels (WCAG 2.1 AA)
- Analytics dashboard: KPIs relevant to the PS (e.g., ticket resolution time, requests by block)
- Secure data handling: JWT auth, input validation, rate limiting
[Client: React+Vite+Tailwind] <—> [API Gateway / Backend (Node/Express or Flask)] <—> [DB (PostgreSQL/Firestore)]
\—> [Object Storage for files/images]
\—> [Map/Geo API (e.g., MapLibre/Leaflet)]
Frontend: React 18, Vite 5, Tailwind CSS, React Router, Zustand/Redux (choose one), Axios Backend (optional this repo or separate): Node.js + Express (or Python Flask/FastAPI) Database: PostgreSQL / Supabase / Firestore (pick one) Maps: Leaflet / MapLibre + OpenStreetMap tiles CI/CD: GitHub Actions Hosting: Vercel / Netlify (FE), Render / Railway / Fly.io (BE)
- Node.js ≥ 18
- pnpm (recommended) or npm/yarn
- (If using backend) PostgreSQL or your chosen DB running
# 1) Clone
git clone https://github.com/<you>/<repo>.git
cd <repo>
# 2) Install
pnpm install
# 3) Configure environment
cp .env.example .env
# Fill values
# 4) Run dev
pnpm dev
# 5) Build & preview
pnpm build
pnpm preview.env.example
VITE_API_BASE_URL=http://localhost:4000
VITE_MAP_TILES_URL=https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png
VITE_DEFAULT_LOCALE=en
# in /server
pnpm install
cp .env.example .env
pnpm dev.env.example
PORT=4000
DATABASE_URL=postgres://user:pass@localhost:5432/sih_sikkim
JWT_SECRET=change_this
- Citizen submits request/feedback → Geo-tag + category → Track status
- Officer triage → Assign → SLA-based reminders → Resolution
- Tourist info → Points of interest, permits, emergency contacts, offline map hints
- Admin dashboard → KPIs, heatmaps, export reports (CSV)
- Input validation on both FE/BE
- HTTPS everywhere, secure cookies, CSRF guards (if SSR)
- Role/permission matrix documented under
/docs/permissions.md - PII minimization; follow applicable Indian data protection guidelines
- i18next with locale JSON packs (
/src/locales) - Landmarks, ARIA labels, focus states, color contrast ≥ 4.5:1
- Keyboard-only and screen-reader tested components
- Lightweight privacy-friendly analytics (e.g., Plausible/Umami)
- Server logs with request IDs; error tracking (Sentry/Better Stack)
pnpm test # unit tests (Vitest)
pnpm test:ui # component tests (Testing Library)
pnpm lint # ESLint
pnpm typecheck # TS types- Frontend: Vercel/Netlify → set
VITE_*env vars - Backend: Render/Railway/Fly.io → set
DATABASE_URL,JWT_SECRET - DB Migrations: Prisma/Knex/Alembic (document commands here)
/src
/assets
/components
/features
/hooks
/layouts
/pages
/routes
/store
/styles
/utils
---
## 📚 API (Sample)
GET /api/v1/health POST /api/v1/auth/login POST /api/v1/requests GET /api/v1/requests?block=&status=<open|closed> PUT /api/v1/requests/:id/assign PUT /api/v1/requests/:id/resolve
---
## 🗂️ Documentation
* `/docs/architecture.md`
* `/docs/api.md`
* `/docs/permissions.md`
* `/docs/deployment.md`
---
## 🧭 Roadmap (SIH-ready)
* [ ] MVP: Core flows + i18n + a11y pass
* [ ] Officer workflow + export
* [ ] Offline caching & PWA install
* [ ] Heatmap analytics
* [ ] SMS/WhatsApp notifications (DND-compliant)
---
---
## 🧩 Evaluation Mapping (Quick View)
* **Innovation:** `[how you’re novel]`
* **Feasibility:** `[infra, costs, maintainability]`
* **Scalability:** `[state rollout plan]`
* **Impact:** `[KPIs, beneficiaries in Sikkim]`
* **UI/UX & Accessibility:** `[WCAG steps taken]`
* **Security & Privacy:** `[controls in place]`
---
## 📝 License
MIT ©