A multi-tenant school management ecosystem built with Flutter, Cloudflare Workers, and Next.js. Designed for schools in Ghana and beyond — handles student admissions, teacher management, finance/fees, academic grading, attendance tracking, and parent communication.
# YFT School System
**Multi-tenant school management platform** — Flutter clients (mobile, web, desktop), a **Cloudflare Workers** API on the edge, and a **Next.js** super-admin console. Built as a portfolio-grade full-stack system with explicit **tenant isolation**, **JWT auth**, and **defense-in-depth** API design.
**Repository:**
github.com
---
## Why this project
If you’re reviewing this repo as a hiring manager or tech lead, here is what it is meant to demonstrate:
| Focus | How it shows up in the codebase |
|--------|--------------------------------|
| **Full-stack ownership** | End-to-end flows: auth → API → SQL → UI across Dart, TypeScript, and React. |
| **Multi-tenant SaaS** | Shared D1 database with `school_id` on every tenant row; middleware enforces context. |
| **Edge & serverless** | Hono on Cloudflare Workers, D1, R2, parameterized SQL, no long-lived servers. |
| **Mobile + web** | One Flutter codebase targeting multiple platforms with a coherent design system. |
| **Security awareness** | JWT verification, role guards, Zod validation, CORS allowlists, safe file handling — not just “happy path” CRUD. |
| **Operability** | Migrations, Wrangler, env separation, scripts for super-admin bootstrap. |
---
## Overview
Designed for real school operations: **admissions**, **classes & subjects**, **fees and arrears**, **academic calendar**, **attendance & grading surfaces**, **parent wards and receipts**, and **super-admin school onboarding** (branding, defaults, admin provisioning).
**Geography / context:** Conceived with Ghanaian schools in mind (currency, fee cycles, terminology), but the architecture is region-agnostic.
---
## Architecture
```
┌──────────────────┐ ┌──────────────────────┐ ┌──────────────────┐
│ Flutter App │────▶│ Cloudflare Worker │◀────│ Super Admin │
│ (Mobile / Web / │ │ (Hono + TypeScript) │ │ (Next.js 16) │
│ Desktop) │ │ …