All projects
NGO platform, CMS & donationsSoftware Developer (intern) · core contributor

Denthinkers

A live nonprofit platform built with the team across backend and frontend. The donation module and admin authentication were my main pieces.

Denthinkers screenshot

Money and access, on a platform a charity has to trust

Two parts of this carry real consequence. Donations move actual money, so the site has to be certain a payment succeeded before it records one — and a client can claim anything. The admin side controls what the public sees, so the authentication behind it has to hold up without a dedicated ops team maintaining it.

the calls that mattered

Decisions

  1. 01

    Confirm payments on cryptographic proof, not the client's word

    Razorpay orders are created server-side, and the callback signature is verified with HMAC on the server before a donation is written. That means a donation record exists only when the payment gateway's own signature proves it happened. A forged success response from the browser changes nothing.

  2. 02

    Cookie-based JWT admin auth behind middleware

    Admin sessions use httpOnly cookies on a 7-day expiry, with the admin routes gated in middleware rather than checked per page. Putting the check at the edge means a new admin route is protected by default instead of protected only if someone remembers to add the guard.

  3. 03

    A draft and publish workflow that survives collisions

    The CMS lets the team write without publishing, and handles slug collisions explicitly rather than letting a second article with the same title quietly overwrite the first or fail at the database layer.

what came out

Outcome

  • ₹1.5L+ in verified donations processed to date
  • 2.5K+ monthly visits sustained on the live site
  • 15 API route handlers across 23 endpoints, built with the team

Built with

  • Next.js
  • React
  • TypeScript
  • MongoDB
  • Razorpay
  • JWT