Back to the window

Backend developer at Rudyati, team of 4–5

JUSCO bulk waste portal

Apply, approve, price and bill bulk waste collection for Jamshedpur's utility

BuiltJul 2022–Apr 2023

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

  1. Apply

    A business applies online with its documents, and gets an SMS with its application number and a tracking link.

  2. Field check

    A field worker visits and reports.

  3. Depot manager

    Reviews the application and signs it on screen.

  4. Head of department

    Approves it.

  5. 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

  1. 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.

  2. Uploaded files were saved with full server paths, so they couldn't be served.

    Fix Save relative paths and serve them from one route.

  3. Signature images were being written into the code folder.

    Fix Decode and store them properly, with a fallback for blank signatures.

  4. 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.