mkshp.dev
← All projects
Memory trainingLaunched November 2026

memorypalace.dev

Card drills, PAO and memory palaces in one place. Free, no ads, and no account needed to try it.

A memory palace route in memorypalace.dev: six numbered stops, from the front door to the fridge, drawn over a house floor plan
A palace route: number the stops along a floor plan, on your own image or a template.
Why

The problem

I'd been learning PAO and memory palaces for a while and got tired of juggling spreadsheets and random card trainer sites.

I build tools to ease my workflows, and hopefully yours too. So I made my own thing: card drills, PAO systems and memory palaces in one place.

Tour

How it works

  1. The Customize deck dialog: presets, deck size, and time limits for memorize and recall

    01Set up a drill

    Pick a deck size, from face cards up to two full decks, and time limits for memorizing and recall. Presets cover warmups and competition-style runs.

  2. A drill in progress: card 14 of 52, with a per-card timer

    02Memorize the deck

    Cards come one at a time, with an optional clock per card or for the whole session.

  3. The recall screen: ten cards placed into numbered slots, with a rank and suit picker

    03Recall the exact order

    Rebuild the sequence by clicking or typing (qh is the queen of hearts), then check your answers.

  4. The PAO Builder intro: 2 of diamonds as Einstein, 5 of spades as driving a unicycle, jack of hearts as over a banana

    04Give every card a story

    Build your PAO system: a person, an action and an object for each of the 52 cards, with pictures, so any three cards become one scene.

Engineering

Under the hood

ReactTypeScriptViteTailwind CSSRadix UISupabaseCloudflare PagesVitest

Try it first, keep your work later

Opening a builder as a guest starts an anonymous Supabase session, so guests get the same database rules and image uploads as accounts. Signing up upgrades that same user in place, so palaces and PAO systems carry over without copying anything. Guests who never sign up are cleaned up after 30 days idle.

Counting shares without a tracking script

Share links like /r/<slug> are a small Cloudflare Pages Function that redirects at the edge. Each place a link is posted gets its own slug, and Cloudflare's traffic report counts them by path, with no client-side script and nothing stored about the visitor. Page analytics are Cloudflare's cookieless Web Analytics, so there is no consent banner.

Username sign-in that doesn't leak emails

You sign in with a username, but Supabase password auth is keyed on email. The username-to-email lookup only runs server-side, in a Pages Function that also checks the Turnstile challenge, so the browser can never use it to collect other people's addresses. Email is optional at signup.

Source: private

Status

Status and what's next

Launched November 2026. It's free to use, and what comes next depends on what people who train with it ask for: the Feedback button in the app goes straight to my issue list.

Try it

Run a drill in your browser, no account needed. For updates, follow along onBluesky,Xor RSS.