Role
Solo Full-Stack Developer
Year
2026
Tech Stack
12 Technologies
Status
Completed
Overview
Running a language school online means juggling enrollment payments, class scheduling, teacher assignment, grade tracking, and parent communication across five different tools. MyLanguagePlayground is a single platform that handles all of it — from Stripe enrollment payments to automatic class group formation, curriculum-driven session scheduling, a native in-app classroom with homework, quizzes, grading, and PDF certificates, plus dedicated portals for parents, teachers, and admins. Built solo across 25 database models and 5 documented build phases.
The Problem
Running a language school online is a coordination nightmare. Operators need to collect payments, assign students to teachers, schedule recurring classes, deliver lessons, track attendance and grades, send class reminders, issue certificates, and communicate with parents — all without a single platform built for this. Most schools stitch together Stripe, Google Classroom, spreadsheets, and WhatsApp groups. MyLanguagePlayground replaces the whole stack.
Screenshots

Challenges
Designing an enrollment flow that automatically assigns a teacher, places the student in the right class group, generates all curriculum sessions, and sends a receipt — all triggered by a single Stripe webhook.
Building a native in-app classroom to replace a planned Google Classroom integration after discovering that Google's OAuth scope verification requirements for Calendar and Classroom APIs were too slow to ship around.
Implementing an invisible grouping system that silently bins students into classes of up to 10 without parents ever managing groups — filling existing groups before creating new ones, automatically.
Solutions
Built a Stripe webhook handler that atomically activates the student, runs the teacher load-balancing algorithm, places the student in a group, generates all sessions, and sends a receipt email — all in one idempotent flow.
Built a full native classroom (announcements, homework with file submission, auto-graded quizzes, gradebook, flashcards, shared library) that eliminated the Google Classroom dependency entirely while shipping more features than the original plan.
Implemented a bin-packing grouping algorithm: on enrollment, find the best open group for this teacher, language, and level; if full or none exists, create one. All invisible to the parent.
Key Highlights
Invisible Auto-Grouping: Students are silently placed into class groups of up to 10, load-balanced across teachers — parents never manage groups, they just enroll and attend.
Native In-App Classroom: Full homework submissions, auto-graded quizzes, flashcard practice, shared library, gradebook, and lesson recaps — built natively after scrapping the Google Classroom integration.
PDF Certificates on Completion: pdf-lib generates A4 landscape certificates with school branding when a student finishes their programme — no third-party service needed.
Three Separate Portals: JWT-protected admin dashboard, passwordless magic-link parent portal, and passwordless teacher portal — each with audience-scoped tokens so a stolen token cannot be replayed across roles.
Scale & Scope
25
Database Models
5
Build Phases
3
Portals
Solo
Team Size
Technology Stack
Outcome
Live at mylanguageplayground.com — a production-ready SaaS handling enrollment, Stripe payments, class scheduling, in-app learning, and certification for language schools operating online.

