Video in the works
JUSCO bulk waste portal
An application moving from customer to field worker to depot manager to invoice. Sample data.

About the project
Businesses in Jamshedpur apply online for bulk waste collection. Field workers, depot managers, the head of department and billing staff each check and approve it, and the customer gets priced and invoiced.
JUSCO, Jamshedpur's utility company, collects bulk waste from businesses. Getting signed up meant an application passing through several departments, each checking it before the business could be priced and billed.
With the team at Rudyati we put that whole process online. A business applies on the portal, and each department checks it in turn, ending in a rate and a GST invoice. I built most of the backend; Rohit Kumar built most of the screens. We also built a QR survey app for checking how well each house sorts its waste.
How it works
Apply
A business applies online with its documents, and gets an SMS with its application number and a tracking link.
Field check
A field worker visits and reports.
Depot manager
Reviews the application and signs it on screen.
Head of department
Approves it.
Price and bill
The rate comes from the customer's class, and invoices add 9% CGST and 9% SGST. A monthly run bills everyone not yet billed that month.
Under the hood
- Backend
- Node.js and Express, with Prisma on the client's MySQL database.
- Screens
- React and MUI, one dashboard per role.
- Messages
- A bulk SMS gateway.
- QR survey
- A separate app: staff scan a house's QR code and answer questions about waste sorting.
What I did
- The first backend: login, users, applications, status changes with role checks, and sending to the head of department
- Screens for the depot manager (applications, details, a signature pad), the customer's status page and the head's dashboard
- SMS to applicants with their application number and a tracking link
- Moved the backend onto the client's 19-table MySQL database with Prisma
- Invoices with 9% CGST and 9% SGST, and a monthly invoice run that skips customers already billed
- Rate lookups, a field worker dashboard and billing screens
- A separate QR survey app: staff scan a house's QR code, answer questions about waste sorting, and scores are saved per house
What was new
- My first approval workflow with many roles, for a real client
- First time with Prisma on an existing database, an SMS gateway and GST invoices
Problems I hit, and how I fixed them
Login broke after the move to the client's database: wrong table name and date columns holding text.
Fix Pointed the queries at the right table and fixed the column types.
Uploaded files were saved with full server paths, so they couldn't be served.
Fix Save relative paths and serve them from one route.
Signature images were being written into the code folder.
Fix Decode and store them properly, with a fallback for blank signatures.
Quick schema changes piled up migrations.
Fix Squashed them into one.
Screenshots
Screenshots in the works
Real screens from JUSCO bulk waste portal go here.