ZonePro is an all-in-one productivity workspace that combines learning, task management, focus tools, habit tracking, note-taking, analytics, and planning in a single connected experience. Itβs built with Next.js, React, TypeScript, and Tailwind CSS, and stores data locally with optional cloud sync via Supabase.
- Overview
- Feature Highlights
- Core Sections
- Keyboard Shortcuts
- Tech Stack
- Getting Started
- Environment Variables
- Scripts
- Project Structure
- Data and Sync
- Architecture Notes
- Documentation
- Deployment
- Contributing
- License
- Acknowledgments
ZonePro brings together seven productivity modules (Learn, Tasks, Focus, Habits, Notes, Dashboard, Plan) with shared navigation, a persistent header, a music player, and global shortcuts. The UI is designed for fast keyboard-first navigation, and the app supports both light and dark themes.
- YouTube-based course tracking with timestamps and per-video progress
- Multi-view task management (list, kanban, calendar) with priorities, labels, and dependencies
- Pomodoro timer, countdown timer, and stopwatch with session logging
- Habit streak tracking with 30-day dot grids and completion stats
- Markdown notes with tags, search, pin, and archive
- Analytics dashboard with focus heatmap, productivity score, and recent activity
- Weekly review, goals with milestones, and daily βTop 3β planning
- Command palette, global keyboard shortcuts, and responsive layout
- Local-first data with optional Supabase cloud sync
- Session export/import for local backups
- Add YouTube videos or playlists as courses
- Track progress per video and overall completion
- Take timestamped notes and jump back to exact moments
- Sidebar pomodoro timer for study sessions
- List, kanban, and calendar views
- Priorities, due dates, labels, subtasks, and dependencies
- Quick add and detail sheet for full editing
- Pomodoro timer, countdown timer, and stopwatch modes
- Link sessions to tasks and track focus time
- Daily focus budget and session log
- Daily habit tracking with streaks and completion rates
- Color-coded dot grid history per habit
- Two-panel Markdown editor with write/preview modes
- Tags, search, pin, and archive
- Task completion stats and productivity score
- Focus time heatmap and habit overview
- Daily top 3 priorities
- Goals with milestones and progress
- Weekly review workflow
- Persistent header player with queue, shuffle, and repeat
- YouTube audio playback with auto-pause rules
- Default queue starts with a lofi stream, and you can add custom YouTube URLs
| Shortcut | Action |
|---|---|
Ctrl/Cmd + K |
Open command palette |
Ctrl/Cmd + N |
Quick add task |
1 |
Learn |
2 |
Tasks |
3 |
Focus |
4 |
Habits |
5 |
Notes |
6 |
Dashboard |
7 |
Plan |
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- UI: React 19, Tailwind CSS, Radix UI, shadcn/ui
- Backend: Supabase (Auth + Database)
- State: React Context + custom hooks
- Forms: React Hook Form + Zod
- Charts: Recharts
- Markdown: react-markdown + remark-gfm
- Node.js 18+ (Node 20+ recommended)
- pnpm (recommended) or npm/yarn
- YouTube Data API v3 key
- Supabase account (for cloud sync)
- Clone the repository:
git clone <repository-url>
cd ZonePro- Install dependencies:
pnpm install- Set up environment variables:
cp .env.example .env- Run the development server:
pnpm dev- Open http://localhost:3000.
- Go to Google Cloud Console
- Create a new project or select an existing one
- Enable the YouTube Data API v3
- Create an API key in Credentials
- Add it to your
.env
- Create a project at Supabase
- Go to Settings β API
- Copy the
URLandanon/publickey into your.env - Configure auth providers (email/password enabled by default)
NEXT_PUBLIC_YOUTUBE_API_KEY=your_youtube_api_key_here
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key_hereAll variables are prefixed with NEXT_PUBLIC_ because they are used client-side. Never commit real keys.
| Script | Command | Purpose |
|---|---|---|
dev |
next dev |
Start development server |
build |
next build |
Production build |
start |
next start |
Run production server |
lint |
next lint |
ESLint checks |
ZonePro/
βββ app/ # Next.js App Router pages
β βββ auth/ # OAuth callback route
β βββ login/ # Login page
β βββ signup/ # Signup page
β βββ layout.tsx # Root layout (fonts, theme, toaster)
β βββ page.tsx # Main SPA orchestrator
βββ components/ # React components
β βββ sections/ # Learn, Tasks, Focus, Habits, Notes, Dashboard, Plan
β βββ ui/ # shadcn/ui primitives
β βββ ... # Shared components (header, nav, player)
βββ contexts/ # React Context providers
βββ hooks/ # Custom hooks (YT API, pomodoro, cloud sync)
βββ lib/ # Utilities and constants
βββ types/ # TypeScript types
βββ utils/ # Helper utilities
βββ docs/ # Architecture + user guide + Supabase schema
βββ supabase/ # Supabase config
ZonePro is local-first. All data is stored in localStorage by default. When you sign in, data can sync to Supabase for cross-device access. Settings includes export/import tools for local backups and a βclear all dataβ action for a full reset.
- The app is a single-page client component (
app/page.tsx) that conditionally renders sections byactiveSection. - A hidden YouTube player is mounted off-screen to keep music playback persistent.
- Shared, persistent UI (header, music player, command palette, floating nav) stays mounted while sections switch.
For detailed component breakdowns and data flow, see the architecture guide linked below.
pnpm build
pnpm startZonePro is a standard Next.js app and deploys cleanly on platforms like Vercel or any Node.js host.
Contributions are welcome. Please open an issue or submit a pull request.
- Built with Next.js
- UI components from shadcn/ui
- Icons from Lucide React
- Backend powered by Supabase