LMS App Starter · Industry version
CE credits tracked against license renewals, annual mandatories that reset themselves, and records an auditor accepts — in code you own.
Clinical training isn't professional development — it's a condition of practice. Nurses owe contact hours to license renewal windows, annual mandatories reset whether anyone remembers, and a surveyor may ask for proof of any of it. This starter generates an LMS that treats those deadlines as what they are: hard.
01 · The problem
Generic LMS completion is binary — done or not — but clinical training is denominated in credit. A course is worth 1.5 contact hours; a nurse's renewal requires thirty inside a two-year window that's different for every license she holds. A platform that can't sum credits against each person's own renewal clock leaves the actual requirement — the one with her license on the line — in a personal spreadsheet.
Mandatory training recurs, and recurrence is where tracking dies. Infection control annually, safe patient handling annually, emergency protocols on the facility's cycle — each completion is valid for a period and then isn't. A tool that marks a 2024 completion as forever-done reports full compliance while half the roster quietly lapses.
And in healthcare, training records are evidence. A surveyor sampling five employees wants completion dates, credit values, assessment scores, and certificates — per person, on request, going back years. If assembling that takes a week of screenshots, the LMS has failed at the one moment it existed for.
02 · Data model
Everything in the base LMS starter —
coursesmoduleslessonsenrollmentsquizzesinstructorscertificates— plus the entities this industry actually runs on:
| table | what it holds |
|---|---|
ce_credits | Credit earned per completion — hours, category, accrediting body — summed against each license's renewal requirement. |
license_renewal_windows | Each staff member's licenses with renewal dates and required hours — the clocks all training counts against. |
recurring_requirements | Mandatory trainings with validity periods — completion satisfies them until expiry re-opens them, per person, automatically. |
03 · Screens
Courses carry credit hours, categories, and the accrediting body, and completions bank credits automatically. Each clinician's dashboard shows hours earned against hours required for their own renewal window — the number they currently keep in their head.
Every license's renewal date drives a countdown: on pace, behind, or critical, given credits banked and time left. Reminders escalate as windows close, and the education coordinator sees the whole roster's risk sorted by proximity to a deadline.
Every completion stores its date, score, credit value, and certificate, immutably and per person. A surveyor's sample becomes a filtered export — five names, five complete histories, minutes not days. Records are written for the inspection at completion time.
04 · In practice
January first, the infection-control requirement re-opens for all clinical staff with a ninety-day window. Completions clear it person by person; at sixty days the overdue list goes to unit managers. Compliance climbs on a dashboard instead of in a binder.
Eight months out, a nurse's countdown shows twenty-two of thirty hours banked. The dashboard suggests in-catalog courses matching her remaining category requirements; she finishes them on shift downtime, and the export for her renewal application is one click.
A surveyor samples five staff for evidence of current mandatory training. The coordinator filters, exports, and hands over five complete histories — dates, scores, certificates — before the morning session ends. The scramble that usually costs a week simply doesn't happen.
Yes — that's the spine of the variant. Completions bank credit hours by category, each license carries its renewal window and required hours, and dashboards show earned-versus-required per person with escalating reminders as deadlines near.
Recurring requirements carry validity periods — a completion satisfies the requirement until it expires, then it re-opens for that person automatically. Different cycles per requirement and per role are configuration in your own code.
Records are built for that moment: completion date, assessment score, credit value, and certificate stored immutably per person, exportable by individual, course, or unit. What a surveyor samples, you produce in minutes.
Yes — sessions are per-user and resume exactly where they stopped, so a module interrupted by a call bell continues at the next break. Progress is saved per lesson, and shared-device use doesn't cross-contaminate records.
Dual7 App Starters
CE credits tracked against license renewals, annual mandatories that reset themselves, and records an auditor accepts — in code you own. Describe your version to start — the output is a project you own.