Opens in a new tab.

Prove You Know Me: a friendship quiz in nine squares

A friendship quiz in nine illustrated squares. Choose your answers, share the challenge, and see what your friends get right.

LiveNext.js and ReactTypeSafePostgreSQL and Render
Prove You Know Me artwork with nine illustrated food choices, a friendly blue robot and the line “You have nine squares.”
Original Prove You Know Me sharing artwork, using the app’s illustrated food choices.

Prove You Know Me turns a friendship quiz into a playful nine-square CAPTCHA. A friend picks the foods, weekend plans or getaways they think you would choose. You set the answers; their result shows where your choices overlap.

The app is built for a phone and works without accounts. Each challenge has a public link, which can include a custom username.

Choosing the nine squares

There are three themes: midnight cravings, a perfect weekend and a dream getaway. Each has 36 illustrated options, for 108 in total. The collection includes vada pav, masala chai, matcha, reading, road trips, beaches and snowboarding. The illustrations are bundled with the app, so playing a quiz doesn’t generate a new set of images.

The creator writes a private clue about their tastes. Jev, powered by TypeSafe, ranks options from the chosen theme. Code assembles the nine suggestions, and the creator can swap tiles before choosing the answers.

The answer key belongs to the person

A friend opens the link, selects squares and sees which choices matched, which they missed and which they added. The overlap score is the number of choices both people picked divided by the number of distinct choices picked by either person. Selecting every square doesn’t automatically earn a perfect score.

Jev’s saved guess appears as a secondary comparison. It has no say in the answer key, and the creator’s confirmed answers aren’t sent to the model making that guess.

The score describes one set of choices in one quiz. It isn’t a measurement of the friendship.

From a reply challenge to a shared plan

Friends can send a quiz back. After both have played each other’s challenges, each person must explicitly opt in before the app offers private hangout ideas.

Code first filters an authored activity catalog against both people’s budgets, available time and preferred setting. Jev ranks the remaining ideas for each person, and the app selects options that suit both. When no idea fits, it says so. The model can assess preferences within that catalog; the app enforces the constraints and permissions.

Public invitations, private controls

The public link lets friends play. A separate private management link gives the creator access to the controls. The Dashboard keeps bookmarks to those management links on the device; clearing browser storage removes the local bookmarks. Keep a copy to recover access on another device, and keep it private.

Private clues and planning text stay out of public quiz responses and social previews, and participants don’t receive each other’s raw preference text. Relevant preference text does go to TypeSafe for ranking. Challenges and results are saved on the server, so using the app without an account doesn’t mean all data stays in the browser.

The app uses Next.js and React, with PostgreSQL and the web service hosted on Render. TypeSafe handles the ranking calls; application code handles the options, scoring and saved results.

Create a challenge and send the nine squares to a friend.

Build and review code with me

In my developer workshops, we discuss decisions from projects like this and work through a small code change together.

Developer workshops

Next: Mirror