ESOL Quiz Platform (LMS)
Full-stack learning management system with auto-graded verb conjugation quizzes
The Problem
Google Forms could handle verb conjugation assessments but was time-consuming and frustrating to create, lacking the specific features needed for effective ESOL instruction. Manual grading of 50+ student submissions with 6-8 fields each took significant time weekly.
Specific Pain Points
- Complex form creation: Google Forms was time-consuming and frustrating to set up for multi-field verb conjugation assessments
- Time-consuming grading: Manually grading dozens of submissions took significant time weekly
- Delayed feedback: Students waited days to see their results, reducing learning effectiveness
- No progress tracking: Hard to identify which students needed extra support
The Solution
Full-stack quiz platform with Python/Flask backend using JSON for quiz content and CSV for results storage. 14-week progressive curriculum with 5 irregular verbs per week. Student interface features 5-field text input (base form, 3rd person, -ing form, past simple, past participle) with instant auto-grading. Teacher dashboard provides score tracking and class analytics.
Key Features
Auto-Graded Quizzes
Multi-field text input for verb conjugations with instant feedback and scoring
Teacher Dashboard
Real-time view of student progress, scores, and completion rates
Student Portal
Clean interface for taking quizzes and viewing past results
Progress Analytics
Track learning trends and identify students who need support
Screenshots & Walkthrough
Quiz homepage showing all available quizzes for students
Student quiz interface with multi-field verb conjugation exercises
Auto-grading in action with immediate scoring and feedback
Teacher Dashboard
Coming soonTeacher dashboard with student progress tracking (screenshot pending data anonymization)
Technical Implementation
Architecture Decisions
I chose Flask for its simplicity and Python's string processing capabilities, which are essential for comparing student answers to correct verb conjugations.
Backend (Python/Flask)
- JSON-based quiz content storage for easy modification and version control
- CSV results tracking with automatic file creation
- Custom grading logic that handles conjugation variations
- Password-protected teacher dashboard with environment variable security
- Class statistics and week-by-week analytics with CSV export
Frontend
- Jinja2 templating for dynamic quiz generation
- Vanilla JavaScript for form handling and instant feedback
- Responsive CSS with Google Fonts (Poppins)
- Clean, accessible interface for adult learners
Interesting Challenges
Challenge: Flexible Answer Matching
Student answers might have extra spaces, capitalization differences, or minor typos. I needed grading logic that was strict enough to be accurate but forgiving enough to handle common input variations.
Solution: Built a normalization system that strips whitespace, converts to lowercase, and compares against multiple acceptable answer formats.
Challenge: Data Storage Without a Database
I needed persistent storage for student results but wanted to avoid database overhead on PythonAnywhere's free tier. The solution had to be simple to deploy and easy to back up.
Solution: Used JSON for quiz content (easy to edit and version control) and CSV for student results (automatic creation, simple export for record-keeping, and readable in Excel for teachers).
Development Process
What I Built First
Started with a basic quiz form and manual grading to validate the concept with students. Once I confirmed they understood the interface, I built the auto-grading logic.
User Testing & Iteration
- Round 1: Students confused by multi-page forms → simplified to single-page layout
- Round 2: Unclear error messages → added specific feedback (e.g., "Check your spelling of 'running'")
- Round 3: Students wanted to review past quizzes → added results history page
Additional Features I'd Like to Add
I'd enhance the platform with spaced repetition algorithms to help students practice verbs they struggle with, plus add progress analytics showing which verb forms need more practice. I'd also implement batch quiz creation tools to reduce teacher setup time.
Results & Impact
Lessons Learned
Build for your users, not for yourself
I initially built complex features that I thought were cool, but my students just wanted a simple quiz that worked. Simplicity won.
Test early and often
Every time I assumed I knew what students wanted, I was wrong. Watching them use the app in real time revealed issues I never anticipated.
Perfect is the enemy of done
I shipped version 1 with basic features and iterated based on feedback. If I'd waited for "perfect," students would still be using Google Forms.