← IndexCase studies — 02 / 04Live site ↗
Online education · course delivery2024

Clinical training,delivered online.

NDC Institute teaches Neuroprotective Developmental Care to health professionals and educators: breastfeeding, sleep, infant development and perinatal mental health. The task was turning a serious clinical curriculum into a course platform busy practitioners could actually get through.

Client
NDC Institute
My role
Fullstack developer
Team
Design, product, engineering
Timeline
2024
NDC Institute — screenshot

01 — The problem

The audience is health professionals studying between shifts, often on a phone and often interrupted. Long-form clinical content has to be broken into pieces that survive being put down mid-lesson and picked up days later.

It also has to feel credible. Practitioners are paying for professional education, so the platform has to read as authoritative rather than as a marketing site with videos bolted on.

The real constraint

Learners are professionals with no spare time. If they lose their place, or can't tell what's left to do, they stop coming back.

02 — My role

Fullstack developer on the platform, building the course experience and the data model behind it alongside design and product.

Course, lesson and enrolment interfaces

GraphQL API work for content and progress

Schema design for courses, modules and users

Responsive, accessible front-end build

Problems I found and fixed

03 — bugs I caught, and what I changed

Course structure and product direction came from the team. These are problems I found in the code and the fixes I shipped.

01

Terms couldn't be edited without a deploy

Next.js · content

The terms and conditions page was 370 lines of hardcoded JSX. Every wording change needed a developer and a release. I replaced it with a fetch from the article service, keyed by an ID in config, so the content team edits it in the CMS like any other article.

Trade-offThe page now depends on the backend being reachable, so it needs a sensible failure path. Worth it, because legal copy changes more often than anyone plans for.

02

Fonts silently stopped loading

Turbopack · build

Montserrat was pulled in with a CSS @import in the shared typography partial. Turbopack strips @import rules when it bundles, so the font quietly failed across every app with no error to follow. I moved it to a link tag in each app's layout, with preconnect, so all three load it the same way.

Trade-offThe font is now declared in three places instead of one. That is the cost of not depending on bundler-specific behaviour.

03

Finding a practitioner meant scrolling

NestJS · API

The practitioner directory had no way to search by name, so anyone looking for someone specific scrolled the list. I added public search and autocomplete endpoints on the practitioner controller, filtered to the accreditation and maintenance programmes so only qualified practitioners come back, with a minimum query length so a single keystroke does not scan the table.

Trade-offThe programme IDs come from config rather than the code, so who counts as accredited can change without a deploy. The minimum query length is a blunt guard though. A busier directory would want proper rate limiting rather than a length check.

04

Completed work still looked outstanding

React · UX

Required activities carried a red asterisk to mark them as mandatory, but the marker stayed after completion, so finished modules still read as something left to do. I scoped it to incomplete activities and reduced its size so it reads as a marker rather than an error.

Trade-offLearners can no longer tell at a glance which completed activities had been required. That is on the activity itself, and the list stays legible.

04 — How it’s built

Front end
Next.js · TypeScript · Sass modules
API
NestJS · GraphQL
Data
Relational schema via Prisma
Content
Courses, modules, lessons, media
Quality
Semantic structure, keyboard paths, responsive

05 — What made it hard

Educational platforms fail in quiet ways. People simply don't finish. Most of the care went into the parts that keep someone moving through a course.

Long-form content
Clinical material broken into lessons that stay coherent when read out of order.
Progress & state
Where a learner is, what's next and what's done, visible at every level.
Mixed media
Video, text and downloads presented consistently rather than per-lesson improvisation.
Credibility
Typography and hierarchy that read as professional education, not marketing.

06 — What I’d do next

It is moving. NDC Institute is being folded into possums.org. That was marketing's call, for SEO and a single brand. I am building the professional side of Possums that will host it: the accreditation pathway, course and purchase pages, guest speakers and the professional dashboard. The Education Hub follows after that.

The obvious next step is richer assessment and certification, because practitioners want evidence of completion they can show an employer or professional body.

After that, analytics on where learners stall. Completion data tells you which lesson needs rewriting, and right now that's guesswork.

← Indexderoubaix.marisha@gmail.comMarisha Deroubaix — 2026