AWS Builder Center

Two Sleepless Days and a Lot of Learning: Building KabadiWala

A two-day hackathon, two all-nighters, and countless iterations went into building KabadiWala, an e-waste collection platform connecting scrap collectors with authorized recyclers. From frontend development and backend integration to debugging, AWS deployment, and real-world user feedback, here's what I learned about building products that work beyond the code.

By Divyanshu Malekar, Team Payload Pirates — Pratik, Shruti, Aslam, Divyanshu
When I look at KabadiWala now, I see two versions: the first frontend that made the idea usable, and the final redesign that made it feel complete.Between them: broken routes, camera bugs, backend integration, team arguments, and way more rewrites than we planned.
I also pulled two all-nighters on the frontend. That's part of the story — not a recommendation. I'm proud of what we built, not how little I slept.
This hackathon taught me: getting an app to run is the easy part. Making it useful, understandable, and reliable is where the work actually starts.

Why We Built It

Payload Pirates built KabadiWala to connect informal scrap collectors with authorized e-waste recyclers.Most of us have handed an old charger, a broken appliance, a bundle of wires to a local kabadiwala. Once it leaves the house, we don't think about where it goes.
But e-waste isn't ordinary scrap. It has valuable materials. Handle it wrong and you hurt the people processing it and the environment around them.
Collectors are essential to this system. The problem isn't that they're collecting scrap. The problem is they lack reliable prices, verified buyers, and a documented handover.
We wanted to make that connection easier.

How It Works

A collector snaps a photo, picks a category, enters weight. The app gives an instant ₹ estimate and shows nearby recyclers with rates.
Pick a recycler → get a handover code + QR. Recycler confirms with the code, logs final weight, rate, payment.
Transaction becomes a record, not a handshake.
English, Hindi, Marathi — language isn't a "feature" for our users. It's whether they can use the app at all.

My Part

Built the initial frontend with my teammate pratik: collector/recycler screens, shared components, Zustand stores, routing, i18n, core workflows. Collector journey: photo → lot → estimate → recycler → handover. Recycler side: register, login, dashboard, incoming lots.
Also built the first backend: Node/Express/SQLite, API docs, smoke tests.
Having both sides exposed the real problems. A page looks right but the route's wrong. A button works visually but leaves the app in a broken state. A handover flow needs frontend and backend to agree on what happened.
That's when the project became more than a collection of pages.

The Bugs Nobody Notices

My most useful fixes were invisible once they worked. Camera flickered during photo capture. Accepting a lot could route a recycler wrong and log them out. Repeated lot creation. Login redirect loops. Safety page ignored the user's selected language.
Small things on paper. But imagine photographing scrap and the camera flickers. Or accepting a request and suddenly you're logged out.
To a dev, that's a bug. To a user, that's a reason to delete the app.
Changed how I think about frontend work. Not arranging components — making each action behave the way someone reasonably expects.

Rebuilding the Frontend

Features grew, teammate's changes landed, workflows improved. Eventually a major redesign.
Not colors or rounded buttons. Landing page, auth screens, collector/recycler layouts, nav, profiles, lot creation, price board, earnings, safety, admin. Shared layout components, reusable UI, language switcher, theme controls — consistency.
Hard part: improving the interface without breaking what's underneath. Features still shipping during the redesign, so I had to integrate frontend changes with AI identification and admin panel work.
First frontend commit gave us a foundation. Last major commit pulled the pieces into something coherent.

What Real Users Taught Us

Most important part happened away from the code.
We talked to local scrap shop owners instead of assuming.
Feedback wasn't what we hoped. Some had established buyers. Some wanted less paperwork, not more. They didn't see a reason to change.
Reality check.
You can build a technically working platform and still fail to give someone a good enough reason to use it. An existing buyer relationship isn't replaced by a new interface overnight.
Our app needed to offer a clear benefit, ask for almost no effort, and fit how people already work.

Seeing It Run on AWS

We deployed beyond localhost. EC2 for the app, plus SNS, SES, CloudWatch, AWS Backup, Budgets.
Not all AWS work was mine — teammates owned different pieces, and that division mattered.
But running outside our laptops changed things. HTTPS mattered for camera access. Service limits affected demos. Logs became useful for debugging instead of guessing.
Deployment made the gap between "works locally" and "works for someone else" painfully clear.

Learning to Work Together

Working with Pratik, Shruti, and Aslam taught me as much as the code.
Coordinating frontend/backend changes. Communicating when things broke. Integrating without losing each other's work.
Added Discord commit notifications — small thing, but it reflected a bigger lesson: collaboration is easier when everyone sees what's changing.
Also learned not to measure contribution by feature size. Fixing a build, correcting a route, improving docs, resolving a crash — that's what lets the team move forward.

What I'd Do Differently

Plan better. Sleep.
Exhaustion isn't a strategy. When you're tired, a straightforward bug becomes a puzzle.
Next time: clearer milestones, earlier integration, more testing room before the crunch.
Also: talk to users earlier. Their feedback changes the workflow before you spend days polishing something they don't need.

What's Next

kabadiwala-hub — instead of every small collector dealing directly with a recycler, a nearby scrap shop aggregates smaller collections into a larger lot. More practical collection and transport.
Still an idea. Before building, we need to know if it fits actual collectors and shop owners.

More Than a Hackathon Project

KabadiWala let me build a system from foundation through backend, debugging, integration, and a major redesign.
Biggest lesson wasn't a framework.
A useful product needs more than working code. Understandable workflows. Reliable behavior. Real user feedback. A team that keeps solving problems together.
Thank you, Pratik, Shruti, Aslam. Payload Pirates made this more than I could've built alone.
Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article