How chutungduongg/ielts_self_practising_web works
BandPilot is an IELTS practice and classroom platform. Learners choose a skill or full mock, complete timed attempts, and review results; teachers assign frozen test versions and inspect assignment-scoped results. Separate AI workflows provide advisory writing and speaking feedback. The README documents these capabilities, while excerpts show API routing, application startup, and speaking worker behavior. Several UI-to-API and unsampled feature links are therefore omitted rather than inferred.
Main entry points: router.py API router · main.py FastAPI runtime · skill-practice.tsx Practice workflows · speaking_ai_worker.py Speaking AI scoring
Components 28
Practice and Review
- Web application
frontend/src/app - Practice workflows
frontend/src/features/practice/skill-practice.tsx - Reading runner
frontend/src/features/reading/reading-runner.tsx - Listening runner
frontend/src/features/listening/listening-runner.tsx - Speaking runner
frontend/src/features/speaking/speaking-runner.tsx - Writing review
frontend/src/features/writing/writing-review.tsx - Attempt lifecycle API
backend/app/api/v1/attempts.py - Attempt management
backend/app/services/attempts.py - Reading API
backend/app/api/v1/reading.py - Speaking API
backend/app/api/v1/speaking.py - Writing API
backend/app/api/v1/writing.py - History and analytics
backend/app/api/v1/analytics.py
Classrooms and Governance
- Classroom workflows
frontend/src/features/classrooms - Classroom APIs
backend/app/api/v1/classroom_assignments.py - Content governance
backend/app/api/v1/content_governance.py - Test transfer
backend/app/api/v1/transfer.py
AI Assessment
- Writing AI assessment
backend/app/services/writing_ai_worker.py - Speaking transcription
backend/app/services/speaking_transcript_worker.py - Speaking AI scoring
backend/app/services/speaking_ai_worker.py - Speaking ASR provider
backend/app/providers/speaking_asr/modal.py - Modal AI services
deploy/modal/app.py
Application Platform
- API router
backend/app/api/v1/router.py - FastAPI runtime
backend/app/main.py - PostgreSQL
backend/app/core/database.py - Asset storage
backend/app/storage/factory.py
Other components
- Learner
- Teacher
- Administrator
Connections 29
- Learner → Web application: uses
- Teacher → Web application: uses
- Administrator → Web application: uses
- Learner → Practice workflows: starts practice
- Practice workflows → Reading runner: selects skill
- Practice workflows → Listening runner: selects skill
- Practice workflows → Speaking runner: selects skill
- Learner → Writing review: reviews writing
- API router → Attempt lifecycle API: registers
backend/app/api/v1/router.py - API router → Reading API: registers
backend/app/api/v1/router.py - API router → Speaking API: registers
backend/app/api/v1/router.py - API router → Writing API: registers
backend/app/api/v1/router.py - API router → Classroom APIs: registers
backend/app/api/v1/router.py - API router → Content governance: registers
backend/app/api/v1/router.py - API router → Test transfer: registers
backend/app/api/v1/router.py - FastAPI runtime → API router: mounts
backend/app/main.py - Attempt lifecycle API → Attempt management: delegates
backend/app/api/v1/attempts.py - FastAPI runtime → Speaking transcription: recovers worker
backend/app/main.py - FastAPI runtime → Speaking AI scoring: recovers worker
backend/app/main.py - FastAPI runtime → Asset storage: initializes
backend/app/main.py - Speaking transcription → Speaking ASR provider: requests transcription
backend/app/services/speaking_transcript_worker.py - Speaking AI scoring → Speaking transcription: uses transcript
backend/app/services/speaking_ai_worker.py - Speaking AI scoring → Modal AI services: uses model service
- Writing AI assessment → Modal AI services: uses model service
- Teacher → Classroom workflows: manages classes
- Classroom workflows → Classroom APIs: uses classroom APIs
- Administrator → Content governance: reviews content
- PostgreSQL → FastAPI runtime: provides sessions
backend/app/core/database.py - Learner → History and analytics: tracks progress