Africa's first Setswana-first Montessori school management platform
# Montessori Mafikeng Connect
**A culturally-relevant, Montessori-aligned school management platform for African Montessori schools**
---
## 🦁 African Sovereignty Focus
Built in Africa, for Africa. This project demonstrates African tech sovereignty in education with:
- Setswana language integration (local language first, English second)
- African hosting (AWS Cape Town)
- Cultural relevance in design
- Cost-effective for African schools
## 🎯 Core Philosophy
### Montessori Philosophy First
- Individual progress tracking (not standardized testing)
- Observation-based assessment (not traditional grading)
- Mixed-age classroom support (3-year age spans)
- Work cycle documentation (2-3 hour uninterrupted periods)
- Practical life skills tracking
### African Context Design
- **Mobile-first PWA** - 95% of users access via smartphone
- **Offline-first architecture** - Works without constant internet
- **Setswana language priority** - Local language first, English second
- **Low data usage** - Optimized for limited data plans
- **SMS integration** - Critical notifications via SMS (Africa's Talking API)
## 🚀 Project Status
**Phase 1: Foundation** ✅ **IN PROGRESS**
- [x] Project structure setup
- [x] Frontend foundation (React + TypeScript + Vite + Chakra UI)
- [x] PWA setup with offline capabilities
- [x] Setswana/English i18n integration
- [x] Backend foundation (Node.js + Express + Prisma)
- [x] Database schema design
- [ ] Authentication system
- [ ] Offline sync infrastructure
- [ ] Basic user management
## 🛠️ Technology Stack
### Frontend (PWA)
- **Framework:** React 18 + TypeScript
- **Build Tool:** Vite
- **UI Library:** Chakra UI (African-inspired design)
- **State Management:** React Query + Zustand
- **Offline Support:** Dexie.js + Service Workers
- **Internationalization:** i18next (Setswana/English)
- **Testing:** Jest + Cypress
### Backend
- **Runtime:** Node.js + Express
- **Database:** PostgreSQL + Prisma ORM
- **Cache:** Redis
- **File Storage:** A …