Project case study

Raíz Life Journal

Mobile-first journaling PWA with Google OAuth, Supabase persistence, and light/dark themes.

System
Built Products
Role
Solo builder — design, implementation, deployment
Status
Built
Built with
Next.js · Supabase · Google OAuth · PWA · Vercel
Raíz Life Journal cover

Outcomes

  • Google OAuth login flow working end-to-end
  • Journal entries persisted in Supabase
  • PWA installable on mobile with offline-capable shell
  • Light and dark mode with theme persistence
  • Deployed to Vercel with environment-based config

Problem

I needed a calm, mobile-first space to capture daily reflections and breathwork sessions — something faster than a notes app but more structured than scattered text files. The input was messy (quick thoughts, mood, session context); the output needed to be searchable, persistent, and always available on phone.

Goal

Build a installable PWA that feels native on mobile, authenticates users securely, and stores journal history in a real database — not localStorage.

System

1

Open PWA

2

Google OAuth

3

Create entry

4

Save to Supabase

5

Review history

Architecture

Next.js PWA

React UI + service worker

Supabase Auth

Google OAuth provider

Supabase DB

Journal entries table

Vercel

Edge deployment

Key features

Mobile-first UI

Designed for thumb reach and single-hand use on phone.

Google OAuth

Frictionless sign-in without managing passwords.

Theme switching

Light/dark modes with persisted preference.

PWA behaviour

Install prompt, manifest, and app-like shell.

Visual proof

Raíz dashboard
Dashboard
Journal entry screen
New entry
Entry history dark mode
History

Result

Raíz proves I can ship a full-stack mobile product solo: auth, database, deployment, and UX polish. It’s a real app people can install — not a prototype mockup.

What I’d improve next

  • Push notifications for daily journal reminders
  • Rich text / markdown in entries
  • Export to PDF or Obsidian
  • Improved offline sync conflict handling