A local-first loan and EMI schedule manager built with React, TypeScript, and Vite. Track home, car, education, and personal loans with support for moratorium periods, tranche disbursements, prepayments, step-ups, and interest rate changes.
- Create and manage multiple loans with detailed configuration
- Generate EMI schedules with moratorium, adjustment, and disbursement rows
- Apply prepayments, step-ups, and interest rate modifications
- Export schedules to CSV
- Dark/light themes with customizable color palettes
- All data stored locally in the browser via IndexedDB (Dexie)
- React 19 + TypeScript
- Vite (rolldown-vite)
- React Router for navigation
- Dexie for IndexedDB persistence
- shadcn/ui + Tailwind CSS 4 for UI
- React Hook Form + Zod for forms
- Vitest for testing
pnpm installpnpm devpnpm buildpnpm previewpnpm lintpnpm testWatch mode:
pnpm test:watchsrc/
├── pages/ # Route-level screens
├── routes.tsx # Lazy-loaded route definitions
├── components/
│ ├── loan/ # Loan domain UI
│ ├── emi/ # EMI schedule UI
│ ├── modifications/ # Prepayment and step-up dialogs
│ ├── layout/ # App shell (sidebar, layout, error boundary)
│ └── ui/ # shadcn primitives
├── hooks/ # Reusable stateful logic
├── contexts/ # React context providers
├── lib/ # Business logic, persistence, utilities
├── types/ # Shared domain types
└── config/ # App configuration
Loan data, EMI schedules, and modifications are persisted in the browser using IndexedDB via Dexie. No server or account is required — data stays on your device.
Private project.