A comprehensive web application for tracking GCSE exam preparation progress, built with Django and powered by Anthropic's Claude AI for personalised learning roadmaps.
GCSE Progress Tracker helps students monitor their academic progress, set goals, and receive AI-powered personalized study recommendations. The application supports students and parents with role-specific dashboards.
For Students
- 📊 Progress dashboard with analytics (study streak, hours, completion %)
- 🤖 AI-powered personalised study roadmaps using Claude AI
- 📝 Subject management for all GCSE subjects
- 🎯 Term goal setting with deadline tracking
- 📚 Study session logging
- ✅ Interactive checklists with real-time progress
- 📈 Visual analytics with charts and graphs
For Parents
- 👨👩👧 Multi-student monitoring dashboard
- 🔔 Smart alerts (low activity, goals at risk, milestones, etc.)
- 📧 Email notifications with digest options
- 📊 Detailed progress views for each child
- 📜 Alert history with filtering
- Python 3.13.5 or higher
- pip (Python package manager)
- PostgreSQL (for production) or SQLite (for development)
- Anthropic API key (get one here)
-
Clone the repository
git clone https://github.com/yourusername/gcse-progress-tracker.git cd gcse-progress-tracker -
Create and activate a virtual environment
python -m venv venv # On Windows venv\Scripts\activate # On macOS/Linux source venv/bin/activate
-
Install dependencies
pip install -r requirements.txt
-
Set up environment variables
cp .env.example .env
Edit
.envand add your configuration:SECRET_KEY=your-secret-key-here DEBUG=True ANTHROPIC_API_KEY=your-anthropic-api-key ALLOWED_HOSTS=localhost,127.0.0.1
-
Run migrations
python manage.py migrate
-
Create a superuser
python manage.py createsuperuser
-
Create demo users (optional)
python manage.py create_demo_users
-
Run the development server
python manage.py runserver
-
Access the application
- Open your browser and go to
http://127.0.0.1:8000 - Admin panel:
http://127.0.0.1:8000/admin
- Open your browser and go to
gcse-progress-tracker/
├── config/ # Project configuration
│ ├── settings.py # Django settings with environment variables
│ ├── urls.py # Root URL configuration
│ └── wsgi.py # WSGI configuration
├── tracker/ # Main application
│ ├── models.py # Database models (11 models)
│ ├── views.py # Views (35+ views)
│ ├── forms.py # Forms (7 forms)
│ ├── urls.py # App URL patterns
│ ├── ai_service.py # Claude AI integration
│ ├── alerts.py # Alert generation system
│ ├── admin.py # Admin interface customisation
│ ├── migrations/ # Database migrations (6 migrations)
│ ├── management/commands/ # Custom management commands
│ ├── templates/tracker/ # HTML templates (20+ templates)
│ ├── static/tracker/ # Static files (CSS, JS)
│ └── tests/ # Test files (11 test modules)
├── manage.py # Django management script
├── requirements.txt # Python dependencies
├── .env.example # Environment variables template
├── README.md # This file
└── DEPLOYMENT.md # Deployment guide
The application uses 11 core models organized into logical groups:
- UserProfile: Extends Django User with role (student/parent), full name, year group, alert preferences
- Subject: GCSE subjects (maths, english, science, etc.)
- Feedback: Teacher assessments with strengths, weaknesses, areas to improve
- TermGoal: Current level → target level with deadline tracking
- StudySession: Log study time with notes
- Roadmap: AI-generated study plan with title and overview
- RoadmapStep: Individual steps with category, difficulty, estimated hours
- ChecklistItem: Granular tasks with completion tracking
- Resource: Study materials (video/article/exercise)
- ProgressAlert: 6 alert types with severity levels and preferences
- Backend: Django 6.0, Python 3.13.5
- Database: PostgreSQL (production), SQLite (development)
- AI: Anthropic Claude API (claude-sonnet-4-20250514)
- Frontend: HTML5, CSS3, JavaScript (Chart.js for visualizations)
- Deployment: Render.com with WhiteNoise for static files
| Variable | Description | Required | Default |
|---|---|---|---|
SECRET_KEY |
Django secret key | Yes | - |
DEBUG |
Debug mode | No | False |
ANTHROPIC_API_KEY |
Claude AI API key | Yes | - |
ALLOWED_HOSTS |
Comma-separated list of allowed hosts | Yes | - |
DATABASE_URL |
PostgreSQL connection string | Production | - |
EMAIL_HOST |
SMTP server | Optional | - |
EMAIL_PORT |
SMTP port | Optional | 587 |
EMAIL_HOST_USER |
SMTP username | Optional | - |
EMAIL_HOST_PASSWORD |
SMTP password | Optional | - |
DEFAULT_FROM_EMAIL |
From email address | Optional | - |
After running python manage.py create_demo_users, you can log in with:
Student Account
- Username:
student_brother - Password:
password123
Parent Account
- Username:
parent_mum - Password:
password123
# Create demo users
python manage.py create_demo_users
# Load sample data (subjects, feedback, goals, sessions, roadmaps)
python manage.py load_sample_data
# Send progress alerts to parents (use --dry-run to test)
python manage.py send_progress_alerts [--dry-run]Run tests with:
# Run all tests
python manage.py test
# Run specific test file
python manage.py test tracker.tests.test_models
# Run with coverage report
coverage run --source='.' manage.py test
coverage reportTest Coverage: 150+ test cases, ~85% coverage
- CSRF protection on all forms
- Secure password hashing with Django's default PBKDF2
- Role-based access control
- SQL injection protection via Django ORM
- XSS protection with template auto-escaping
- HTTPS enforcement in production
- Secure session cookies
This project is licensed under the MIT License - see the LICENSE file for details.
- Anthropic: For providing the Claude AI API
- Django: For the excellent web framework
- Render: For easy deployment and hosting
- Documentation: See DEPLOYMENT.md for deployment help
- Issues: Open an issue on GitHub