Dilci.

Dilci is a mobile app for studying, practising questions and tracking your progress towards an English exam. Take a quick vocabulary test or a timed mock exam; questions you get wrong are saved for later revision.
Study guides, vocabulary practice and mock exams, all in one place.
Learn how to approach each question type, then try it in practice.
Practise vocabulary in the context of a sentence.
Take a short practice test, sit a mock exam or revisit your mistakes.
What can you do in Dilci?
Dilci is a mobile app for people preparing for English language exams. It includes topic explanations, vocabulary exercises, tests organised by question type and mock exams. The home screen gives access to each study area, the daily goal, previous results and statistics.
The app supports both short practice and longer exam sessions. You can take a six-question mixed test or sit a timed mock exam. In the study section, you read about a question type and how to approach it before trying the related exercise.
Test results and revision
Completed tests store your answers. Incorrect answers are used to build your personal revision list. The mistake-review section lets you start a practice session from that list and return to an unfinished review later.
Answering a question correctly during revision removes it from the pending mistakes. Review sessions are separate from regular tests, so repeating questions does not increase scores, streaks or daily goals. The weekly summary compares activity with the same portion of the previous week. It does not compare accuracy rates when there are too few answered questions.
App and server
The mobile app is built with Flutter and Dart. Firebase Authentication handles sign-in. Questions, study sessions and results are served by an API running on Cloudflare Workers and stored in D1. The app uses this API to retrieve content and save session results.
Purchases use RevenueCat. Separate services coordinate the purchase identity with the app account and check access to subscription content. Access needs to be updated when someone changes accounts. These checks run at the API as well as in the mobile app.
Avoiding duplicate questions and results
The same question can have different identifiers in different tests. To build the mistake list, the server compares question text, options and the correct answer. This prevents equivalent questions from appearing more than once. The most recent answer determines whether a question still belongs in the pending review list.
Result submissions can be retried after a connection failure. A request with the same operation identifier and answers returns the saved result instead of creating a new record. Different answers sent under that identifier are rejected. The mobile app also prevents another submission while the first one is still running.
Screens and checks
The practice-selection screen was checked on narrow phones, wider displays and with enlarged text. Card heights are calculated from the available screen space. There are separate states for an empty mistake list, a session that can be resumed and a loading error.
Verification includes interface tests, result-submission behaviour and API tests. Checks also cover weekly date boundaries and separation of data between accounts. The screenshots on this page use an example account and test data.
Netle