Offline Ghana school sytem
# offline_School
Offline-first school management system for Ghana schools.
> **Stack:** Flutter Desktop (Windows) · Flutter Mobile · React Web · NestJS Backend · PostgreSQL · SQLite · Redis
---
## Repository structure
```
offline_School/
├── apps/
│ ├── desktop_app/ # Flutter Windows desktop (primary operations client)
│ ├── mobile_app/ # Flutter mobile (teacher + parent workflows)
│ ├── web_app/ # React web (management dashboards)
│ └── saas_admin/ # React SaaS admin panel
├── backend/ # NestJS modular monolith API
├── packages/ # Shared Dart/TypeScript packages
├── scripts/ # Developer setup and build scripts
├── infra/ # Docker, CI, deployment configs
└── docs/ # Architecture and delivery documentation
```
---
## Prerequisites
| Tool | Minimum version | Install |
|------|----------------|---------|
| Node.js | 20 LTS |
nodejs.org |
| npm | 10 | bundled with Node.js |
| Flutter | 3.19+ |
flutter.dev |
| Docker Desktop | 24+ |
docker.com |
| Git | 2.40+ |
git-scm.com |
---
## Quick start (all workspaces)
Run the setup script once after cloning:
```bash
# macOS / Linux
bash scripts/dev-setup.sh
# Windows (PowerShell or Command Prompt)
scripts\dev-setup.bat
```
This installs all dependencies and verifies your environment.
---
## Starting individual workspaces
### Backend
```bash
cd backend
cp .env.example .env # fill in your local PostgreSQL + Redis URLs
npm install
npm run migration:run # run DB migrations
npm run seed:roles # create/update the bootstrap admin user
npm run start:dev # starts on
localhost
# health check: curl
localhost
```
If you stay at the repository root, use `npm --prefix backend ...` for these commands instead of `npm run ...`.
If the default admin login does not work, confirm `migration:r …