Context

We started living too much in our heads and far too little in our bodies.

Modern life gave us more information, more ways to work, more ways to stay connected — and somehow, less room to simply exist. We track our sleep, analyze our thoughts, optimize our routines and try to fix our mental health. Even resting can start to feel like another task on the list. But somewhere between thinking, scrolling and overthinking, we forget something rather basic: we breathe, too.

YeaIBreathe started from this observation — that taking care of the mind doesn't have to mean staying in it all the time.

Sometimes, the way back is much simpler: breathe, move, and return to the body.

Problem

Breathing is automatic, so we rarely pay attention to it. Stress changes the way we breathe, often without us noticing.

Solution

YeaIBreathe turns breathing into a simple, intentional pause — without making it another habit to optimize.

The app guides users through short breathing sessions, followed by a moment to check in with how they feel. mySpace extends that experience into a small social space where users can share reflections, practices, and thoughts — privately, anonymously, or publicly.

No streaks, no pressure, no complicated routines.

Just a small interruption in the day: breathe, notice, return.

Build

YeaIBreathe is a full-stack breathing and reflection app built around guided breathing sessions, post-session check-ins, and mySpace — a social space for sharing reflections, practices and tips.

Stack

Built with a stack I wanted to understand beyond the surface — from the interface and API layer to authentication, database, file storage, and deployment.

Next JS
React
TypeScript
Tailwind CSS
Node.js
Express
PostgreSQL
Prisma
Docker
Clerk
Google OAuth
AWS S3
Zod
TanStack Query
Vercel
Railway
Svix

Features

Built around a simple breathing experience, with a few things around it to make the product feel more complete — from reflection and personal profiles to a small social space for sharing and connecting.

Under the hood

The interesting part wasn't putting the stack together — it was making all the pieces behave like one product. Authentication, data, uploads, validation and client state each had to fit into the same flow without making the experience feel heavier than it needed to.

[ Authentication ]

Clerk

Protected routes · user sync · ownership checks

[ Data ]

PostgreSQL + Prisma

Relational models · session persistence · API queries

[ Server State ]

TanStack Query

Caching · mutations · invalidation · refetching

[ Validation ]

Zod

Request validation · structured errors

[ Storage ]

AWS S3

Presigned uploads · asset metadata

[ Async UX ]

Debouncing

Username availability · stale-request protection

[ Deployment ]

GitHub + Vercel

Automatic builds · production deployments

Shipped

YeaIBreathe is fully deployed and usable end-to-end, with authentication, persistent data, media storage, and production infrastructure in place.