Project
Lessonary
Status: Live · lessonary.zzin.dev
What it is
Lessonary is a lesson-recap and video-sharing platform for instructors and students. After a tennis lesson, a guitar lesson, a math tutoring session, or any one-on-one instruction, the instructor shares a structured recap with notes, photos, and a short video. Students (or their parents) claim an invite code and see everything the instructor has shared for them.
It replaces the standard post-lesson experience — a hurried text message, a forgotten email, a scribbled note a kid leaves in a gym bag — with something persistent, searchable, and easy to share with parents who weren't at the lesson.
Why it exists
Instructors already do recap work — either verbally at the end of a session or via messaging apps after the fact — but none of it accumulates. A year in, a student has no way to look back at their progress. A parent who wasn't there has no way to know what was covered. An instructor who takes over from a colleague has to start fresh.
Lessonary turns that ephemeral work into a durable record. Short-form video is the killer feature: a 30-second clip of a kid nailing their first backhand, tagged and attached to the lesson note, is the thing parents actually share around and re-watch.
Core flows
- Instructor onboarding. Sign up, create a studio, generate invite codes for students.
- Lesson creation. During or after a session, record quick notes, upload photos, attach a short video (direct upload or YouTube link).
- Student claim. Students (or parents) enter an invite code, see the full timeline of lessons, play videos, read notes.
- Sharing. Single-recap share links go to family members who don't use the app directly.
- Billing. Instructors pay a monthly subscription for higher storage limits and more active students; free tier for getting started.
Technical choices
Lessonary is a Flutter app targeting web, iOS, and Android from a single codebase. Firebase Authentication handles sign-in (Google, Apple, email), Firestore holds lesson records and sharing metadata, and Firebase Storage holds direct-uploaded photos and short videos. Longer-form videos are linked rather than uploaded — the app embeds YouTube via the standard iframe embed.
Billing uses Stripe on web and RevenueCat on mobile. The RevenueCat choice trades a small platform fee for not having to build Apple and Google IAP separately; webhook-backed subscription state ends up in Firestore via Cloud Functions, and the app reads a normalized entitlement flag rather than care which store a user paid through.
Cloud Functions handle the privileged operations — issuing invite codes, joining a student to a studio, processing billing webhooks, enforcing storage quotas. Firestore security rules plus a small number of server functions cover the full authorization surface; no custom backend to maintain.
Current status
Lessonary is live and accepting new instructors. Web is the primary surface; iOS and Android apps share the same Flutter codebase. If you teach something and want to try it, head to lessonary.zzin.dev to sign up, or email hong-bin@zzin.dev with "[Lessonary]" in the subject for partnership questions.