Back to Projects
Web App

SQLearn

A student–teacher MySQL practice platform with instant query feedback and progress tracking

Project View

Overview

This was an industry-sponsored project with British Columbia Institute of Technology, built from scratch by our five-person team for a British Columbia Institute of Technology database instructor as the client. The goal was to create a reliable way for students to practice MySQL while giving the instructor clear visibility into student progress and common mistakes.

The previous workflow relied on students following instructions and submitting screenshots, which made it difficult to verify authentic work and impossible to analyze class-wide learning patterns. Existing online SQL practice platforms provide instant feedback, but they typically do not support instructor-created question sets or classroom-level tracking. We designed and implemented a tailored system that supports real teaching workflows, student practice, and measurable progress over time.

Key Features

  • Instructor-created MySQL problems
  • Classes and lessons management
  • Instant query feedback
  • Rendered result tables
  • Student progress tracking
  • SQL keyword auto-complete

Tech Stack

Challenge

The hardest part was safely supporting student-written SQL. If practice data shared the same database as the application, destructive queries could break tables or corrupt core data, creating major stability and security risks.

We also had to design a large ERD that matches real teaching workflows. Supporting users, classes, lessons, problems, attempts, and analytics expanded into more than 20 tables and required careful relationship design to stay maintainable.

Solution

We separated the platform into two databases, an administrative database for application data such as accounts, classes, lessons, problems, and progress, and a sandbox database dedicated to executing student queries. This isolation protected core data while keeping the practice experience realistic.

We stored practice database blueprints, meaning table structures and seed data definitions, in the administrative database as the source of truth. The intended next step is automated regeneration or repair of sandbox tables from these blueprints if tables are modified or dropped, and we shipped with pre-provisioned question databases due to time constraints.

We implemented a query evaluation pipeline that executes SQL against the sandbox database and returns either rendered results or structured feedback, and we added SQL keyword auto-complete to reduce syntax friction and speed up practice.