Inspiration
French is now a ticket to Canadian immigration. Canada has set targets for French speaking newcomers outside Quebec (9% in 2026, rising to 12% by 2029), and Express Entry has a dedicated category for French speakers. To apply, candidates need an official TEF Canada or TCF Canada result, and most aim for NCLC 7.
Our users are people living in Canada who need a TEF or TCF score to apply for permanent residence. Preparing is expensive and risky. A full TEF Canada sitting costs about C$390, a failed attempt means waiting before a retake, and much of the study material online still teaches the exam format from before 2023.
I'm a first year Software Engineering student at York University (Lassonde School of Engineering), and I started this in my first term as an engineering impact project called Bridging the Language Gap. It became a real product that I am building as a solo founder.
What it does
Mock Prep is a mobile app (iOS and Android) to practice for TEF Canada and TCF Canada. The interface is in English or French, and every test is 100% French, just like the real exam.
- Reading and Listening work end to end. Candidates pick a test series, take it in practice or mock mode, and get a result. Speaking and Writing show "Bientôt disponible" for now.
- Both exams, one engine. TEF Canada and TCF Canada run on the same question engine, each with its own score scale, and results are converted to the official NCLC level.
- A full learning loop. Result screen with a one line explanation for each question, a detailed analysis, an answer key, test history, statistics, and guides for every question type.
- Share a result. A learner can share their result as a web page, anonymously or with their name, and stop sharing at any time.
- Fair economy. Practice runs on in app tokens (jetons), with a lifetime access option. All economy numbers live in server configuration, not in the app.
- Honest scoring. Every number about the exams comes from one documented source of truth, built from official CCI, France Éducation International and IRCC material.
How I built it
Everything lives in one TypeScript monorepo (pnpm and Turborepo):
- Mobile: Expo and React Native with expo-router, React 19, Reanimated and expo-audio.
- API: Fastify, PostgreSQL and Drizzle ORM, with zod contracts shared by every app. Scoring and the jeton ledger run on the server with idempotency keys. The API has 77 tests and a benchmark suite, and the app is checked on both iOS and Android, including Maestro end to end flows.
- Website: a static React and Vite site (French and English) with legal pages and the shared result page.
- Working with AI: the project is built with several Claude Code sessions, each in its own area (brain, mobile, API, web), coordinated through task specs, a decisions log and a status board in the repo.
Honest status: Reading and Listening run on sample content and a local API, and the Listening audio is still placeholder French speech. Full 40 question tests, the admin tool for reviewing AI generated questions, and real sign in and payments are next.
Challenges
Exam formats keep changing (TEF changed in December 2023), so the hardest part was getting the real format right and keeping one source of truth for it. The second challenge was process: running several AI coding sessions on one codebase, which led to strict rules about branches, task specs and decisions written in files instead of chat. Finally, learners trust the numbers they see. An estimate must never be presented as an official result, and user data has to stay private.
What I learned
For a high stakes exam, details such as one wrong score column can cost someone their application. I also learned that a clear spec and a decisions log save more time than any tool, especially when AI agents do much of the typing.
What's next
Offline study for Reading and Listening, real content (AI generated questions reviewed by a human before publishing), then sign in and payments. The plan is a closed test in January 2027 and a public release around March 2027, followed by Speaking and Writing with AI feedback.
Built With
- azure-speech
- cloudflare
- drizzle-orm
- expo.io
- fastify
- openai
- postgresql
- react
- react-native
- typescript
Log in or sign up for Devpost to join the conversation.