ap / engineering archive
← Project archive

Serenity AI

A mood-aware journaling and conversation product designed around secure personal data, recent context, and restrained AI assistance.

React 18TypeScriptViteSupabasePostgreSQLGemini 2.0 FlashWeb Speech API
Independent project · Design & implementation · October 2025
6
Message context bound
6
Lazy-loaded feature routes
RLS
Data boundary

What I was trying to solve.

Wellness software handles unusually sensitive context. The product was built to explore how useful AI behavior, privacy boundaries, and calm interaction can coexist.

Follow the data.

A simplified processing flow. Each numbered stage feeds the next; storage and retrieval boundaries stay explicit.

  1. Mood check-in
  2. Authenticated write
  3. Recent context
  4. Gemini response
  5. Wellness insight

The constraints shaped the system.

User-scoped tables are protected with Row Level Security, and model context is deliberately bounded to the latest six messages.

Supabase RLSSix-message context boundAPI failure fallbackThree-tier content fallbackLazy-loaded routes

Where the happy path ends.

Optimistic updates initially made failed writes too quiet. The interface needed an explicit pending state and a reversible correction path.

This is a personal wellbeing software project, not medical care or crisis support. Row Level Security controls database access; it is not end-to-end encryption.

What exists today.

  • Connected chat, mood tracking, journaling, community posts, and voting in one full-stack product.
  • Lazy-loaded six major feature routes using React.lazy and Suspense.
  • Added bidirectional voice interaction and Google OAuth-backed community participation.

What I would improve.

Add clearer retention controls, an export path, and structured evaluation for unsafe or overly confident responses.