CYBERLEARN

[2024]Next.jsFirebaseFull-StackProductEducation

French cybersecurity students learning from paywalled English content or shallow translated overviews. That gap is why CyberLearn exists — not as a proof of concept, but as a production platform built to fill a specific, verifiable absence. Fifty-plus lessons, a hundred interactive exercises, flashcard-based spaced repetition, a badge and certification system that gives learners verifiable evidence of what they have completed. Bilingual French and English from the start, not retrofitted. Live at cyberlearn-neon.vercel.app with a companion mobile app.

Next.js on the frontend, Firebase for authentication and persistent data — user progress, flashcard state, completion records. The bilingual architecture was designed into the content schema at the beginning: translated content keys, not translated pages, so the same component tree serves both languages without duplication. The mobile app shares the same backend; progress synchronises across environments without a second source of truth. The schema decisions made in month one constrained what the badge and certification system could do in month three. That coupling is the part of product development that project briefs do not prepare you for.

Building to a brief ends when the deliverable is accepted. Building a product ends when users stop needing it — a different terminus with different demands. The progression logic required writing rules for a system that did not yet exist: which completion thresholds unlock which badges, how certifications are issued, what the learner sees when they are close to a threshold versus far from it. The Firebase schema had to anticipate query patterns that would not be visible until real users arrived and did things you had not anticipated. Most of these decisions were made once and needed to be correct, because migrating a live database schema under active users carries costs that prototype environments never reveal.

The platform is live, used, and maintained. The code is public. What it demonstrates is not that the stack works — Next.js and Firebase are well-documented, and the stack is conventional. What it demonstrates is that a production deployment imposes a different quality of decision-making: you are accountable for the accuracy of what you are teaching, the reliability of the system while learners are in it, and the data of real people. Those constraints produce better engineering than deadlines do, because the cost of a wrong decision is immediate and belongs to someone other than you.