Anup ShresthaCase study

Myra ERP · Rara Labs

Banking for the co-op down the street

Savings and credit cooperatives in Nepal run on paper ledgers and the trust of people who know each other by name. Myra moved 26 of them onto a real core banking system in its first release, shipped six months after the first commit. I was the first hire on the development team at Rara Labs, which meant the first architecture decisions were mine to get right: an NX monorepo on the front, Go and NestJS services behind it, one codebase serving every tenant in Nepali and English.

Role
Senior software engineer, first hire
Years
2021–23
Stack
Go · React · NX · NestJS
Scope
26 co-ops at launch
Myra application hub beside the brand panel: app tiles for Core Banking System, Inventory, Loan Management, and Accounting, quick links, My Day tiles for deposits, withdrawals, and cash in hand, and pending request queues
Fig. 01The hub a teller lands on. Core Banking, Inventory, Loan Management, and Accounting as separate apps, with the day's deposits, withdrawals, and cash in hand up front and pending requests queued below.

02

One member, whole story

A cooperative's whole business is its members, so the member record is where Myra had to earn its keep. Everything a member holds, shares, savings, loans, transfers, requests, hangs off one profile, and the list view has to stay quick when a co-op crosses ten thousand of them. Search, filters, and exports run server-side; the reporting queries and APIs behind that table were mine, tuned so a branch manager pulling a month-end list is never waiting on the software.

Getting a member in is the harder design problem. Regulators require Know Your Member paperwork, and the people typing it in are clerks with a queue at the counter, not data-entry specialists. So the onboarding form keeps score in the margin: a checklist sidebar shows each section's progress, validation flags what is missing without blocking the rest, and a half-finished application can be saved and picked up after lunch. The spec below is annotated with the spacing redlines we held the build to.

Myra member list in the English UI showing 10,005 members, a dark green navigation bar with Member, Share, Saving, Loan, Transaction, Transfer, Requests, Withdraw Slip, Microfinance, and Reports, an open export menu, and per-row profile actions
Fig. 02The member list at 10,005 members. The dark green nav carries the whole banking side; exports and per-row profile actions sit where a clerk's hand already is.
Add New Member form design spec with a progress checklist sidebar showing Personal Information at 3 of 7, Professional Details, SACCOS Membership at 5 of 5, and Declaration at 4 of 4, KYM-style validation states, and redline spacing annotations
Fig. 03The onboarding spec. A checklist sidebar keeps count per section, 3/7 here, 5/5 there, so KYM compliance reads as progress instead of punishment. Redlines mark the spacing the build had to match.

03

Shares you can hold

Co-op members own the co-op, and that ownership is paper they expect to hold. Myra's share register prints under the cooperative's own letterhead, issue and return rows with their kitta ranges laid out the way the registrar's office already reads them, because a report that looks unfamiliar to a regulator might as well be wrong. Filters, print preferences, and saved exports live beside the table, not in a separate reporting product.

The certificate itself comes out of the same data: a generated शेयर प्रमाण-पत्र with registration numbers, the amount written out in words, and signature blocks where the committee expects them. Bilingual output was not a toggle bolted on at the end; every document template carries both scripts, and the numbers reconcile with the register either way.

Share Register report under a cooperative letterhead: a share issue and return table with kitta ranges, a filters panel, print preferences, and save and export controls
Fig. 04The share register. Cooperative letterhead, issue and return rows with kitta ranges, and print preferences beside the table.
Generated Nepali share certificate, sheyar pramanpatra, with registration numbers, the share amount written out in words, and signature blocks for the committee
Fig. 05A generated share certificate in Nepali, registration numbers and amount in words filled from the register, signature blocks ready for ink.

04

Beyond the counter

Once the banking core held, the suite kept growing: Accounting, Inventory, Alternative Channels for the members who bank by phone, and an employee app for the staff running it all. The training calendar below is that last one, course objectives, trainers, and enrollment behind a single event click. The NX monorepo is what made this pace survivable; a new app started from shared libraries for auth, tables, forms, and translations instead of from zero.

The other half of the job never screenshots well. Every tenant is isolated, every screen sits behind role-based access, and I carried the production DevOps, Docker and Kubernetes on AWS, with PostgreSQL and MongoDB underneath and GraphQL in between. When your users are cooperatives holding their neighbors' savings, boring reliability is the feature.

Myra employee app training calendar with an event detail modal open, showing course objectives, a trainers table, and enrollment controls
Fig. 06The employee app. A training calendar with the event detail one click deep: objectives, trainers, and enrollment in a single modal.

System notes

26 co-ops at launchShipped in 6 monthsBilingual UI · नेपाली + EnglishMulti-tenant RBACNX monorepo frontMyra green