This workspace includes:
- β Django backend (DRF) with auth, exams, attempts, admin controls
- β React frontend (Vite + Tailwind) with student/teacher/admin dashboards
- β Structured workflow support (uploads + teacher grading where applicable)
- Backend admin: http://127.0.0.1:8000/admin
- Frontend dev server: http://127.0.0.1:5173
Client requirement + implementation plan is documented here:
docs/TEACHER_GUIDED_ASSIGNMENT_SYSTEM_PRODUCTION.md
- π¨ Apple-level UI: Dark theme with gradient accents, micro-interactions
- π Smart Analytics: Streak tracking, topic performance, leaderboards
- π€ Auto-grading: Instant MCQ grading with teacher override for descriptive
- π± Fully Responsive: Perfect on mobile, tablet, and desktop
- π Production Ready: Docker, CI/CD, monitoring, and load testing configured
- Interactive Test Engine: Timed exams with auto-submit
- Performance Dashboard: Track progress, streaks, and topic mastery
- Detailed Analytics: See strengths and weaknesses at a glance
- Leaderboards: Weekly rankings to stay motivated
- Badge System: Unlock achievements for milestones
- Exam Management: Create and organize tests by topic
- Grading Queue: Review and grade descriptive answers
- Bulk Upload: Import questions via CSV with validation
- Student Analytics: Monitor class performance and trends
- PDF Uploads: Attach evaluated answer sheets
- User Management: Bulk operations on students and teachers
- Content Control: Manage topics, questions, and exams
- System Monitoring: Health checks and error tracking
- Analytics Dashboard: System-wide performance metrics
- Windows:
quick-start.ps1 - Linux/macOS:
quick-start.sh
python manage.py migrate
python manage.py runservercd frontend
npm install
npm run devdocker-compose -f docker-compose.yml up -d --buildAdmin Panel: http://127.0.0.1:8000/admin
Login Credentials:
- Email:
admin@test.com - Password:
Mentra@2027
- View Users - See all 13 demo users (1 admin, 1 teacher, 11 students)
- Manage Topics - 9 Physics topics (Mechanics, Waves, etc.)
- Browse Exams - 6 exams with 49 questions
- Check Attempts - 24 test attempts from students
- CRUD Operations - Create/Read/Update/Delete all data
- Student:
student1@demo.com/Demo@123 - Teacher:
teacher@demo.com/Demo@123
- If you deploy on a free platform with ephemeral storage (e.g., free Render tier), uploaded media may disappear. For stable uploads use S3/R2/B2-style object storage.
- For production setup guidance see
DEPLOYMENT.md.
IB_Django/
βββ accounts/ # User authentication & profiles
βββ dashboard/ # Student & teacher dashboards
βββ exams/ # Core exam engine & API
βββ quizzes/ # Legacy quiz module
βββ questionpapers/ # Question paper management
βββ frontend/ # React frontend application
β βββ src/
β β βββ pages/ # Dashboard, grading, test pages
β β βββ styles/ # Apple-inspired CSS
βββ ib_project/ # Django project settings
βββ media/ # User uploads (answers, PDFs)
βββ static/ # Static assets
βββ templates/ # Django templates
βββ .github/ # CI/CD workflows
βββ docker-compose.yml # Multi-service orchestration
βββ Dockerfile # Backend container
βββ requirements.txt # Python dependencies
- Background:
#0B0B0D(Deep black) - Surface:
#1A1A1F(Elevated black) - Primary:
#7CE7FF(Cyan gradient start) - Accent:
#00C2A8(Teal gradient end) - Text:
#E5E5E7(Off-white)
- Headings: SF Pro Display / Inter
- Body: -apple-system, BlinkMacSystemFont, 'Segoe UI'
- Grid: 12px base unit
- Border Radius: 16px (cards), 8px (buttons)
- Spacing: Multiples of 12px
- Animations: 0.3s ease-out
- Framework: Django 5.2.6
- API: Django REST Framework
- Auth: SimpleJWT with token blacklist
- Database: PostgreSQL (prod), SQLite (dev)
- Cache: Redis
- Task Queue: Celery (future enhancement)
- Framework: React 18
- Build: Vite
- Styling: Vanilla CSS with design tokens
- State: React hooks
- Routing: React Router (to be integrated)
- Containerization: Docker + Docker Compose
- Web Server: Nginx
- WSGI: Gunicorn
- CI/CD: GitHub Actions
- Monitoring: Health checks, Sentry integration
- Load Testing: k6
- Deployment Guide: Production setup and maintenance
- Load Testing Guide: Performance testing with k6
- Project Status: Current progress and roadmap
- API Documentation: Endpoint reference (to be created)
- TeacherβGuided Assignment System: Client requirements + implementation plan
python manage.py test
pytest # With coveragek6 run load-test.jscd frontend
npm run test:e2e- Set environment variables in
.env - Build and deploy:
docker-compose -f docker-compose.yml up -d
- Run migrations:
docker-compose exec backend python manage.py migrate docker-compose exec backend python manage.py collectstatic --noinput
- Create admin user:
docker-compose exec backend python manage.py createsuperuser
See DEPLOYMENT.md for:
- AWS/DigitalOcean/GCP setup
- SSL certificate configuration
- CI/CD pipeline setup
- Monitoring and logging
- β JWT authentication with refresh tokens
- β Password reset with secure tokens
- β Email verification on registration
- β Rate limiting on auth endpoints (5/hour)
- β HTTPS enforced in production
- β CSRF protection enabled
- β XSS and SQL injection prevention
- β Secure headers (HSTS, X-Frame-Options)
- Target: 100 concurrent users
- Response Time: p95 < 500ms
- Throughput: 200+ req/s
- Error Rate: < 1%
- Database query optimization with select_related
- Redis caching for frequently accessed data
- Nginx static file caching
- Compressed assets with WhiteNoise
- CDN-ready for media files (S3 compatible)
This is a client project. For internal development:
- Create feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Create Pull Request
Proprietary - Copyright 2025 Mentara
- Apple Design Language for inspiration
- Django and React communities
- All open-source contributors
For deployment support or questions:
- Email: support@mentara.com
- Documentation: See
docs/folder - Issues: Internal issue tracker
Made with β€οΈ for Physics Students