← Back to Projects

ESOL Quiz Platform (LMS)

Full-stack learning management system with auto-graded verb conjugation quizzes

Role: Full-Stack Developer
Timeline: 2025
Users: 50+ ESOL students
Status: Active
Python Flask Jinja2 JSON/CSV HTML/CSS JavaScript

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

ESOL LMS Quiz Homepage

Quiz homepage showing all available quizzes for students

ESOL LMS Student Quiz Interface

Student quiz interface with multi-field verb conjugation exercises

ESOL LMS Auto-Grading

Auto-grading in action with immediate scoring and feedback

Teacher Dashboard

Coming soon

Teacher 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

~1 hour
Grading time saved per week
50+
Students using weekly
18 weeks
Curriculum deployment

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.