Web tool
Rice Purity Test: a fast, private web tool with almost nothing to download
An online version of the classic 100-question Rice Purity Test, for adults aged 18 and over. We built it on Next.js and TypeScript with three runtime dependencies, and the answers never leave the visitor's browser.

The challenge
People take the test on their phones, often in the middle of a conversation, and leave if it's slow. It's also personal, so visitors need to trust that their answers stay private.
The site also has to answer what people search for, such as what the test is and what a score means, without spreading one topic across many thin pages.
Our approach
Answers stay in the browser
The score is calculated on the device, and progress is saved in the browser's local storage, so a visitor can close the tab and carry on later. There's no account, and no answer is sent anywhere.
Almost nothing to download
Three runtime dependencies: Next.js, React and React DOM. No UI kit, animation library or state manager. The questions are plain TypeScript data.
Opt-in, anonymous statistics
An optional feature lets adults add their score and an age band after finishing. It stores only counts of the score, age band and country (from the hosting platform), never individual answers, accepts one submission per network every 12 hours, and publishes a band only after 50 responses. It stays off until it's configured.
Content that answers real questions
Core pages were rewritten against real search queries, duplicate pages were consolidated, and AI crawlers are allowed.
Architecture
- Pages
- Next.js App Router, statically generated, with components organised as atoms, molecules and organisms.
- Test and results
- Client-side state in small custom hooks for progress, scoring and local storage.
- Stats API (optional)
- One route handler that validates the score and age band, hashes the network address to rate-limit, and stores counts of score, age band and country in Redis over its REST API, so no database driver is needed.
Browser
Test and results
Scored on the device; progress in local storage
Pages
Next.js, static
Test, guides and results pages
Optional
Stats route
Score, age band and country; rate-limited
Redis over REST
Counts, published above 50 responses

Where it stands
Private by default
No accounts and no stored answers. The optional statistics hold only counts.
Adults only, by design
The site says it's for adults aged 18 and over on its key pages and in its terms, and nothing on it is aimed at younger readers.
Built with
- Next.js 16
- React
- TypeScript
- Tailwind CSS
- Upstash Redis (optional)
Services involved
Related guides
Have a problem like this one?
A few lines is enough. We'll ask the right questions on the call.
We reply within one working day
By email or WhatsApp, whichever you prefer.
A short call
To understand the goal, the people who'll use it and any deadline.
A written scope and estimate
Before any work starts, so you know what you're agreeing to.
Prefer to talk first?