Project

Lessonary

Status: Live · lessonary.zzin.dev

Flutter Firebase Auth Firestore Firebase Storage YouTube Embeds Stripe RevenueCat

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.