Inspiration
Past questions are how Nigerian undergraduates revise. They circulate as photographed exam papers in WhatsApp groups: the questions, never the answers. When I could not solve one, there was nowhere to look. The students who need the most help are also the ones with the least data and the weakest connection.
I am a penultimate year computer science student. I first wrote these worked solutions for my own exams. Worked turns them into an app any student can carry into the hall.
What it does
- 243 worked questions across six computer science courses, including real past papers. Every solution shows the working: matrices written out, network flows augmented step by step, parse tables filled in, diagrams drawn.
- Attempt first, then reveal. The solution stays hidden until you ask for it.
- One tap after each question: shaky or got it. Progress bars, a shaky-only filter and a day streak are built from those marks.
- Flashcards, with the questions you find shaky dealt first.
- Timed mock papers drawn from real papers, with the time set by the marks, then marked strictly against the worked solutions.
- Entirely offline. All content ships in the app and no revision data leaves the phone. No accounts, no ads, no tracking.
How it makes money
The free tier is one whole course with every tool, plus the first two sections of each other course. Worked Plus unlocks everything.
Plans are named for how students revise: Monthly for the exam month, Semester as the default, and Lifetime.
How I used RevenueCat
- One entitlement, Plus. The app only asks whether it is active, so plans can be added or repriced from the dashboard with no app release.
- The paywall is built from the current offering, so plans, prices and currency come live from RevenueCat.
- A customer info listener keeps access correct through renewal and expiry.
- Offline first: cached customer info means Plus keeps working with no signal, and a failed offerings fetch never takes paid access away.
- Locked content is gated at the route, so a deep link cannot skip the paywall.
- A payment that goes through but has not unlocked yet is reported as pending, never as a failed charge.
- Restore purchases on the paywall and in settings.
How I built it
Expo SDK 57 and React Native with Expo Router. Solutions are HTML rendered in a locked-down WebView, because they carry tables, matrices and SVG diagrams that native text cannot. A build script converts my study pages into the offline bundle. Claude Code was used as a coding assistant.
Challenges
- Rendering maths-heavy solutions on a small screen. Wide tables and matrices scroll inside their own box so the page never gets wider than the phone.
- Getting the unlock right. My entitlement identifier and the one in the code differed by one capital letter, so a test purchase succeeded and unlocked nothing. That led to the pending state above.
- Keeping the mock paper clock honest. It runs from a deadline, so time spent with the app in the background still counts.
What I learned
How entitlements, offerings and packages fit together, and why the app should ask about access and never about products.
What's next
More courses and more departments, written by students who have just sat the papers, with a share of Plus revenue going to each contributor.
Built With
- android
- expo-router
- expo.io
- react-native
- revenuecat
- typescript
Log in or sign up for Devpost to join the conversation.