Personal Project

Hemi — A Personal Reflection Journal

Designing and vibe coding a digital journal, from a paper planner sketch to a fully deployed web app.

Role Creator & Product Designer
Category Personal / Lifestyle
Duration 3 weeks
Built with Claude Code
Live site hemi.rubyqian.com
About Hemi — short for hemisphere — is a browser-based personal reflection journal inspired by how the two halves of the brain work: one side thinks, the other feels. Each monthly spread mirrors this idea, pairing structured tracking on the left (goals, stats, reflections) with expressive scrapbooking on the right (photos, quotes, music, vibes). It runs entirely in the browser with optional Google sign-in to sync across devices.
Hemi sky garden view with floating journals in a dreamy cloud scene

Introduction

Hemi started from a real problem: my monthly reflections were scattered across too many places — a Hobonichi planner, a Notion doc, social media posts. The turning point was a hand-drawn spread in my planner — a structured page on the left with goals and statistics, and a creative page on the right capturing everything else: a quote of the month, favorite memories, what I was listening to and watching, and reflections on what I was letting go and bringing in. That sketch became the blueprint for Hemi: a digital version I could fill in quickly, access from anywhere, and use to pull insights over time. I designed and directed the entire build through vibe coding — using AI (Claude Code) to translate my design vision into a working, deployed product.

Hand-drawn Hobonichi planner spread that inspired Hemi

Vision & Inspiration

I knew exactly what I wanted Hemi to feel like: muji-inspired Japanese minimalism. Quiet, warm, analog. Everything lowercase. Muted pastels. Generous whitespace. No harsh edges or aggressive UI patterns.

  • Quiet over loud — muted colors, thin borders, small type.
  • Analog warmth — linen textures, wooden shelf planks, page-flip shadows.
  • Color as mood — each month gets its own color that tints the entire spread.
  • Soft transitions always — every element fades in and out gently.

The app is built around the metaphor of a physical bookshelf — a shelf of journals, one for each year. You pull a book off the shelf, flip to a month, and land on a two-page spread. My original vision was more immersive — a full library scene with a window and couch. But I realized that would be difficult to execute well through vibe coding, and simplifying to just shelf planks and book spines was the stronger choice — cleaner, more minimal, more aligned with the muji aesthetic.

The Vibe Coding Process

Vibe coding means building software by describing what you want in natural language and having AI write the code. This wasn't "AI generated the app." It was a deeply collaborative process where I directed every design decision through conversation.

Vibe coding process diagram showing the iterative design-to-code workflow

The 3D page-flip transition is a good example. The first version was clunky — pages flashing incorrectly, wrong pages showing mid-flip, stiff animation. Getting it to feel like smoothly turning a page in a real book took many rounds of design feedback until it finally felt right.

Key Features

All features below are shown with sample data for demonstration.

Monthly Spreads

The heart of Hemi. Each month is a two-page spread — the left page for structured tracking (theme, stats, goals, reflection) and the right page for expressive content (quotes, photos, songs, vibes). Content is fixed-size like real paper — no scrolling, which encourages intentional editing over endless journaling. One of my favorite details is the Spotify embed — each month has a song of the month that you can play directly in the journal, because music is such a big part of how I remember a period of time.

Monthly spread showing structured tracking on the left and expressive content on the right

Sky Garden

An alternative home view where journals float in a sky scene with watercolor clouds, falling petals, and twinkling sparkles. A live sky mode shifts based on time of day — from soft morning light to a moonlit night sky with four-pointed stars and shooting stars. Users can also choose the season, which changes the flowers and elements drifting across the sky, and adjust the wind speed, which affects how everything moves.

Spring daytime sky garden view
Day Time - Spring Season
Summer nighttime sky garden view
Night Time - Summer Season

Hemi Wrapped

Inspired by Spotify Wrapped, Hemi automatically compiles insights from all 12 months into a read-only year recap — recurring themes, a timeline of month-by-month colors, your top songs across the year pulled from each month's Spotify embed, favorite memories, and a summary of what you let go of and brought in.

Hemi Wrapped year recap showing stats, songs, and memories

Outcome

Hemi is live at hemi.rubyqian.com with a pre-filled demo at hemi.rubyqian.com/demo. By default, everything runs locally in the browser — no accounts required. Users can optionally sign in with Google to sync their data across devices, and the only backend is for image uploads.

I've been using Hemi throughout 2026 to recap my months, and it's become a genuine part of my routine — something I look forward to filling in at the end of each month. I'm now slowly testing it with friends to get feedback on the experience. Hemi is currently designed for desktop, which is intentional — the two-page spread layout mirrors the physical journal that inspired it, and the level of detail in each spread benefits from a larger screen.

Reflection

Learnings

Clear prompting is everything. The more precisely I could describe what I wanted upfront — the aesthetic, the layout, the feel — the faster and better the results were. Vibe coding works best when you and the AI are fully on the same page before building starts. Once that foundation was set, it let me focus on product thinking over implementation — instead of worrying about whether something could be built, I could just try it and see.

Challenges

Communicating visual intent without technical vocabulary. I couldn't say "reduce the border-radius to 8px" — I'd say "make it feel less rounded" or "this looks too bubbly." Some things took many rounds to get right, like the 3D page-flip transition — it took a long time before the flip felt smooth and natural instead of clunky. Over time, I developed a shared language with the AI that made iteration faster, but translating a feeling into words was always the hardest part.

What's Next

Currently expanding Hemi with new journal types — a travel journal and a cafe journal — and working on making the experience responsive across screen sizes.