IMPORTANT:

  • If you don't see our project video up there (from a bug), watch it here

Inspiration

Imagine this: You just got a lot of free time from college, and you have a lot of assignments to do. You also have that one personal project that you said you'll do. But what do you do? Pick up your phone and doomscroll the day away.

It's not your fault. These companies spend billions on engineering your attention. So, we did the opposite: used the same psychology backward to gamify productivity.

In Ikigai, you spend your days as a farmer in a peaceful environment, planting flowers and building your garden day after day. How do you progress? You set real tasks for yourself (schoolwork, club duties, etc).

It's like grinding any other addictive game, except the grind actually builds your discipline :)

What it does

Ikigai is a retro top-down productivity game where your garden only grows when you do.

You play as a gardener and progress by completing real tasks: homework, club work, personal projects, or anything else on your list. Tasks earn XP and coins based on difficulty, time, and how closely you finish to your estimate.

The main mechanic is Focus Mode. Start a Pomodoro on a task and your garden locks until the timer ends. Finish the session and you earn 2× XP.

Completing at least one task a day keeps your streak alive. Miss days and your garden starts to wither, with two freezes each month for busy weeks.

As you level up, your garden expands. You can plant and harvest crops, decorate your house and garden, collect cards, unlock seasons and animals, and buy items from a rotating shop.

Friends connect through 6-letter codes. You can knock on their door, visit their garden, walk around together, wave, and chat.

Students can also import a syllabus PDF. Ikigai reads it in the browser, creates suggested assignments and exams, and lets you approve them before adding anything.

How we built it

Ikigai runs on a single Cloudflare Worker. The game uses Phaser 3, TypeScript, and Vite, while the backend uses Hono, D1 for persistent data, and Durable Objects with WebSockets for realtime multiplayer.

Shared game logic such as XP rewards, levels, plant timers, shop rotation, and placement rules lives in src/shared/rules.ts, which both the client and server use.

Authentication uses username/password with PBKDF2 and httpOnly session cookies. The browser provides the player's timezone so streaks, shops, plants, and daily resets happen correctly.

For syllabus imports, pdf.js extracts text locally and Gemini turns it into structured task suggestions. The PDF itself is never uploaded.

We also created the game's pixel art, including 20 characters, 32 plants, 40 furniture pieces, environments, cards, and other assets.

Challenges we ran into

One major challenge was keeping the client and server consistent. We solved this by putting game rules in one shared TypeScript module instead of maintaining separate versions.

Realtime multiplayer was another challenge. Durable Objects handle each player's presence, friend notifications, knocking, movement, and chat without mixing visitors with background connections.

Timezone handling was surprisingly important because streaks, withering, shops, and plant timers all depend on what counts as "today."

We also had to validate fences, furniture, plots, gates, and the expanding garden grid on the server so players could not create invalid layouts.

Accomplishments that we're proud of

  • A full playable loop on one Worker: tasks → XP/coins → garden/home/shop → friends in realtime, on the free plan.
  • Focus lock that actually protects attention: garden closed, 2× XP only after a real session.
  • Shared rules between client and Worker, with tests that pin the intended economy.
  • A knock/visit/chat social layer.
  • Syllabus import that turns a PDF into dated class tasks without uploading the file.
  • Original pixel art, autotiled fences, seasons (rain, snow, leaves), and a garden snapshot.
  • Playwright coverage of the scary paths: two users, toasts, knock/accept, chat, wither, freeze

What we learned

Game mechanics like streaks, timers, rewards, and progression do not have to waste time. They can also make real work more satisfying.

We learned how to build a realtime game around Cloudflare Workers, D1, Durable Objects, and hibernating WebSockets.

We also learned that things like game balance and timezone handling need to be treated as core systems, not small details.

Most importantly, we chose to trust players instead of monitoring them. Ikigai does not watch your screen or verify your homework. Your garden simply reflects the work you choose to put in.

What's next for Ikigai

  • More cards and richer character animation (we currently step on a small frame set).
  • Better accounts: email recovery, rate limits, and not just username + password.
  • Mobile / touch.
  • Richer social: garden comments, co-op plants, maybe a quiet town square — without turning it into another feed.
  • Deeper syllabus support (multiple files, LMS calendars) and optional shared class folders.
  • Tuning the wither/freeze curve from real semester data so exam week feels fair.

Built With

Share this project:

Updates

Submission history