skip to main content
Back to all projects

Mosaic

See the pattern in your pieces

An emotion journal that turns quick emotional check-ins into a visual record you can return to over time.

Year
2026
Role
Product Engineer
Type
Mobile app / B2C
Industry
Consumer wellness / lifestyle
Stack
React Native, Expo, TypeScript, SQLite, Drizzle, Unistyles

Overview

Mosaic is an emotion journal built for quick, low-pressure reflection. People start with one of seven emotion families, add detail only when it helps, and can save a check-in in as few as three taps. Up to four check-ins become one daily mosaic tile, creating a visual record that makes shifts over time easier to revisit.

The problem

Mood tracking can become another task to manage. In competitive app review research, I repeatedly saw frustration with long check-in flows, unclear emotion language, privacy concerns, and tools that either oversimplified a day or demanded too much effort. Mosaic was designed to hold that balance: quick enough for everyday use, expressive enough for nuance, and calm enough to support honest reflection.

Competitive review signals

To understand where existing mood trackers break down, I reviewed 150+ public App Store reviews across 5+ mood-tracking and journaling apps. I grouped repeated feedback into three themes that shaped Mosaic’s interaction model.

Friction

multiple entry screens are redundant and nauseating

Product risk

When a check-in feels like a form, reflection can become work before someone records anything.

Design response

Start with a broad emotion family and let people save a minimal check-in in as few as three taps. Journaling and added detail remain optional.

Emotional range

Sometimes I’m feeling normal or good or bad, but also I can feel content or anxious, or nervous...

Product risk

A flat emotion list creates opposite failure modes: too few choices can flatten someone’s experience, while too many can create decision fatigue.

Design response

Use seven familiar emotion families as starting points, then let people explore more specific feelings only when they want greater nuance.

Trust

I want to track my mental health without worrying about my data being collected.

Product risk

When people are uncertain how sensitive reflections are handled, they may hold back or avoid the product altogether.

Design response

Treat privacy as a visible product boundary: sensitive mood and journal content stays on the device by default, while product telemetry excludes personal reflection content.

Reviews also showed that logging alone was not enough. People wanted a clearer way to look back at emotional patterns without being pushed into a dense dashboard. That informed Mosaic’s weekly and monthly insight views.

Key interaction decisions

The goal was not to fit every possible tracking option into one check-in. It was to make the first choice easy while ensuring that each entry could become more useful over time.

Start simple

Start simple, add detail when it helps

People do not always need the same level of emotional specificity. Mosaic begins with seven emotion families, then lets someone explore more specific feelings only when they want to. The default stays quick, without treating every day as simple.

Every check-in starts with a broad choice. More specific feelings, notes, and context tags remain available without becoming required steps.

Represent change

Let a day hold more than one feeling

A single label cannot always represent a full day. Mosaic allows up to four check-ins, then combines them into one daily tile. That makes emotional shifts visible without turning a day into a scattered list of separate logs.

Each new check-in adds another segment, so one tile can hold the shape of a changing day.

Reflect gently

Turn reflection into a pattern, not a score

Check-ins become more useful when they can be revisited in context. Monthly and yearly mosaic views help people step back from individual moments and notice what has been showing up over time, without turning reflection into a score.

The monthly view keeps individual days legible. The yearly view makes the longer rhythm of emotional reflection easier to see at a glance.

Designing the visual system

Mosaic uses a dark, quiet foundation so emotional reflection can feel personal rather than clinical. The interface stays restrained while color, type, and small moments of motion give each check-in its own presence.

System palette

Quiet surfaces, clear hierarchy

Mosaic keeps its interface colors restrained so the colors attached to emotional entries can remain the most expressive part of the experience.

  • Canvas#000000
  • Surface#1C1C1E
  • Gold#C09040
  • Primary text#FFFFFF
  • Muted text#A1A1A6
  • Divider#3A3A3C

Emotion families

Color variation belongs to emotional entries, while the surrounding interface stays intentionally quiet.

  • Happy#F2A900
  • Calm#00B894
  • Sad#3D71D9
  • Angry#FF2D55
  • Fearful#FF8A00
  • Surprised#C026D3
  • Disgusted#7C3AED

Type roles

Editorial warmth, clear utility

Typography separates reflection from supporting information without making the interface feel ornamental.

HEADINGHow are you feeling?

Editorial display type for page titles and reflective moments.

BODYA calm, readable voice for everyday reflection.

Neutral system text for notes, choices, and supporting copy.

LABELJUNE 30 · 9:15 AM

Monospace labels for dates, metadata, and small system details.

Quiet interface, expressive emotion

Mosaic keeps the interface deliberately quiet. The black canvas, softened surfaces, and restrained gold accent create hierarchy without competing with the colors attached to each emotion.

The Today screen is the clearest expression of that balance. Emotion colors carry the personal signal, while the surrounding interface makes space for the moment instead of treating it like a dashboard.

Insights without a dashboard

Insights are designed as a paced reflection rather than one dense dashboard. Emotional summaries, recurring feelings, and timing patterns are grouped into distinct moments, so people can take in what stands out without having to decode everything at once.

Designed to adapt

Accessibility is part of the same product system, not a separate version of Mosaic. High-contrast text makes subtle text and borders easier to see. Reduced motion removes screen transitions and heavier animations. Haptic feedback can also be turned off entirely.

Those settings let the interface adapt to different needs while preserving the same core experience.

Architecture

Built withReact Native · Expo · TypeScript · SQLite + Drizzle · Zustand · MMKV · Unistyles

The technical work focused on making a simple check-in useful beyond the moment it is saved. A single entry can shape the day’s mosaic and contribute to longer-term patterns, while Mosaic keeps the emotional language consistent across the app.

One check-in, many ways to reflect

Shared emotion system

Define a feeling once

Each feeling belongs to an emotion family and has display details that can be reused throughout Mosaic.

Family
Happy
Feeling
Joyful
Shown as
label + color

Saved check-in

Keep the moment simple

Each check-in remembers which feeling was selected and when it happened. Notes and context tags stay optional.

Feeling
Joyful
Date
June 30th
Recorded
9:15 AM
Optional
note + tags

Why it matters

Reuse the same foundation

That small structure gives Mosaic room to support reflection at different points in time.

  • Up to four check-ins can form one daily mosaic tile.
  • Entries can be grouped into weekly and monthly patterns.
  • Labels and color palettes can evolve without changing past check-ins.

Instead of copying a label or color into every check-in, Mosaic looks up those display details when it needs them. That leaves room to refine wording, add translations, or adjust palettes over time without rewriting someone’s history.

Early release, ongoing learning

Mosaic is live and still early. The next phase is focused on learning where more depth would genuinely help, while keeping the core check-in private, lightweight, and easy to return to.

Capacity

Validate room for a changing day

The current four-entry limit keeps a day easy to read at a glance. I'll use privacy-conscious interaction signals to understand whether people reach that limit or want to capture more moments. A higher limit is worth testing only if the daily mosaic can still make those moments easy to read.

Private insights

Explore AI-assisted pattern reflection

Explore optional AI-assisted summaries that help people notice recurring emotions, shifts over time, and meaningful timing patterns in their own history. The goal is to turn existing check-ins into clearer, more useful observations, with on-device processing where supported.

Color access

Make color patterns more accessible

Explore alternative emotion palettes and supporting visual cues so Mosaic's patterns remain easy to distinguish across different forms of color vision. The goal is to preserve color as a meaningful part of reflection while making the system easier for more people to read.