Logo Lanfrica

Pakanderson/GFIS-school-system

Domaine:

educationdigital infrastructure

Type de record:

software
Créateur:
Pak
Hôte:
Full-stack relational database and web backend designed to manage student records, staff operations, and administrative workflows for Good Foundation International School in Nsawam, Ghana. # GFIS School Management System A school management system for **GOOD FOUNDATION INTERNATIONAL SCHOOL - NSAWAM** (Ghana), covering admissions, academics (scores, grading, attendance), fees, report cards, and a public, no-login parent lookup portal — built to keep working well on slow or intermittent internet. Stack: Django 6 + PostgreSQL (SQLite for local dev), Django templates + HTMX (no JS framework), Django's built-in auth extended with a `role` field for access control. ## Contents - Requirements - Local setup - Seed / demo data - Running the app - Running tests - Project structure - Roles & access control - Deployment - Cloud deployment - On-premises (school office) deployment - Low-bandwidth design notes ## Requirements - Python 3.12+ - PostgreSQL 14+ (production only — local dev uses SQLite by default) ## Local setup ```bash # 1. Create and activate a virtual environment python -m venv venv source venv/Scripts/activate # Windows (Git Bash) / macOS / Linux: source venv/bin/activate # 2. Install dependencies pip install -r requirements-dev.txt # includes requirements.txt plus test tooling # 3. Configure environment cp .env.example .env # Generate a real secret key and paste it into .env: python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())" # 4. Run migrations python manage.py migrate # 5. Create your own super admin (or use the seeded "admin" account below) python manage.py createsuperuser ``` By default `.env` sets `DJANGO_SETTINGS_MODULE=config.settings.dev`, which always uses a local `db.sqlite3` file regardless of `DATABASE_URL` — no PostgreSQL install needed to start developing. ## Seed / demo data To load the 13 class levels, the NaCCA/GES subject list, and a full demo dataset (one staff account per role, ~65 students spread across classes with guardians, scores, attendance, payments, and parent-lookup PINs): ```bash python manage.py seed_demo_data ``` This is idempotent — re-ru …