Mkutano
Comprehensive Application Documentation
Village Savings & Loan Association Management System
with Enterprise NGO/MFI Platform
Table of Contents
Application Overview
Mkutano (meaning "gathering" or "meeting" in Swahili) is an offline-first, mobile-optimized web application designed for women's village savings and loan associations (VSLAs) across Africa.
Core Mission
Enable transparent financial management, accountability, and impact tracking for savings groups through a comprehensive yet intuitive platform that works offline, scales to 1000+ groups, and provides insights for NGO/MFI partners.
Key Statistics
Primary Users
- Village Savings Secretaries - Manage group meetings and finances
- Group Members - View contributions, loans, and savings
- NGO Staff - Track loan impact across funded groups
- MFI Managers - Monitor lending portfolio performance
- System Administrators - Oversee multi-group operations
Core Features
Public Marketing Site
- Landing page with hero, features, how-it-works, testimonials
- Marketing pages for all user types
- News & press section
- Contact form with email capture
- Multi-step signup portal
- FAQ section
- Responsive mobile-first design
Community Dashboard (Savings Groups)
- Meeting management (create, track, close sessions)
- Member registry with wallet balances
- Contribution tracking (contributions, social fund, fines)
- Loan management with repayment schedules
- Repayment recording with interest calculations
- Member wallets with transaction history
- Auto-generated PDF reports
- Complete audit trail of all transactions
Enterprise Edition (NGO/MFI Platform)
- NGO dashboard with program overview and budget tracking
- MFI dashboard with lending portfolio KPIs
- Impact tracking with repayment metrics
- Loan portfolio view showing complete funding flow
- Performance analytics and trend analysis
- Quick navigation to funded groups
Offline-First Capabilities
- Service worker caching
- Sync status display
- Built-in demo mode
- Local storage fallback
- Background sync when online
Technology Stack
Frontend
| Technology |
Version |
Purpose |
| Next.js |
14.2.20 |
React framework with App Router |
| React |
18 |
UI library |
| TypeScript |
5 |
Type safety |
| Tailwind CSS |
3.4.1 |
Styling |
| Lucide React |
0.441.0 |
Icon library |
| Recharts |
2.12.7 |
Data visualization |
| jsPDF |
2.5.1 |
PDF generation |
Backend & Database
- Backend-as-a-Service: Supabase (PostgreSQL 14+)
- Authentication: Supabase Auth (Phone + Email OTP)
- Database: 12 PostgreSQL tables with RLS policies
- Security: Row-Level Security (RLS) policies per user role
- Hosting: Vercel (auto-deploys from GitHub)
PWA & Offline
- Custom Service Worker (public/sw.js)
- Web Manifest (public/manifest.json)
- Custom useOffline hook
- Network-first and cache-first strategies
- Background sync manager
Development Tools
- npm for package management
- ESLint for code linting
- TypeScript for type checking
- Git/GitHub for version control
- Vercel for CI/CD
User Roles & Permissions
1. Secretary Role
Primary Responsibility
Manage savings group meetings and member finances
Permissions
- ✓Create and close meetings
- ✓Record contributions and loans
- ✓View all group members
- ✓Generate reports
- ✗Cannot manage other groups
Demo Account
Phone: +254700000001
2. Member Role
Primary Responsibility
Track personal savings and loans
Permissions
- ✓View personal wallet
- ✓View personal contributions
- ✓View personal loans
- ✗Cannot create meetings
- ✗Cannot edit others' data
Demo Account
Phone: +254700000003
3. NGO Role
Primary Responsibility
Track loan impact across funded groups
Permissions
- ✓View all funded groups
- ✓Monitor repayment metrics
- ✓Access impact analytics
- ✓View loan portfolio
- ✗Cannot modify group data
Demo Account
Click "Demo: Maendeleo Foundation" on
/enterprise/ngo-login
4. MFI Role
Primary Responsibility
Monitor lending portfolio and disbursement
Permissions
- ✓View lending portfolio
- ✓Track disbursements and repayments
- ✓Monitor group performance
- ✓View repayment rates
- ✗Cannot issue loans directly
Demo Account
Click "Demo: Ulinzi MFI for MSMEs" on
/enterprise/mfi-login
5. Admin Role
Primary Responsibility
System-wide administration and oversight
Permissions
- ✓Manage all groups
- ✓Reset user passwords
- ✓View complete audit logs
- ✓System configuration
- ✓User role assignment
Data Model
Mkutano uses a normalized PostgreSQL database with 12 core tables supporting complete financial tracking.
Core Tables
| Table |
Purpose |
Key Fields |
| users |
User accounts |
name, phone, email, role |
| groups |
Savings groups |
name, village, secretary_id, member_count |
| members |
Group members |
name, phone, total_saved, wallet_balance |
| meetings |
Group meetings |
date, venue, status, attendance_count |
| contributions |
Savings contributions |
amount, type, member_id, recorded_at |
| loans |
Loans issued |
amount, interest_rate, status, due_date |
| repayments |
Loan repayments |
principal, interest, loan_id, recorded_at |
| audit_logs |
Transaction history |
action, entity, actor_id, timestamp |
| ngos |
NGO organizations |
name, budget, programs |
| mfis |
Microfinance institutions |
name, portfolio_size, active_groups |
Data Relationships
users (1) ──── (many) members
│
└─ (1) groups
│
├─ (many) meetings
├─ (many) audit_logs
│
└─ (through MFI relationships)
ngos & mfis
loans ────── (many) repayments
contributions ────── (many) meetings
Security: Row-Level Security (RLS)
All tables are protected by PostgreSQL RLS policies ensuring:
- Secretaries see only their group data
- Members see only their personal data
- NGO staff see only their funded groups
- MFI managers see only their lending portfolio
- Admins have full access
Getting Started
Installation from Source
Prerequisites
Node.js 18+ required
npm --version # Should be v8 or higher
Clone & Install
git clone https://github.com/dig-software/MKUTANOAPP.git
cd MKUTANO\ APP
npm install
Environment Variables
Create .env.local:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here
Development Server
npm run dev
# Open http://localhost:3000
Production Build
npm run build
npm start
Deployment on Vercel
- Push repository to GitHub
- Visit vercel.com and create new project
- Select MKUTANOAPP repository
- Add environment variables
- Click "Deploy"
- Automatic deployments on main branch push
✓ Production URL
mkutano-app.vercel.app - Auto-deployed from GitHub main branch
Demo Accounts
Community Savings Group
| Role |
Phone Number |
Notes |
| Secretary |
+254700000001 |
Creates meetings, manages group |
| Member |
+254700000003 |
Views personal savings/loans |
Enterprise Edition
NGO Portal
URL: /enterprise/ngo-login
- Demo Account: "Maendeleo Foundation"
- Program: Women Entrepreneurs Fund 2026
- Budget: 500,000 KES
- Features: Program overview, impact tracking, loan portfolio
MFI Portal
URL: /enterprise/mfi-login
- Demo Account: "Ulinzi MFI for MSMEs"
- Portfolio: 180,000 KES disbursed
- Repayment Rate: 92%
- Features: Lending portfolio, group performance, transaction history
Mock Data Included
- Community Group: "Maendeleo wa Wanawake" with 3 demo members
- NGO Program: $500K budget, 2 MFI partners
- MFI Portfolio: 3 active lending groups, realistic repayment data
- Sample Meetings: Multiple meeting sessions with transactions
⚠ Note:
Demo accounts require no password. Click "Demo Account" or "Demo: [Organization]" buttons to login instantly.
Offline-First & Progressive Web App
Progressive Web App (PWA)
Installation
- Desktop (Chrome/Edge): Install button prompts when visiting site
- Mobile (iOS/Android): Add to home screen from share menu
- Standalone: App runs full-screen without browser chrome
- Native Feel: Instant load, smooth animations
Service Worker
File: public/sw.js
Caching Strategies:
- Network-first for pages (online priority)
- Cache-first for assets (offline priority)
- Stale-while-revalidate (serve cache, update background)
Offline Data Capture
How It Works
- User creates meeting with contributions/loans
- Data saved to localStorage immediately
- Service worker intercepts network request
- If online: sync to Supabase
- If offline: queue for later
- Sync status indicator shows "Offline" or "Synced"
Local Storage Structure
{
"mkutano_pendingChanges": [
{
"type": "contribution",
"meetingId": "...",
"groupId": "...",
"amount": 500,
"memberId": "...",
"timestamp": "2026-02-22T10:30:00Z"
}
],
"mkutano_user": {
"id": "...",
"phone": "+254...",
"role": "secretary",
"groupId": "..."
}
}
Demo Mode
Works 100% offline with no authentication:
- Built-in demo data
- Pre-configured demo accounts
- Realistic sample data for testing
- Complete offline functionality
✓ Works Anywhere
Create savings groups, record meetings, and manage finances even without internet. Data automatically syncs when connection restored.
Enterprise Edition
Dedicated platform for NGOs and Microfinance Institutions to track loan impact, monitor repayment performance, and manage funding allocations.
NGO Portal
Dashboard Home (/dashboard/ngo)
- Program Overview: Name, budget, allocation progress
- Funding Allocation: Shows MFI partners and amounts
- Impact Metrics: Active borrowers, repayment rate, outstanding balance
- Quick Navigation: Links to Groups, Impact, Loans pages
Funded Groups (/dashboard/ngo/groups)
- Overview cards for each group
- Member count, loans issued, repayment %
- Health status (Healthy/Moderate/At Risk)
- Sortable by name, location, repayment rate
Impact Analytics (/dashboard/ngo/impact)
- 6-month repayment trend visualization
- Loan status breakdown (Repaid/On Schedule/Overdue)
- Group performance comparison
- Key insights and recommendations
MFI Portal
Dashboard Home (/dashboard/mfi)
- Lending Portfolio KPIs: Disbursed, Repaid, Outstanding, Rate
- Active Lending Groups: Table with funding amounts and performance
- Group Performance: Repayment rates, status indicators
- Quick Stats: Groups active, borrowers, average loan size
Enterprise Landing Page (/enterprise)
- Platform overview for NGO and MFI solutions
- Feature comparison
- Funding flow diagram (NGO → MFI → Groups → Impact)
- Quick navigation to login pages
Key Metrics Tracked
| Metric |
NGO Perspective |
MFI Perspective |
| Program Budget |
✓ Total budget |
─ Portfolio size |
| Funding Allocation |
✓ By MFI partner |
─ Received from NGO |
| Repayment Rate |
✓ Overall impact |
✓ Portfolio performance |
| Outstanding Balance |
✓ By MFI |
✓ Total portfolio |
| Active Borrowers |
✓ Across groups |
✓ Across portfolio |
Authentication & Security
Authentication Methods
Phone-Based (Primary)
- Supabase Auth with Phone OTP
- No password required
- SMS delivery of verification code
- Fast signup process
Email-Based (Alternative)
- Email OTP or password authentication
- Account recovery mechanism
- Professional for desktop users
Demo Mode
- No authentication required
- Pre-configured demo accounts
- Works 100% offline
- Data isolated from production
Security Features
Row-Level Security (RLS)
- Database-Level: PostgreSQL RLS policies
- User Isolation: Each user sees only their data
- Role-Based: Different views per role
- Audit Logging: All access logged
Session Management
- JWT Tokens: Secure token-based sessions
- Auto-Logout: Inactive session timeout
- Device Management: Sessions per device
- Explicit Logout: Clear all sessions on logout
Data Protection
- In Transit: HTTPS/SSL for all connections
- At Rest: Supabase encryption for stored data
- PII Fields: Additional encryption layer
- Audit Trail: Complete logging of changes
Audit Trail
Every action in the system is logged with:
- Actor identification (who made the change)
- Action type (create, update, delete)
- Entity type and ID (what was changed)
- Timestamp (when, precise to milliseconds)
- Full details (specific values changed)
- IP address (optional, if tracked)
✓ Bank-Grade Security
Mkutano uses enterprise-level security practices with database-level access control, complete audit trails, and secure authentication.
Deployment & Versioning
Current Version
- Version: 0.1.0
- Status: Beta (Production Ready)
- Release Date: February 22, 2026
Deployment Environments
| Environment |
URL |
Deployment |
| Production |
mkutano-app.vercel.app |
Auto-deployed from main branch |
| Development |
localhost:3000 |
Local development server |
Build Output
- Total Routes: 33 in production
- Public Pages: 6 (landing, benefits, contact, faqs, news, login, signup)
- Dashboard Pages: 20+ (secretary/member/ngo/admin views)
- Enterprise Pages: 3 (landing, ngo-login, mfi-login)
- Bundle Size: 87.3 kB shared + route-specific 4-150 kB
Browser Support
| Browser |
Support |
| Chrome/Chromium |
✅ Full support |
| Firefox |
✅ Full support |
| Safari (iOS 13+) |
✅ Full support |
| Edge |
✅ Full support |
Recent Changes
Latest Commit: 4f232a0 (Feb 22, 2026)
- Added
/dashboard/ngo root page with program overview
- Added
/dashboard/mfi root page with lending portfolio KPIs
- Fixed 404 errors for enterprise login flows
- Integrated NGO and MFI mock data
Previous Notable Commits
- 6aa0d8b: Enterprise Edition foundation (login pages, navigation)
- ee203e9: Fixed logout session management
- 790adc8: Removed shares concept across entire app
Summary
Mkutano is a comprehensive platform for managing village savings and loan associations with strong offline-first capabilities, enterprise-grade security, and an intuitive interface. The system supports both community groups (VSLA) and enterprise partners (NGO/MFI) through role-based access control and specialized dashboards.
Key Strengths
- ✓ Offline-first architecture - Works anywhere, anytime
- ✓ PWA installable - Mobile & desktop app-like experience
- ✓ Complete audit trail - Full accountability
- ✓ Multi-platform - Community + Enterprise support
- ✓ Auto-deployment - Continuous integration from GitHub
- ✓ Progressive enhancement - Works in any modern browser
- ✓ Responsive design - Mobile, tablet, desktop
- ✓ Demo-ready - Test without signup
Getting Started Today
Visit: https://mkutano-app.vercel.app
Login with demo credentials:
- Phone:
+254700000001 (Community Secretary)
- Or Enterprise portals:
/enterprise/ngo-login or /enterprise/mfi-login
For More Information
See specific documentation files in the project root:
- README.md - Quick start guide
- DATABASE_SCHEMA.md - Complete database design
- PWA_SETUP.md - Progressive web app details
- NGO_PORTAL_DOCUMENTATION.md - Enterprise features
© 2026 Dig Software. Mkutano — Empowering Village Savings Communities.
For technical support, visit github.com/dig-software/MKUTANOAPP