Back to Case Studies
BSRSTSep 2023 – Present

Digitizing a Non-Profit's Financial Operations from Paper to Production

Solo Full-Stack Developer

Next.jsMongoDBNextAuthExcelJSSWRRecoil

A Mumbai-based religious trust was drowning in paper — handwritten receipts, physical ledgers, spreadsheet chaos. I built their entire digital backbone solo, from receipt generation to financial reporting. Three years later, it's still running in production, processing thousands of transactions, and has become the operational nerve center for their entire financial workflow.

Paper Chaos in a Growing Organization

The trust managed all financial records manually — paper receipts, physical ledgers, scattered spreadsheets. With growing membership and increasing donation volumes, this approach was crumbling. Audits took weeks, receipts got lost, and there was zero visibility into financial health without manually tallying numbers.

1

Paper receipts were getting lost, making audit trails unreliable

2

End-of-year financial reporting took weeks of manual number crunching

3

No centralized member database — duplicate entries were common

4

Multiple operators needed access but with different permission levels

5

Bilingual receipts (English + Marathi) required manual formatting each time

Building for Non-Technical Users

The key constraint was the users — trust administrators who were comfortable with paper but not with complex software. Every design decision prioritized simplicity and reliability over technical sophistication. I chose a single-page dashboard pattern so everything felt like one familiar workspace.

Single-Page Dashboard Architecture

Built an authenticated home page with a sidebar that swaps between modules as tab content. No page navigation confusion — just click and work. Shared Recoil state means data flows instantly between modules.

Indian Financial Year-Aware Logic

All queries default to Indian FY (April–March). Voucher IDs auto-reset per FY, Excel reports order April→March, and the system auto-detects the active financial year.

Custom Hooks for Business Logic

Each module has a dedicated useHandle* hook (useHandleReceipts, useHandleMembers, useHandleVouchers) separating CRUD operations from UI — making the codebase maintainable as a solo developer.

Soft Delete Pattern

All models use an isActive boolean flag instead of hard deletes. This has literally saved the client from data loss multiple times when operators accidentally deleted records.

System Architecture

Interactive architecture map — click any node to trace its connections.

Data Flows (click a node to filter)

React SPA (Dashboard)SWR + RecoilNext.js API Routes
Next.js API RoutesJWT validationNextAuth (JWT)
Next.js API RoutesMongoose CRUDMongoDB Atlas
Next.js API RoutesFile uploadsImageKit CDN
Next.js API RoutesReceipt emailsNodemailer (Gmail)
Next.js API RoutesReport generationExcelJS Generator
frontendbackenddatabaseserviceexternalai

From First Commit to Daily Operations

This project evolved organically based on real needs. Each feature was added when the trust's operations demanded it, not from a pre-planned roadmap.

Month 1-2: Member & Receipt Core

Built the member database with bulk Excel upload, receipt generation with auto-incrementing numbers per FY, and bilingual PDF output using react-to-print.

Month 3-4: Financial Modules

Added voucher/expense accounting with double-entry bookkeeping principles, account head hierarchies, and the membership module with period tracking.

Month 5-6: Reporting Engine

Built the Excel report generation — multi-sheet exports with merged cells, monthly breakups, head-wise analysis. This alone saved the trust weeks of manual work each quarter.

Ongoing: Maintenance & Evolution

151 commits over 3 years. Regular feature additions based on trust operations needs — bank-wise breakdowns, role refinements, backup automation with ZIP streaming.

A Complete Digital Operations Platform

The final system handles the trust's entire financial workflow — from member onboarding to receipt generation to year-end reporting — all through a simple, approachable interface.

Bilingual receipt PDFs (English + Marathi) generated instantly with react-to-print and emailed via ReactDOMServer.renderToString() for visual consistency

Multi-sheet Excel reports with merged cells, monthly breakups, and head-wise financial analysis via ExcelJS

Role-based access control (3 roles) ensuring operators only see data relevant to their responsibilities

Automated receipt numbering per financial year with zero manual tracking required

Database backup automation using archiver for ZIP streaming — one-click data protection

Real Impact Over Three Years

The real measure of this project isn't technical metrics — it's that a non-profit trust has been running their entire financial operations on this system for 3+ years without a single data incident.

3+
Years of continuous production use
80%
Reduction in manual administrative work
0
Data loss incidents (soft-delete pattern)
151
Commits across 21+ PRs

What I Took Away

Build for the user, not the resume

A Pages Router with SWR and Recoil might not be the trendiest stack, but it's dead simple to maintain solo and the non-technical users never struggle with it. The boring choice was the right choice.

Soft deletes save real relationships

The isActive pattern has saved my client relationship multiple times. When an operator accidentally deletes something, a 30-second database update brings it back. Hard deletes would have meant lost trust — literally and figuratively.

Financial year logic is deceptively complex

Indian FY (April-March) touches everything: receipt numbering, report ordering, voucher ID resets, query defaults. Building it into the architecture from day one was critical.

Tech Stack

Framework

Next.js 14React 18TypeScript

State & Data

RecoilSWRMongoose ODM

Auth

NextAuth.jsJWTbcrypt

Database

MongoDB

Reporting

ExcelJSreact-to-printxlsx

File Management

ImageKitMulterarchiver
Next Case Study

Re-Engineering a Legacy PHP Monolith into a Modern CMS-Powered Platform

Vivekanand Seva Mandal (vsmandal.org)2023 – Present

Want to build something like this?

I'm available for high-impact product engineering work.

Let's Talk