Educación a Bordo

An exam-prep platform for Spanish recreational boat licences. Students pick temas, sit a timed simulacro or study untimed, and are scored exactly the way the real exam marks, then follow their streak, progress and history. One codebase white-labels to a new academy from a single config file.
Education2026
Educación a Bordo: login, the dashboard, and a study question

1The problem

Pass the real exam, by practising on its exact rules

Spain's recreational skipper licences (PNB, PER, PER complementario, PY and CY) are multiple-choice papers with their own counts, clocks and pass marks, and caps on how many you may miss in certain subjects. Educación a Bordo mirrors those rules from the official regulation, so a mock here passes or fails for the same reasons the real one would. Students sign in and pick the licence they are sitting.

Sign in and choose the licence

2Sit a simulacro

One timed paper, scored like the real thing

Choose the temas, and the app draws a paper weighted across them: for the PNB that is 27 questions in 45 minutes, a pass at 17, and a limit on errors in Balizamiento and the collision rules. The clock counts down and submits itself at zero. The result says passed or failed and why, with the right answer and an explanation on every question.

A timed paper, scored against the exam's marking

3Study a tema

One question at a time, with the reason

Estudio is untimed and teaches as it goes. A right answer moves on by itself; a wrong one, or an 'I don't know', stays on the card and shows the correct option with its explanation. The paper is built to drill what you need: half new questions, then ones you skipped, then ones you got wrong.

Right moves on; wrong and blank show the why

4Track progress

A streak worth keeping and a picture of where you stand

The dashboard carries a day streak that a quiet day of opening the app does not break, a daily-progress read, a success rate, a per-tema trend and a level gauge drawn from recent practice, with the last few papers linked to their full results. It is the screen that makes coming back tomorrow feel like progress.

Streak, success rate, per-tema trend and history

5Run the academy

The admin side, and a template that becomes a new school in a config file

Admins search and bulk-approve or edit the question bank, import questions by CSV, rename temas and read student disputes. The whole thing is multi-tenant by design: a new academy, with its own brand, domains and exam rules, is a config entry plus two deployment files, not a code change.

The question bank, CSV import and tema names

Under the hood

A thin, fast stack that one small team can run

Scoring
A right answer scores a point and a wrong one costs nothing on these papers; a pass needs the mark and the per-subject error caps, checked in one grading function.
Question pick
Each paper is drawn 50% new, 30% skipped and 20% previously failed, split across temas by weight, in a single SQL query.
Multi-tenant
One codebase; a new academy is a config entry plus two wrangler files, with no code change.
Stack
Cloudflare Workers with Hono over D1, and a Vite single-page app with Alpine and Tailwind; two Workers per tenant.
Sign-in
bcrypt passwords, a 12-hour token with a rotating refresh token, and an anti-forgery token checked on every request.
Tested
565 passing tests across the worker, the web app and the tooling.

Black Bao Studio, a small studio in Alicante crafting meticulously engineered websites. SRE-grade reliability, on-point UI/UX, zero framework bloat. We aim to make every byte you download worth it.

Aiming for Lighthouse 100 · every byte earns its download · no frameworks

An occasional letter on building websites tight: performance budgets, vanilla TypeScript, and the craft behind them.