|
Build and Push Docker Images / deploy (push) Blocked by required conditions
Details
Build and Push Docker Images / build (musicseerr) (push) Failing after 11m41s
Details
Build and Push Docker Images / build (api) (push) Failing after 12m5s
Details
Build and Push Docker Images / build (nextgen) (push) Failing after 11m45s
Details
Build and Push Docker Images / build (web) (push) Failing after 11m29s
Details
Build and Push Docker Images / build (worker) (push) Failing after 10m11s
Details
|
||
|---|---|---|
| .. | ||
| .gitea/workflows | ||
| .harness | ||
| client | ||
| demo | ||
| docs | ||
| evidence | ||
| logo | ||
| scripts | ||
| server | ||
| sql | ||
| tools | ||
| .env.example | ||
| .gitignore | ||
| AGENTS.md | ||
| DATABASE_SCHEMA.md | ||
| DOCKER_README.md | ||
| Dockerfile | ||
| GEMINI.md | ||
| IMPLEMENTATION_SUMMARY.md | ||
| ISSUES.md | ||
| README.md | ||
| SCREENS.md | ||
| datacontrol.md | ||
| deliverable.md | ||
| docker-compose.yml | ||
| docker-entrypoint.sh | ||
| modals.md | ||
| new_table.txt | ||
| package-lock.json | ||
| pr-resp.json | ||
| qa-testing-uat-plan.md | ||
| tea.exe | ||
README.md
Africa Alert - Smart School PWA
Modern React PWA school management system with Node.js backend, containerized for easy Docker deployment.
Features
- 📱 Progressive Web App - Installable on any device, works offline
- 🐳 One-Click Docker Setup - Single
docker-compose upto get started - 👨🎓 Student Management - Enrollment, profiles, attendance
- 👩🏫 Teacher Management - Staff profiles, assignments
- 📚 Class Management - Subjects, schedules, grading
- 💰 Fee Management - Invoices, payments, reporting
- 📊 Dashboard - Real-time analytics and insights
Quick Start
# Clone and start
cd africa-alert-pwa
docker-compose up -d
# Access the app at http://localhost:3000
Tech Stack
- Frontend: React 18 + Vite + TypeScript
- Backend: Node.js + Express
- Database: SQLite (file-based, easy backups)
- Container: Docker + Docker Compose
Project Structure
africa-alert-pwa/
├── client/ # React frontend
├── server/ # Node.js backend
├── docker-compose.yml
├── Dockerfile.client
└── Dockerfile.server
Development
# Frontend (client folder)
cd client && npm install && npm run dev
# Backend (server folder)
cd server && npm install && npm run dev
# Docker
docker-compose up --build
Default Login
- Admin: admin@school.com / admin123
Production deployment security checklist
Before going live, ensure every item below is set. The server will refuse to start in production (NODE_ENV=production) if any of the required items are missing.
NODE_ENV=productionis set in the environmentJWT_SECRETis set to a 48-byte random value. Generate one with:node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"ALLOWED_ORIGINSis set to the school domain only (comma-separated if multiple). Example:ALLOWED_ORIGINS=https://school.example.comDB_PATHpoints to a persistent volume mount, not./data/school.dbin a transient containerALLOW_CLIENT_OFFLINE_MINTis set tofalseunless you specifically need offline auth. The dev default istrueso the offline flow can be tested.- PAYNOW_* env vars are set if the school is collecting fees. Sync will no-op without
SUPABASE_*env vars. - No
.envfile is committed to git. The repo's.gitignorecovers it. - A SQLite backup cron is running (every 12h) to defend against power-loss corruption during load-shedding
- The Docker compose mounts
data/,uploads/, andbackups/as named volumes, not bind mounts
Environment variables reference
See server/.env.example for the full list with comments. The required-in-prod set is enforced by server/src/config/index.js — the server crashes with a FATAL log line if any are missing.