Past exam questions with every step of the solution written out, for university students who revise on a phone with no reliable signal.
Built for the RevenueCat Shipaton 2026. Watch the demo.
Download the demo APK from the latest release and install it on an Android phone (Android 7 or newer). You may need to allow installs from your browser or file manager.
The demo build uses the RevenueCat Test Store, so you can go through the whole paywall and buy any plan. Nothing is charged. Choose "Test valid purchase" in the dialog.
Past questions are how Nigerian undergraduates revise. They circulate as photographed papers in WhatsApp groups: the questions, never the answers. A student who cannot solve one has nowhere to look, and the students who most need the help are the ones with the least data and the weakest connection.
- 243 worked questions across six computer science courses. Each one is a real or predicted exam question with the full solution: matrices written out, flows augmented step by step, parse tables filled in, diagrams drawn.
- Attempt first, then reveal. The solution stays hidden until you ask for it.
- Shaky or got it. One tap after each question. Progress bars, a shaky-only filter and a day streak are built from those marks.
- Flashcards. Every question as a card, with shaky ones dealt first.
- Timed mock papers. Four questions drawn from the real papers, a clock that keeps running in the background, then strict self marking.
- Entirely offline. All content ships inside the app. Nothing is fetched, and no revision data leaves the phone.
| Free | Worked Plus | |
|---|---|---|
| CSC328 Discrete Structures, all 54 questions | Yes | Yes |
| First two sections of every other course | Yes | Yes |
| The rest of every course, including past papers | Yes | |
| Flashcards and mock papers on every course | Yes |
The free tier is a whole course with every tool, so it is useful on its own.
Plans are named for how students revise: Monthly for the exam month, Semester (six months) as the default, and Lifetime.
How RevenueCat is used (src/store/purchases.tsx, src/app/paywall.tsx):
- One entitlement,
Plus. The app only ever asks whether it is active, so plans can be added or repriced in the dashboard with no app release. - The paywall is built from the current offering. Prices, currency and the list of plans all come from RevenueCat.
- A customer info listener keeps access correct on renewal and expiry.
- Offline first: the SDK's cached customer info means Plus keeps working with no signal, and a failed offerings fetch never takes access away.
- Restore purchases on the paywall and in settings.
- Locked content is gated at the route, so a deep link cannot skip the paywall.
- The Test Store key is only used by development builds.
Requires Node 20.19.4 or newer, JDK 17 and the Android SDK.
npm install
cp .env.example .env # add your RevenueCat keys
npx expo run:androidWithout keys the app still runs, on the free tier.
RevenueCat setup: create an entitlement called Plus, add products, and attach
them to the current offering as the monthly, six month and lifetime packages.
src/content/ is generated by tools/build-content.mjs from a set of worked
study pages and is committed, so the app builds without the source pages.
Solutions are kept as HTML and rendered in a locked-down WebView, because they
carry tables, matrices and SVG diagrams.
The solutions are study aids written by a student. Calculations were checked by script, but check anything that matters against your own lecture notes.
Expo SDK 57, React Native 0.86, Expo Router, RevenueCat
(react-native-purchases), react-native-webview, AsyncStorage.
Claude Code was used as a coding assistant.
MIT