Web Development
Smart Hostel Management System
Room allocation, complaints and mess billing without the register
- Next.js
- TypeScript
- Node.js
- +3
Route plans, pickup requests, user-fee ledgers and coverage reports for panchayat waste collectors
Mapped to your syllabusKerala University FYUGP 2024 · UK8RPHCAP400 / UK8CIPCAP400 Research Project / Internship Project · Semester 8Haritha Route & Fee Manager (HRFM) is a web application for the Haritha Karma Sena — the Kudumbashree women's workforce that collects non-biodegradable waste door-to-door across Kerala under Suchitwa Mission guidance, charging each household a small monthly user fee. Every sena worker covers at least 250 houses, keeps a paper fee card per household, and answers to a green supervisor and the local body. The money side is the hardest part: fees arrive in cash across the month, revisions are announced mid-year, households dispute what they paid, and the panchayat wants a monthly statement of fee collection and waste quantity — none of which a notebook can produce.
HRFM gives four actors one shared system: the local-body coordinator defines wards, routes and fee plans; the green supervisor assigns houses to workers and reconciles cash; the worker records each collection round and picks up bulky-waste requests; and the household gets a portal showing its fee ledger, receipts and pickup status. Fee plans are effective-dated, so a revision applies from its notification date without rewriting history; each payment gets a receipt code; and defaulters, route coverage and quantity handed to the clean-up company come out as reports.
The stack is Django 5 with Django REST Framework serving a JSON API and React on the front end, with MySQL 8 behind it — a modern separation that lets the project demonstrate REST design, JWT authentication, role-based access, transaction-safe ledgers and a component-based UI, all defensible line by line in a FYUGP semester-8 viva.
Syllabus alignment
Haritha Karma Sena units collect a monthly user fee from hundreds of households each and gather non-biodegradable waste door-to-door, but the unit's records are paper fee cards, a cash diary and memory. Fees are revised from time to time, so past months, old rates and current arrears blur together; households lose track of what they paid and dispute receipts; houses skipped on a collection day are discovered only when someone complains; bulky-waste pickups are arranged by phone with no request or closure record; and the local body's monthly statement of fee collection and waste quantity is compiled by hand.
The problem is to build a role-based web application that plans routes and households, records each collection round as it happens, keeps a fee ledger whose accruals always cite the fee plan effective on that date, issues receipt codes for every payment, tracks pickup requests to closure, and produces coverage, collection and remittance reports — without storing any government identity numbers.
Kerala's Haritha Karma Sena collects non-biodegradable waste from lakhs of households for a monthly user fee — about 47.9 lakh households and 2.57 lakh shops are covered, and local bodies collect crores in user charges monthly. Yet inside a typical unit the work runs on paper fee cards and memory: who paid, who is in arrears, which houses were skipped, how much waste was gathered. This project builds the Haritha Route & Fee Manager (HRFM) — a Django REST Framework backend, a React front end and MySQL — covering ward and route planning, household fee subscriptions, worker-wise collection rounds, an effective-dated fee ledger with receipt codes, bulky-waste pickup requests and coverage, collection and remittance reports.
I interviewed a seven-member sena unit in a municipality (name changed) with its green supervisor. Each worker walks fixed streets every collection day, marking rounds in a diary; the supervisor collects each worker's cash, writes it in a ledger and remits it at the local-body office. The fee was revised last year and the unit spent weeks explaining arrears. Households call the worker directly for bulky pickups — old chairs, e-waste — with no record of request or closure. The unit's questions repeat: who has not paid this month, which houses were missed, what quantity went to the handover, and what does each worker's route owe.
In scope
Out of scope (v1)
The project follows the Incremental SDLC model across 16 weeks: the route and household core ships first, then rounds, then the fee ledger, then reports — each increment demonstrated to the guide. A short field study fixes the vocabulary before design.
| Phase | Weeks | Activities | Deliverable |
|---|---|---|---|
| Field study & requirements | 1–2 | Interview a sena unit and its green supervisor, walk one route, collect a sample fee card and the local body's monthly format | Requirement notes |
| System design | 3–4 | DFD level 0/1, ER diagram, 3NF schema, REST endpoint list, React component tree, test plan | Design document |
| Increment 1 | 5–6 | JWT auth, four roles, wards/routes/households | Working registry |
| Increment 2 | 7–9 | Collection rounds, route-day calendar, quantity entry | Rounds module |
| Increment 3 | 10–11 | Effective-dated fee plans, accruals, payments, receipts, arrears | Fee ledger |
| Increment 4 | 12–13 | Pickup requests, dashboards, CSV reports, audit log | Full feature set |
| Testing | 14 | Unit tests (accrual, receipt, coverage), API tests, role-access tests | Test report |
| Documentation & viva prep | 15–16 | Report, screenshots, PPT, demo rehearsal | Final submission |
Member-wise work split (team of 3). Member 1: backend core — models, JWT auth, roles, wards/routes/households API. Member 2: rounds module and pickup-request workflow, worker screens in React. Member 3: fee-plan versioning, accrual and payment logic, receipts, reconciliation, reports and the test suite. DFDs, ER diagram and the report were prepared jointly.
Fee rule. Each household accrues its plan's monthly rate on the 1st for that month, using the plan version effective on that date (category home/shop/institution). A payment records amount, date, paying household and a system-generated receipt code; part payments are allowed and the ledger balance is the sum of accruals minus payments. A fee revision inserts a new plan version with effective_from; no accrual before that date changes. All money writes run in database transactions and append an audit row.
HRFM is a two-tier client–server web system: a React single-page app talking over HTTPS/JSON to a Django REST Framework API, which owns all business rules and talks to MySQL 8 through Django's ORM.
flowchart TD
HH["Household portal (React)"] -->|HTTPS + JWT| API["Django REST API"]
WK["Worker round screen (React)"] -->|HTTPS + JWT| API
SUP["Supervisor & Coordinator dashboards (React)"] -->|HTTPS + JWT| API
API --> SER["Serializers + role checks"]
SER --> SVC["Fee ledger / rounds / pickup services"]
SVC --> ORM["Django ORM"]
ORM --> DB[("MySQL 8")]
SVC --> AUD["Audit log"]
SVC --> RPT["CSV report generator"]erDiagram
WARD ||--|{ ROUTE : contains
ROUTE ||--|{ HOUSEHOLD : covers
USER ||--o{ AUDIT_LOG : writes
FEE_PLAN ||--o{ ACCRUAL : "prices"
HOUSEHOLD ||--o{ ACCRUAL : "is billed"
HOUSEHOLD ||--o{ PAYMENT : makes
HOUSEHOLD ||--o{ PICKUP_REQUEST : raises
WORKER ||--o{ ROUND_ENTRY : records
ROUTE ||--o{ ROUTE_DAY : schedules
ROUTE_DAY ||--o{ ROUND_ENTRY : produces
PICKUP_REQUEST ||--o| ROUND_ENTRY : "closed in"
WARD {
int id PK
string name
string local_body
}
ROUTE {
int id PK
int ward_id FK
string name
string weekday_pattern
}
HOUSEHOLD {
int id PK
int route_id FK
string code UK
string name
string address
string category
string phone
boolean active
}
FEE_PLAN {
int id PK
string category
decimal monthly_fee
date effective_from
date effective_to
}
ACCRUAL {
int id PK
int household_id FK
int fee_plan_id FK
string period_month
decimal amount
}
PAYMENT {
int id PK
int household_id FK
decimal amount
date paid_on
string receipt_code UK
int collected_by FK
}
ROUTE_DAY {
int id PK
int route_id FK
date work_date
boolean closed
}
WORKER {
int id PK
int user_id FK
string unit_name
}
ROUND_ENTRY {
int id PK
int route_day_id FK
int household_id FK
int worker_id FK
string status
decimal quantity_kg
}
PICKUP_REQUEST {
int id PK
int household_id FK
string waste_type
string status
datetime raised_at
datetime closed_at
}
USER {
int id PK
string username UK
string password_hash
string role
}
AUDIT_LOG {
int id PK
int user_id FK
string action
string entity
datetime created_at
}Key design decisions. Fee plans are temporal: each row carries effective_from/effective_to, and an accrual stores a foreign key to the exact plan version it used — this is the cleanest answer to "what rate applied in March after the June revision?". ROUND_ENTRY keys on (route_day, household) so one house cannot be recorded twice in a round, and its status enum keeps coverage computation a simple query. PAYMENT.receipt_code is unique and generated in a transaction with the payment insert, so no two receipts can collide even with two supervisors entering cash simultaneously. The REST API is the only door: every endpoint authenticates with JWT and checks the role, so a household token simply cannot reach the supervisor's reconciliation endpoint, regardless of what the UI shows. Pickup requests are closed by a ROUND_ENTRY, which keeps waste quantities in one place for the handover report.
Module 01
JWT login with refresh tokens for four roles (Coordinator, Supervisor, Worker, Household); permission classes enforce role per endpoint, and every fee, route or accrual change writes an append-only audit row with user and timestamp. Owner: Member 1.
Module 02
The coordinator defines wards and named routes with weekday patterns; the supervisor assigns households (code, name, address, category, phone) to routes and manages subscriptions and exits with history preserved. Owner: Member 1.
Module 03
Route-days are generated from the route's weekday pattern; on the day, the worker ticks each household as picked, refused or absent, with optional quantity in kg, and closes the round — coverage and skipped houses become queryable immediately. Owner: Member 2.
Module 04
Category-based fee plans with effective dates; a scheduled job accrues monthly fees per household citing the exact plan version; cash payments are recorded with unique receipt codes and part payments, producing arrears and defaulters lists. Owner: Member 3.
Module 05
Households raise bulky-waste or e-waste pickup requests from the portal; the supervisor schedules them onto a worker's route-day; the worker closes them with a quantity note, and the household sees the status. Owner: Member 2.
Module 06
Role-specific dashboards (coverage today, arrears, open pickups), the supervisor's cash reconciliation view per worker, and CSV exports for the local body: fee collection by ward, route coverage percentage and handover quantity. Owner: Member 3.
Slide 1
Haritha Route & Fee Manager
Slide 2
The Haritha Karma Sena context
Slide 3
Problem
Slide 4
Objectives
Slide 5
Tools and justification
Slide 6
System design
Slide 7
The fee ledger design
Slide 8
Rounds, coverage and pickups
Slide 9
Who built what
Slide 10
Demo
Slide 11
Testing
Slide 12
Conclusion and future scope
Bullets, speaker notes and the .pptx · ₹2,000
Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.
REST exposes resources as URLs manipulated with HTTP methods and JSON representations, keeping the server stateless between requests. We separated React from Django so the API owns all business rules and data integrity while the front end only presents — meaning a future Android app for workers could reuse the same endpoints without touching the backend, and teams can work on UI and API independently.
At login the API returns a short-lived access token and a longer-lived refresh token signed by the server. The React app sends the access token in the Authorization header of every request; the backend verifies the signature and reads the role from the token payload without a session store. When the access token expires, the refresh token fetches a new one, so the worker's round screen never logs out mid-route.
Fee liability is created by a scheduled accrual job on the first of each month — one ACCRUAL row per household citing the plan version effective that day — and payments settle those accruals. The balance is simply accruals minus payments. This mirrors how the supervisor's paper ledger works and makes arrears a query instead of a recalculation.
+14 more questions, with answers
Unlocks with the project · ₹2,000
Unlock for ₹2,000What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.
Unlocks with the project · ₹2,000
Unlock for ₹2,000How to study it, adapt it and walk your examiner through it, step by step.
Unlocks with the project · ₹2,000
Unlock for ₹2,000OnlyProjects. (2026). Household Waste Collection Route & User-Fee Manager for Haritha Karma Sena Units (Django REST + React): BCA Web Development project bundle [Educational resource]. https://onlyprojects.online/projects/bca-web-hks-waste-collection-fee-manager
Keep browsing
Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.
Web Development
Room allocation, complaints and mess billing without the register
Web Development
Chitty groups, monthly auctions, prize money, foreman commission, dividends and arrears — without the ledger book
AI & Machine Learning
Predict tomorrow's air quality band for every Bengaluru monitoring station, before the morning commute
AI & Machine Learning
Forecast daily OPD crowds department by department, and plan the doctor roster before the Monday rush arrives
AI & Machine Learning
Turn a Soil Health Card into an explained, district-specific crop recommendation a small farmer can act on
Blockchain
From field verification to bank credit, every instalment of a DBT-style farm subsidy leaves a hash-linked, independently checkable trail