ClassLoop turns class transcripts, notes, rosters, and links into teacher-reviewed student follow-ups. It also includes a personal meeting-minutes mode for individual follow-through without class rosters or student accounts.
Teachers get a clean review workflow after class. Students get a simple dashboard with the recap, tasks, resources, due dates, and completion check-ins meant for them.
Live site: https://classloop-followup.vercel.app
Teachers already know what happened in class, who participated, who missed something, and what needs to happen next. The hard part is turning that memory into clear follow-up for every student.
ClassLoop helps with that after-class cleanup:
- Import a Zoom-style transcript, notes, roster, and links.
- Review the generated class recap, tasks, resources, and participation signals.
- Publish student-specific follow-ups only after teacher approval.
- Give students clear next steps without making the teacher rebuild context by hand.
- Track completion and private support signals in one place.
- Import transcripts, pasted notes, rosters, and resource links.
- Use CSV roster import/export and saved roster templates.
- Review matched speakers, unmatched participants, action items, resources, and follow-ups.
- Edit the class recap before anything is published.
- Preview what each student will see.
- Publish approved follow-ups.
- Track participation, quiet students, missed-session catch-up, overdue work, and completion.
- Export session reports as print, JSON, or CSV-friendly records.
- See a personalized recap for the latest class.
- View assigned tasks, resources, and due dates.
- Mark work complete with an optional note or file link.
- See teacher-reviewed completion status.
- Keep follow-up work separate from teacher-only analytics.
- Create an individual account for paste-only personal meeting minutes.
- Generate a personal recap, resources, questions, and tasks from plain meeting notes.
- Track task status and due-date text across saved personal meetings.
- Use separate personal navigation and local persistence from teacher/student classroom data.
- Public landing pages for features, screenshots, docs, privacy, terms, EULA, support, and downloads.
- Hosted web demo with sample teacher and student accounts.
- Installable PWA shell with manifest, service worker, app icons, and Add to Home Screen flow.
- Supabase-backed hosted account and sync scaffold.
- Stripe Checkout-based Pro subscription scaffold.
- Google Classroom and Zoom workflow surfaces for roster/course and transcript-first classroom follow-up.
Teacher:
teacher@classloop.demo
classloop-teacher
Student:
maya@classloop.demo
classloop-student
- Open the hosted site or run the desktop app.
- Sign in as the sample teacher.
- Import or review a class session.
- Generate a draft and review the recap, tasks, resources, and student follow-ups.
- Publish the session.
- Switch to the student view and mark a task complete.
- Return to the teacher view to review completion and analytics.
Use docs/public-beta-packet.md for teacher onboarding, the alpha script, release notes, support FAQ, download links and fallbacks, the short launch announcement, and the verification checklist before inviting a real teacher.
Requirements:
- Node.js
- npm
Start the desktop app:
./run.shStart the browser dev server:
./run.sh --devValidate launcher setup:
./run.sh --check-envInstall or repair dependencies directly:
npm run bootstrap| Layer | Technology |
|---|---|
| Frontend | React 18 |
| Language | TypeScript 5 |
| Desktop | Electron 41 |
| Build | Vite 6 |
| Icons | Lucide React |
| Styling | CSS |
| Hosted shell | Vercel PWA |
| Hosted auth/sync scaffold | Supabase |
| Billing scaffold | Stripe Checkout |
src/
App.tsx Main app UI and flows
cloud.ts Hosted auth, sync, and billing helpers
data.ts Transcript, roster, resource, and follow-up parsing
types.ts Core ClassLoop domain types
styles.css Product styling
desktop/
main.cjs Electron main process
api/
billing/ Stripe checkout, portal, and webhook routes
cloud-state.js Hosted workspace sync route
feedback.js Product feedback route
profile.js Hosted profile and entitlement route
public/
manifest.webmanifest
sw.js
tests/
browser/ Playwright product and accessibility tests
- Free: 1 generated session per day, transcript import, Google/Zoom workflow surfaces, student accounts, recap email delivery, CSV roster tools, and local desktop storage.
- Pro:
$3.99/monthfor unlimited generated sessions plus private analytics and JSON/CSV/print report exports.
ClassLoop is designed around teacher review and student privacy.
- Teachers approve before publishing.
- Students see their own follow-ups, not teacher-only analytics.
- Analytics are private support signals, not public rankings.
- Local desktop state is encrypted with ClassLoop local storage keys.
- Hosted sync uses account-scoped state and server-owned billing entitlements.
- Terms, Privacy Policy, EULA, Support, and Download pages are included in the hosted app.
Run the core checks:
npm run build
npm run test:security
npm run test:import
npm run test:cloud
npm run test:entitlements
npm run test:browser
npm run test:webUseful focused checks:
npm run test:web:local
npm run test:stripe
npm run test:desktop:state
npm run test:desktop:first-run
npm run test:release:distribution
npm run drill:incidentsThe test suite covers import parsing, noisy transcripts and rosters, teacher/student workflows, individual meeting minutes, workspace isolation, hosted sync states, Free/Pro boundaries, Stripe-owned entitlement updates, desktop encrypted state, mobile/PWA readability, accessibility, user-visible errors, Swift macOS packaging, and release checks.
All desktop packaging commands run npm run package:prepare first. That rebuilds the shared Vite dist/ output and verifies that macOS, Windows, Linux, and the Swift macOS app are wired to that same local build, so local changes are not left behind in one platform version.
Build the Apple silicon macOS package:
npm run package:macnpm run package:mac now builds the native Swift macOS app bundle, DMG, and ZIP. The legacy Electron macOS fallback is still available when needed:
npm run package:mac:electronRun the Swift macOS app against the local web build:
npm run swift:mac:runBuild Windows or Linux packages:
npm run package:win
npm run package:linuxBuild every desktop target from the same prepared local source when the host has the required platform tooling:
npm run package:allGenerate checksums:
npm run release:checksumsUse .env.example as the checklist for optional hosted services.
Common hosted variables:
VITE_SUPABASE_URL=
VITE_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
VITE_STRIPE_PRO_PRICE_ID=
VITE_STRIPE_PUBLISHABLE_KEY=
STRIPE_SECRET_KEY=
STRIPE_PRO_PRICE_ID=
STRIPE_WEBHOOK_SECRET=
CLASSLOOP_PUBLIC_URL=
CLASSLOOP_FEEDBACK_NOTIFY_EMAIL=Keep server-only secrets in Vercel or local environment files. Do not commit real credentials.
- Real teacher pilot sessions with redacted classroom data.
- Live Stripe checkout and webhook entitlement proof.
- Clean-host installer verification for public desktop downloads.
- Google Classroom OAuth and posting flow.
- Zoom transcript import integration.
- More onboarding polish for teachers and students.
- More accessibility testing with real assistive-tech usage.