forgia · dev log
Engineering log for the forgia LMS platform.
- 27 Jun 26One page, three screens: the tabbed Course studio
Managing a Course used to mean bouncing between three separate screens — curriculum, students, settings — each with its own URL, its own header, its own back button. This slice folds them into a single tabbed page with a persistent header and the Publish button re-homed where you actually look for it. No new features inside the tabs: every tab is the old screen, relocated unchanged. The interesting decisions are structural — one LiveView for every tab, deep-linkable routes switched with push_patch, legacy URLs that redirect so nobody's bookmarks break, and a breadcrumb deliberately deleted.
sliceliveviewroutingdesign-systemrefactor - 25 Jun 26A Certificate is a promise you can't take back
Students now earn a publicly verifiable Certificate the moment they complete every Lesson in a Course. The feature is small; the decision underneath it isn't. A credential that can be revoked retroactively — because the Instructor added a Lesson, or the Student renamed their Profile — is worthless. So the Certificate is a permanent, immutable snapshot. Plus the name gate that defers issuance, why issuance lives in the domain and not the LiveView, and a 320px overflow the design mockup didn't warn us about.
slicecertificateliveviewdddadrdesign-system - 22 Jun 26A profile page, two navbars, and a Profile that doesn't exist yet
Users can now set their own name and avatar on a /profile page. The decision worth writing down isn't the form — it's that a Profile is created lazily, on the first Save, because self-registered magic-link users never had one. Plus the Ecto trap that silently skips the write, why the dropdown got built twice, and the value of reading the design system before inventing CSS.
sliceprofileliveviewectodesign-systemddd - 17 Jun 26Studio Usability Polish
A batch of usability fixes across the instructor studio: a styled confirmation dialog before destructive deletes, a reorder bug fix for tied positions, names-as-links for cleaner grids, auto-focus on the first field, and a dev-only home page that maps both perspectives.
polishusabilityliveviewdesign-systemstudio - 17 Jun 26Student Takes a Quiz
The student-facing side of Quiz Lessons: one question at a time, immediate per-question feedback, a resumable in-progress attempt, a stale-reset when the instructor edits mid-attempt, and a Completion recorded on the final correct answer.
liveviewquizectodesign-systemddd - 17 Jun 26Slice 7: Quiz Lessons
Instructors can now add Quiz Lessons with single-choice Questions — a three-panel editor for writing questions, typing answer options, marking the correct one, and reordering. Students taking the quiz is a separate slice.
slicequizquestionsliveviewectodesign-system