
Al-Insaf - Cooperative Finance Platform with Ledger and Loans
A cooperative finance organisation was running member records, savings, loans and investor capital across paper and spreadsheets, with no way to audit a branch or close a day cleanly. We built one system that holds all of it: member registration, daily collections, loan application through to disbursement, a multi-branch ledger, investor capital and an audit log that records who did what. Officers record each collection the moment it is made, managers approve loans and close the day, and the permission model decides what each role can see and do rather than hiding buttons. Everything shown in this case study runs on seeded demonstration data; real member records never appear in portfolio material.
The Full Story
How a cooperative that ran on paper and spreadsheets now runs every collection, loan, investor account and daily close from one audited ledger.
A cooperative that ran on paper
Al-Insaf is a small traders' savings cooperative. Members save and borrow in small amounts, and field officers visit them every day to collect instalments and savings, writing each payment into a book. Member records, savings, loans and investor capital were spread across paper and spreadsheets, loans moved from desk to desk for signatures, and there was no way to audit a branch or close a day cleanly.
An earlier system had shown the idea could work, but almost anyone could see and change almost anything. The cooperative needed one system that matched how it really works, and that its members and investors could trust with their money.
Every payment on the books the moment it is made
A collection used to exist only in an officer's notebook until someone typed it up. Now the member is found by name, phone or card code, the savings deposit, withdrawal, fee or expense is recorded against them on the spot, and the entry can carry the GPS point where it was taken. Today's cash in, cash out and net sit beside the form, so the office sees the day as it happens rather than the next morning.
Nothing is rewritten after the fact. A wrong entry is reversed, and only a manager can correct a collection, which is why the office can trust every number that comes in and a member can trust that what they paid was recorded.



Books that close and balance every night
Behind every screen sits a double-entry ledger, kept per branch. Each night a scheduled close runs across every branch, locks the day's entries, checks the trial balance and snapshots the cash in hand, and a day can still be closed or reopened by hand. Month end starts from days that already balance.


A loan the committee can follow from application to last instalment
A loan used to travel from desk to desk on paper, and nobody could say for certain where it stood. Now an application is entered once and moves from pending to approved to disbursed in the open, and every step is recorded with who took it and why, a rejection and its reason included. A disbursed loan carries its instalment schedule, each instalment marked collected or overdue, and the application, the loan letter and the angikarnama, the member's signed undertaking, print from the same record.
Applying, approving and paying out are separate powers, switched on per role, admin, manager, field officer, monitor and member, or granted to a single person, without touching the code. The permission model decides what each role can see and do rather than hiding buttons, branch staff see only their own branch, and the audit log records who changed what.



The branch at a glance, for the people who answer for it
The dashboard puts the branch's position on one screen: active members, loans outstanding, total savings, investor capital, what was collected this month and where the money went, with expense categories in the language the office keeps its books in. Monthly ledgers and reports sit one click away.
Committee meetings that used to begin with reconciling now begin with decisions, in a light theme for the office or a dark one for long evenings.



One conversation, in the language each person thinks in
Office and field staff message each other inside the platform, so a question about a member or a day's collection stays with the branch that owns it rather than in someone's personal messaging app. The whole interface switches between Bangla and English with one button, every member is registered with their name in both scripts, and a message can be read translated or in the words it was written in.
Staff work in the language they think in, and nobody needs a second app to ask how the day went.



Tested as if money depends on it
Because it does. Integration suites run on every change and replay the money paths, deposits, loan lifecycles, investor payouts and day closes, so a new feature cannot quietly break a balance. Sign in, OpenFGA permissions, feature switches and the audit trail come from gm-libs, the studio's own NestJS packages, hardened on this platform first.
For members it means payments that are recorded and respected, for officers a day they can see, for the committee books they can stand behind, for investors an account they can check, and for the cooperative a way to grow branch by branch without losing track. Every screen in this story shows seeded demonstration data, in line with how the platform treats its members' records.
Investors who can see exactly where their money stands
Investors put capital into the cooperative alongside the members' savings, and that money has to be accounted for as carefully as any deposit. Each investor has an account showing their current capital, what they have contributed, what they have withdrawn and what has been paid out to them, with a dated statement behind every figure.
Adding capital, withdrawing it and paying an investor post to the same double-entry ledger as everything else, and only the super admin can make them, while admins and monitors can look. The investor capital on the branch dashboard is the sum of those accounts, and the interest paid to investors sits among the branch's expenses, so when an investor asks where their money stands, the office answers from the books rather than from memory.



The whole month on one sheet
The month the office once rebuilt by hand in spreadsheets is now one sheet: every member down the side, every day across the top, each deposit and withdrawal in its cell and a total for each member at the end. A missed day shows at a glance, and the sheet exports to Excel, headed in Bangla or English, for the committee's file.


You May Also Like
CoverFanz - Admin Dashboard for a Performer Marketplace
The admin dashboard that let CoverFanz's founder run a performer marketplace from launch day without asking a developer. Every fan, performer and venue sits in one list with its subscription state, new venues wait in an approval queue until their address is checked, reports land with the reason attached, and the kinds of act are a list the founder controls. It was built in the same month as the apps, on the same GraphQL API.
Webanion - Headless CMS Portfolio Platform with MCP Server
A static portfolio site could not carry work in five languages or keep pace with the writing behind it, so we replaced it with a platform. A headless CMS holds every case study, article and record; a Next.js front end renders them in English, Bengali, Spanish, Hindi and Chinese; and an MCP server exposes the same content to AI assistants, so an agent asked about this work reads the source rather than guessing from a scrape. Search, media handling, an approval flow and a public discovery layer all run on it. The proof is recursive: the page you are reading is served by the system this entry describes.
Sukalyan Research Group, a website for a university pharmacy lab
A website for the Sukalyan Research Group at the Department of Pharmacy, Jahangirnagar University, led by Professor Sukalyan Kumar Kundu: seven research areas with their techniques and papers, a filterable publication list of one hundred and twenty-four Google Scholar entries grouped by year, the principal investigator's profile, the members by name and portrait, an alumni destinations wall, a Lab Life gallery and a four track join page with an email checklist. Next.js with static export, React and TypeScript, Tailwind CSS, all content behind one query function so the move to a headless CMS changes nothing else. Deployed as a single container on a self-hosted Kubernetes cluster.

The blog is field notes from production: architecture decisions, AI systems that survived contact with real users, and infrastructure that pays for itself. Written from the work, not about it.


