A personal growth and productivity web app built with React, Supabase, and Tailwind CSS. Kaizen combines a Pomodoro timer, journaling, and a dashboard to help you build better habits and track your progress.
- Pomodoro Timer - 25-minute focus sessions with short/long breaks, task management, session tracking, and Picture-in-Picture mode
- Journals - Create, edit, and manage journal entries to reflect on your day
- Dashboard - Overview widgets including total hours, task list, progress chart, and task completion percentage
- Analytics - Coming soon
- Auth - Email signup, login, OTP verification, and password reset via Supabase Auth
- Settings - Account and profile management
- Theme - Light and dark mode toggle
- Frontend - React 19, React Router, Zustand, TanStack Query
- Styling - Tailwind CSS 4, Radix UI, Lucide icons
- Backend - Supabase (auth, database)
- Build - Vite
- Deployment - Vercel
- Other - Chart.js, Day.js, dnd-kit, Sonner (toasts)
- Node.js (v18+)
- A Supabase project
- Clone the repository
git clone https://github.com/sahi11k/pomodoro.git
cd pomodoro- Install dependencies
npm install- Create a
.envfile in the root directory
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key- Start the dev server
npm run devThe app will open at http://localhost:3000.
If running in WSL, add
VITE_WSL=trueto your.envto enable file-watching via polling.
| Command | Description |
|---|---|
npm run dev |
Start the development server |
npm run build |
Build for production |
npm run check-types |
Run TypeScript type checking |
src/
├── app/ # App-level setup (router, layouts)
├── features/ # Feature modules
│ ├── auth/ # Login, signup, OTP, password management
│ ├── pomodoro/ # Timer, tasks, sessions
│ ├── journals/ # Journal entries
│ ├── dashboard/ # Overview widgets
│ ├── settings/ # User settings
│ ├── analytics/ # Analytics (placeholder)
│ ├── home/ # Landing page
│ └── theme/ # Light/dark mode
├── shared/ # Shared UI components, utils, constants
├── assets/ # Static assets (icons, images, sounds)
├── styles/ # Global styles
└── index.jsx # Entry point
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Francesco Cirillo for the Pomodoro Technique