SMART LIFE - money and time management for Rwandan students and youth. Node/Express + PostgreSQL API, Next.js web, Flutter mobile.
# SMART LIFE
**Stop spending, start saving.**
SMART LIFE is a mobile- and web-based application that helps Rwandan students and
youth manage **money and time** in one place. It tracks income and expenses, enforces
savings goals, automatically blocks electronic payments when a user passes their
spending limit, limits social-media / screen time, and uses a **peer & parental
approval** system to unlock those limits. An analytics dashboard tracks progress on
financial and time goals.
This repository is the implementation of the SMART LIFE Software Requirements
Specification (SRS v1.0, Gilbert NTIVUNWA, ALU).
---
## Stack
| Layer | Tech |
| ------------------ | ----------------------------------------------------------- |
| Backend / API | Node.js + Express + TypeScript |
| Database | PostgreSQL (via Prisma ORM) - **no Supabase** (SRS section 2.5) |
| Auth | JWT access/refresh tokens, bcrypt password hashing |
| Website | Next.js 15 (App Router) + TypeScript + Tailwind |
| Mobile (iOS/And) | Flutter (Android v10+ / iOS) |
| External providers | MTN MoMo, Airtel Money, Bank, OS screen-time, Google Calendar - behind an **adapter layer** with sandbox/mock implementations |
> **Why mock the external providers?** Mobile-money, bank, and OS screen-time APIs
> require commercial partnerships, signed agreements, and production credentials that
> are not available for a student build. Every external integration sits behind a
> provider interface (`backend/src/providers/`) so the **business logic is real and
> fully testable**, and the sandbox implementations can be swapped for live SDKs once
> credentials exist. See docs/INTEGRATIONS.md.
---
## Repository layout
```
saving-app/
+-- backend/ Node.js + Express + Prisma API (PostgreSQL)
+-- web/ Next.js website - user + ad …