Between late May and early September 2026 I shipped seven Bacalaureat prep apps: BacIstorie, BacGeografie, BacMatematica, BacInformatica, BacRomana, BacBiologie and BacLogica. One per exam subject, each with its own App Store listing, all built by one person. This is how that happened without it turning into seven separate projects.
Build the first one as if it's the only one
BacIstorie went live on May 26. It was designed as a standalone product, not as "the first of seven": more than 500 multiple-choice questions across the 12 themes of the official syllabus, each wrong answer with an explanation; summaries for every historical period; 300 flashcards in four categories; and 12 full simulations in the official Subject I, II and III format, with a three-hour timer and the marking scheme for self-assessment. It only became a template after it had survived App Review and real students. Extracting a template from something that already works is much cheaper than designing one up front and guessing.
What every Bac app shares
The shape is identical across subjects, and that shape is the engineering template:
- Practice questions organised by the official syllabus themes and by difficulty, with an explanation on every wrong answer, not just "correct / incorrect".
- Theory summaries per theme, written to be re-read the night before the exam.
- A flashcard deck with a swipe "know / don't know" loop that keeps bringing the hard cards back until they stick.
- Twelve simulations in the official exam format, a three-hour timer, and guided self-assessment against the marking scheme at the end.
- A daily streak, XP and badges, because consistency matters more than any single session.
- A free tier that needs no account, so a student can judge the app before paying.
Screens, navigation, timers, progress storage and the paywall are shared code, built on the same SwiftUI kit as the rest of my apps. Everything stays on the device; there is no backend to run.
What had to be built per subject
A template gets you to a working app. It does not get you to a good one, because every exam has a piece that doesn't fit the mould:
- BacGeografie — Subjects I and II are map-based, so the simulations ship with real maps generated from public geographic data: a political map of Europe and a physical map of Romania. Content follows the syllabus order published in September 2025.
- BacMatematica — three tracks (M1, M2 and M3) and 13 themes, each with the key formulas next to the theory.
- BacInformatica — pseudocode for Subject I, C++ for Subjects II and III, and commented code fragments inside the theory.
- BacRomana — 17 model literary commentaries, structured introduction / body / conclusion, from Eminescu and Creangă to Preda and Nichita Stănescu, plus the exact 50 + 10 + 30 scoring of the real paper.
- BacBiologie — both B1 and B2 variants across 24 themes, and 14 biological processes broken into ordered steps, with a mini-game that shuffles the steps and asks you to put them back in order.
- BacLogica — a Square of Opposition trainer with 88 exercises and a syllogism trainer with Venn diagrams covering all 20 moods, including the 15 valid ones, checked against two published marking schemes (BAC 2025 and the 2026 simulation).
Content is the real cost
The code was mostly reused. The content was not. Each app carries between roughly 360 and 520 original questions written against the official syllabus, every one with an explanation, plus theory, flashcards and twelve full simulations. That is where the four months actually went, and it is the part no template can shortcut. If you are planning a content-heavy app, budget for the content the way you budget for the code.
Why not one "Bac" app
The same reason I ship many small apps instead of one big one. A student searching "bac biologie" should land on an app about biology, with an onboarding that explains one thing. Seven listings win seven searches. A bad release in one subject does not touch the ratings of the other six. And the Legi & Amenzi series had already shown that one well-built template can carry a whole family of products.
If you are planning a family of related apps, don't design the family first. Build one as if it were the only one, ship it, and extract the template from whatever survived contact with real users.