In-house product by Sayge
ClassLoop
Building software around the reality of the classroom.
ClassLoop is an in-house Sayge product: a lightweight daily academic engagement platform for college professors and students, built as a Flutter web application.

Type
In-house product
By
Sayge
Don't take our word for it. Try the product.
ClassLoop is something we built ourselves. The application is a Flutter web PWA. Opening it requires signing in or creating an account; the product also includes clearly labelled one-tap demo accounts so you can explore the professor and student surfaces.
A public production URL is not recorded in the ClassLoop repository, so this page does not invent one. When a live URL is confirmed, it will be the primary CTA.
Why we built it
We don't only build products for clients. Sometimes we build because we want to understand the problem ourselves.
ClassLoop is one of those products.
The loop we wanted to understand was small and daily: a professor posts today's work, watches participation land, and sees who needs attention. A student opens the app, sees today's tasks, checks in, takes the quiz, hands in homework, and keeps a streak.
Building that loop — rather than describing it — is how the product took shape.
01 / The problem
A college class does not live in a single document. Attendance, a short quiz, homework and an announcement all happen on the same day, for the same people, under time pressure.
Software that treats those as disconnected tools makes the day harder. The product question was whether they could live in one daily loop without becoming a heavy campus system.
- professors need today's class, not last month's archive
- students need a list of what to do now
- attendance has to work in a real room, not only on a roster
- a quiz has to be authorable in minutes
02 / The product idea
Keep the product deliberately small. Professor and student each get a surface built around today. Classes, activities and insights exist, but they serve that daily loop rather than replacing a full LMS.
The application is web-first: portrait-first on phones, a genuine multi-column layout on tablet, and usable on a laptop. Hash-based routing keeps deep links and QR check-ins working on static hosting.
03 / The experience
A professor's home is today: announce, start attendance, see live sessions and who needs attention. Classes, activities and insights sit alongside that.
A student's home is a single list, in the order it should be done — attendance, quiz, homework, announcements — plus classes, progress (including streaks) and updates.
An administrator role already flows through authentication and routing. It currently lands on the professor surface; a dedicated institution dashboard is not in the product yet.
01
Professor starts the day
Today's class, announce, take attendance.
02
Students join
Class join code, then today's list.
03
Attendance
Live session, rotating classroom code, optional location.
04
Learning activity
Announcements, homework, the day's tasks.
05
Quiz
Author, publish or schedule; students take it.
06
Participation
Check-in, quiz attempt, homework, streak.
07
Professor sees the outcome
Live roster, insights, who needs attention.
04 / One product. Different realities.
The same day looks different depending on who you are. ClassLoop does not offer one generic dashboard and call it a product.
01
Professor
Run today: take attendance, post a quiz, set homework, announce, watch a live session, and see who needs attention.
02
Student
Join a class, check in, work through today's list, take the quiz, hand in homework, and keep a streak visible in progress.
03
Admin
The role exists in auth, routing and navigation. It currently uses the professor surface until an institution dashboard is built.
Attendance was not treated as a checkbox.
Indoor location is unreliable, so verification never depends on it alone. A professor starts a session from their own position, which can set a geofence. The app then shows a large 6-character classroom code plus a QR code, and can rotate the code if it leaks.
A check-in is accepted when the code matches and, if the session requires location, the device is inside the radius. When a location fix is too imprecise to trust, the session can fall back to code-only rather than rejecting an honest student. The record stores how attendance was earned — code and location, code only, location only, or marked by the professor. Sessions expire, duplicate check-ins are rejected, and the professor can still mark or correct anyone from the live roster.
From classroom activity to assessment.
Quizzes are multiple choice and true/false. Creation is built for speed: duplicate the last quiz, reuse any past quiz, or start blank with defaults already filled. A true/false question needs a prompt. Quizzes save as drafts, publish immediately, or schedule. Each has an availability window, per-question marks, optional explanations, and a switch for whether students see their score on submit.
This is not an automated quiz generator. The professor authors or reuses the questions.
01
Author or reuse
Blank draft, duplicate yesterday, or reuse a past quiz.
02
Publish
Draft, go live now, or schedule a window.
03
Student attempt
The quiz appears in today's list.
04
Outcome
Results, optional instant score, insights for the professor.
05 / The engineering
ClassLoop is a Flutter application with a web-first PWA shell. State is a single immutable snapshot behind Riverpod. Writes go through services; persistence is debounced into local storage. Authentication is isolated so a real identity provider can drop into one place. Routing is role-aware, with shareable URLs for professor and student surfaces and landings for QR check-in and class join.
The boundary is intentional: swapping the local store for a networked backend means reimplementing the store and services, while UI, routing and the design system stay put. The current repository does not use Supabase.
- Flutter, web-first, responsive breakpoints
- Riverpod and a single immutable snapshot
- Role-aware routing and deep links
- Attendance: rotating code, QR, optional geofence
- Quiz authoring, windows and grading
- Homework, announcements, streaks and insights
- Local persistence — not a claimed cloud backend
We don't just implement requirements. We think about products because we build them ourselves.
06 / Building it taught us something.
A classroom product is a state machine wearing a friendly face. Who is in the room, whether the window is still open, whether the code leaked, whether GPS is lying, and whether the student already checked in — those are product rules, not decorations.
Speed of authoring matters as much as the student player. If a quiz takes too long to make, it will not happen today. Multi-role UX is not a theme switch: it is different jobs sharing one day.
Web-first Flutter made the product usable on the devices a class already has. Hash routing made QR and share links possible on static hosting. Keeping the backend swappable was a product decision: the pilot can run locally while the UI is already the real application.
- multi-role UX for professor and student
- classroom state and session windows
- attendance when location is imprecise
- authoring speed for daily quizzes
- web-first layout across phone, tablet and laptop
- keeping a local store so the UI is not waiting on infrastructure
If you have a product idea, this is the part that matters.
ClassLoop is an example of what happens when a product moves beyond an idea and becomes something people can actually interact with — roles, workflows, state and the awkward edges included.
We can do the same for a product that is yours: figure out what should be built, engineer the experience, and get it into users' hands. That work sits in the same place as Sayge's custom software practice.
At a glance.
- Project
- ClassLoop
- Type
- In-house product
- Role
- Product strategy · Product engineering · Application development
- Platform
- Web-first Flutter (PWA); phone, tablet and laptop layouts
- Technology
- Flutter
- Status
- In-house product
- Focus
- Daily academic engagement · Attendance · Quizzes · Homework
Technology.
- Application
- Flutter (web-first PWA)
- State
- Riverpod · immutable snapshot
- Routing
- go_router · hash URLs · role guards
- Persistence
- Local store (shared preferences)
- Location
- Geolocator, when a session requires it
Have a product in mind?
ClassLoop · Sayge

Bring us the problem, the rough idea or the product you can't quite explain yet. We'll help turn it into something concrete.