Inspiration
Japan's first-class licensed architect exam ends with a 6.5-hour design drawing test. In one sitting, candidates plan a building, draw it by hand, and write short technical explanations of their design choices.
I took that drawing test five times (2020–2024) and passed on the fifth attempt. I studied alone in some years and at prep schools in others. Two things stayed hard every year:
- Time management. 6.5 hours has to be split across planning, drawing and checking, and a single late phase can cost the whole attempt.
- Everything outside the drawing. The written explanations and the building knowledge behind them (building code, mechanical systems, structure) came from thick textbooks that are hard to review on a train.
I built Rank1 alone, as the app I wanted during those years: design, code, content, and the newsletter.
What it does
- Drafting timer: Splits the 6.5 hours into phases (planning, drawing, checking) with presets. Phase changes are signaled by light, so it works silently in a study room.
- Study log and mistake log: Records the time split of every practice session as a graph, plus a log of mistakes and fixes to review before the next session.
- Written-answer cards: Questions for this year's assignment type, and real exam questions from 2016–2025 with the exam year shown on each card. Sample answers are color-coded by target / reason / result.
- Knowledge diagram cards: Four decks (building code, mechanical systems, planning, structure), each with a diagram and a short text per card.
- Every paid deck has free sample cards. Purchases are one-time (no subscription).
How I built it
- App: Expo (SDK 57) + React Native + expo-router, TypeScript. iOS and Android from one codebase.
- Monetization: RevenueCat (
react-native-purchases). 19 one-time in-app products per store: a Pro unlock for the timer, eight card decks and an all-in-one bundle (each deck and the bundle has a regular price and a one-time discounted price). Each RevenueCat entitlement maps 1:1 to anentitlementkey in the content data, so a new deck ships as data plus one product, not as new app code. - Paid content delivery: I store card content in Cloudflare R2 and serve it from a Cloudflare Worker that asks RevenueCat for the user's entitlements before returning a deck. New or fixed cards reach users without an app update or OTA.
- I take prices in the app only from the store through RevenueCat offerings. The repo holds no price, so a price change in App Store Connect / Play Console never leaves a stale number in the UI.
- Backend and analytics: Cloudflare Workers + D1 for in-app events. No personal data or IP is stored for app events.
- Remote config (a JSON file on the website) for minimum version, exam dates and in-app notices, so announcements reach every installed device, old versions included.
- Distribution around the app: a daily 7 a.m. newsletter since Aug 1 (Resend) and daily articles on note.
Challenges I ran into
- Exam question rights. Using real exam questions needs permission, so I applied to the exam's administering foundation and received a written license in August 2026. The license comes with conditions (show the exam year, state that questions are edited, submit the content before release), and I built the app and a review site to meet them.
- No exaggerated claims. Exam study products easily drift into "you will pass" marketing. I put two disclaimers on every store text and paywall: the content is not an official scoring standard and doesn't guarantee a pass, and the app is not affiliated with the exam body or any prep school.
- Shipping content weekly without app releases. Separating content (R2 + entitlement check) from the binary let me release four new knowledge decks alongside a single store update.
Accomplishments that I'm proud of
Rank1 is a strongly seasonal app. In Japan, candidates study for the drawing test from August to early October, almost exactly the Shipaton window. So I started it as an experiment: if the app earned ¥200,000 in its first season, I would call it a success.
Sales have now passed ¥800,000 〔(about US$5,000)〕, and it may reach ¥1,000,000 by the end of September. I'm really happy and proud of this.
- iOS released on Aug 6, Android on Aug 14, 2026.
- Written-answer cards launched Aug 28; four knowledge diagram decks launched Sep 20.
What I learned
- Purchases are decided in the first session. For most buyers, the time from first launch to purchase was under 30 minutes. So I focus on the onboarding and the free sample cards rather than later reminders.
- Launch days move the installed base. On the written-card launch day, people who had installed the app weeks earlier bought for the first time. Since then, I release and announce on the same day.
- More choices made the bundle sell. With four decks and an all-in-one bundle (five products), buyers mostly picked single decks. When I added four more decks on Sep 20, I kept the bundle at the same price (¥13,980, against ¥33,840 for all eight decks bought separately). From that day, the bundle became the main seller. It reminded me of Dan Ariely's Economist subscription experiment: the options around a bundle change how its price looks.
What's next
- I'll keep adding content every week until the exam on Oct 11, 2026.
- After the exam, I'll replace the content for next year's assignment type. I keep assignment names and years in data, not code, so I can re-release the app every exam season.
Built With
- android
- cloudflare-d1
- cloudflare-r2
- cloudflare-workers
- eas
- expo-router
- expo.io
- ios
- node.js
- python
- react-native
- resend
- revenuecat
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.