Delivered engagementLearning & EdTech · $25k – $35k
CareLingua

Bilingual FSP exam-prep platform for nurses

Delivered engagement. Coralsoft designed and built this product end to end; figures below retain their evidence level.

WebBackendNext.js 16 (App Router, RSC)React 19Tailwind CSS
carelingua-fsp-exam-prep.example / dashboard
CareLingua landing page — “Fluency that earns trust on the ward, and in the exam” with a Notify me waitlist form and a feature grid covering guided dialogues, flashcards, matching & quizzes, exam simulation and bilingual DE/EN
The situation

What was in place before we started.

CareLingua turns preparation for the Fachsprachprüfung Pflege — the language exam internationally-trained nurses need to get licensed in Germany — into a structured, bilingual training platform, built on a content platform that cannot silently break.

The Fachsprachprüfung Pflege is the oral and written language exam required for internationally-trained nurses to get licensed in Germany. CareLingua turns preparation for it into a structured, bilingual (German/English) training platform with two main tracks: Üben (self-paced practice across thematic modules) and Prüfung (exam-format simulation of the real oral exam).

Our engineering focus was building a content platform that cannot silently break. Every piece of exam content flows through a shared canonical schema and a Zod validation gate that enforces exam-scoring rules — like “exactly one correct answer per question” — at build time and at every CMS publish. That’s what lets a non-technical product owner safely edit exam-relevant content live, without a developer.

Constraint

CMS as system of record, code as system of truth for structure — the product owner owns content values, code owns keys and schema.

Timeline
6 months reconstructed
Team
5 people reconstructed
Budget
$25k – $35k reconstructed
Platforms
2
Stackrecorded
Next.js 16 (App Router, RSC)React 19Tailwind CSSRadix UI + shadcn/uiFramer Motioni18next / react-i18nextReact Hook FormSupabase (Postgres)TypeScriptSanity (headless CMS, GROQ)next-sanityZod validation gateedge-tts-universal (streamed TTS)Microsoft ClarityGitHub Actions CI
Challenges

Each constraint, and what we did about it.

Constraint

CMS as system of record, code as system of truth for structure — the product owner owns content values, code owns keys and schema.

What we did

The content pipeline runs Sanity (GROQ projection) → Zod validation gate → canonical TypeScript types → exercise players. Every fetch is validated against correctness invariants: exactly one correct answer per question, collocation sets with at least one correct verb and one distractor, complete required fields. A CMS edit that violates one of these throws a labeled error at build time — and is caught live in Studio’s own validation before the product owner can even publish.

Results

Outcome, with the source of every figure.

12
Thematic practice modules, each independently activatable without a code change
self-reportedCoralsoft's own figure for its own delivery, stated in cases.ts. No third-party attestation in the sources.
4
Exercise types per module — flashcards, collocation matching, register-switch, and guided chat
self-reportedCoralsoft's own figure for its own delivery, stated in cases.ts. No third-party attestation in the sources.
2
Fully parity-checked languages — German canonical, English a second language
self-reportedCoralsoft's own figure for its own delivery, stated in cases.ts. No third-party attestation in the sources.
Showcase

How the system fits together.

2 of 2 views
carelingua-fsp-exam-prep.example
CareLingua guided-chat exercise — a scenario prompt with an AI-voiced patient dialogue in German and three reply options to choose from
carelingua-fsp-exam-prep.example
CareLingua matching exercise “Was passt zusammen?” — selecting the verbs that collocate with the noun “der Blutdruck”
Roadmap

How it was sequenced.

6 monthsreconstructed delivery
Weeks 1–4

Discovery & architecture

12 thematic modules → module detail → exercise chooser → 4 exercise players.

  • Üben — Practice
Weeks 5–13

Core build

Exam-part selector → difficulty → guided-chat exam run → scored result card, mirroring the real exam’s format rather than teaching in the abstract.

  • Prüfung — Exam simulation
Weeks 14–17

Integrations & data

Content management for the product owner: modules, exam sims, UI copy, and a JSON bulk-import tab for LLM-assisted authoring — no engineering time required.

  • Embedded Sanity Studio
Weeks 18–22

Hardening & QA

Server-streamed German neural text-to-speech for any exam-relevant term or dialogue line, cached with a long immutable header since (text, voice) pairs are deterministic.

  • Text-to-speech (/api/tts)
Weeks 23–26

Launch & handover

Signature-verified webhook that pushes a CMS publish live in seconds, no rebuild — selectively invalidating only the affected cache tags.

  • Live-publish webhook (/api/revalidate)

More work like this.

Every case study is a Coralsoft delivery story, with the evidence behind each figure kept visible.