This is a submission for the Sanity Challenge, Path Two: Vibe-Code Something Strange
🎮 What I Built
I built MoneyVerse, a financial-literacy game for kids aged 8–12. Pip, a piggy-bank guide, walks players through three missions:
- 🛍️ Needs vs. Wants: A 24-coin outing budget with trade-offs and opportunity cost.
- 🐷 Savings Quest: A jar that starts at 100 coins and aims for a 150-coin bicycle, with a simple-interest example.
- 🍋 Lemonade Stand: Supply costs, pricing, and profit = revenue − expenses.
🛠️ Tech Stack
- Frontend: Next.js framework (App Router) with React 19 and TypeScript, Tailwind CSS.
-
CMS: Sanity v6, with the Studio embedded at
/studio. It usesnext-sanity,@sanity/client, GROQ queries, anddefineLivefor live content updates. -
Persistence: There are no accounts. Progress is saved in the player's own browser with
localStorageand it will reset if browsing history or browser cache is deleted.
🎨 Studio Customization
- Schemas for
lessonandmission, plus the reusable objects they are built from (steps, choices, quiz questions, rewards). - A review workflow on both lessons and missions with
draft,inReview, andapprovedstates, and the document actions "Send for review" and "Approve". - A custom
CoinFieldinput. - A mission Play preview inside the Studio.
🌐 Demo
Link: https://money-verse-orpin.vercel.app/
Repo link: https://github.com/tanay9098/Money_verse
🔨 My Build Process
📅 30th September – 1st October: I started by learning the basics of Sanity Studio through Sanity Learn.
I used ChatGPT to get an idea for the project, and I came across the idea of building MoneyVerse.
I initialized the original MVP using Cursor AI. Later, I started using Claude Code for the rest of the code, as I had consumed 90% of my limits in Cursor 💀.
I summarized the chat prompt from the Cursor implementation and later handed it off to Claude Code.
📅 2nd October: 2nd October was my birthday, so I didn't do any work. 🎂
📅 3rd–4th October: This is where I pushed the majority of the commits 💀.
My initial version was a PWA with a fully working Google sign-in and cloud save of progress to Sanity. Later I removed those features (sign-in, cloud save, and PWA) to cut technical complexity and submit this blog on time. The shipped game is guest-only, and progress lives in localStorage.
Removal of Auth and PWA Features
I prompted the AI agent to build the game, schemas, GROQ queries, and Studio, with a demo-content fallback for local development.
📅 5th October: I first assumed the deadline was 4th October, 12:30 PM Indian Standard Time, so I published a very unpolished first version of this blog in time. Later I realized the deadline is actually 5th October, 12:30 PM IST, so I unpublished the initial post and utilize the extra time to polish this post and the project.
🔍 Making Sanity Essential to the Game
The critique: I noticed that the game didn't really depend on Sanity. So, I added a review workflow (reviewStatus, "Send for review" / "Approve") to both lessons and missions.
In the deployed site, the demo-content fallback is switched off. The game loads only published, approved content from Sanity. If an editor hasn't approved and published a mission, players can't see it. The demo content is only a fallback for local development.
⚡ Live Content
defineLive lets published missions appear without a redeploy.
🗂️ Sanity Project Details
-
Content types:
lessonandmission, plus a review workflow (reviewStatusandreviewerNote) on both. -
Delivery: GROQ queries filtered to
reviewStatus == "approved", using thepublishedperspective, with live updates viadefineLive. -
Setup: Project ID,
productiondataset, a CORS origin, andnpm run seed:sanity.
A few lessons were created by Claude, which I pushed to Sanity by running npm run seed:sanity locally on my machine, using an Editor-level write token kept in .env.local.
I also created an additional lesson, "Comparing Before You Buy," by manually entering everything into the Studio, as suggested by Claude, to see if it worked.
Studio Schema Structure Overview and Changes
🔗 Sanity Project
🤖 Agent Sessions
- Cursor Handoff to Claude Code
- Removal of Auth and PWA Features
- Studio Schema Structure Overview and Changes
- Polishing the app and blog
Thanks for reading :)

Top comments (1)
Cute 😍