Inspiration

I kept seeing well-meaning people wanting to donate clothes, food, or even a free haircut, but there wasn’t a simple way to match those offers with actual needs on the streets of downtown SJ. I wanted to bridge that gap and make giving as easy as scrolling through Instagram.

What it does

  • Receiver posts a request (e.g. “Size M winter jacket” or “packed lunch”).
  • Donor browses open requests and clicks “I’ll help” to claim it.
  • Secure pickup verification via a one-time code so the right person gets the right item.
  • Track donation status from “open” → “claimed” → “fulfilled.”
  • User auth for both Donors and Receivers, with an anonymous donation option if you’d rather stay incognito.

How we built it

  1. Frontend: Plain HTML, CSS, and vanilla JavaScript—kept it lightweight and easy to tweak on the fly.
  2. Backend: Node.js
  3. Database: MongoDB Atlas for storing users, requests, and donation logs.
  4. Hosting: Heroku for the server and free MongoDB Atlas tier—zero-cost MVP.
  5. Verification: Custom OTP generator in Node that spits out single-use codes for pickups.

Check out the repo 👉 https://github.com/Faiq2001/WeHelp

Challenges we ran into

  • Making the site fully responsive so it works smoothly on both desktop and mobile browsers.
  • Building a rock-solid OTP system that works even if someone’s offline or has flaky service.
  • Deciding to skip multi-language support for now so we could actually launch something.

Accomplishments that we’re proud of

  • Implemented full-stack MVP features: donor/receiver authentication, request posting, donation claiming, status tracking, and OTP-based pickup verification.
  • Connected a vanilla JS/HTML/CSS frontend to a Node.js/Express API with MongoDB Atlas—end-to-end data flow is live in a staging environment.
  • Built a fully responsive layout so the site works smoothly on both desktop and mobile browsers without a framework.
  • Published the code on GitHub with a clear README, making it easy for classmates or future contributors to jump in.

What we learned

  • MVP over perfection: Launch fast, then polish based on real feedback.
  • UX for trust: Little things—like showing a confirmation code—make people feel confident using the app.
  • Responsive design tricks: Media queries and flex layouts are lifesavers.

What’s next for WeHelp

  • Add a feedback loop so receivers can rate their experience and donors can leave quick shout-outs.
  • Roll out basic analytics for admins (heatmaps of requests, donation volumes).
  • Experiment with a volunteer “closet-on-wheels” integration—link donors, drivers, and drop-off points.
  • Eventually tackle multi-language support once we nail the core flows.
Share this project:

Updates