Frontend Deployed Link: https://zensync-azure.vercel.app
A goal-oriented productivity web app featuring a Pomodoro timer, task management with local CRUD, protected routes, mock auth, AI suggestions (mock), toast notifications, and dark/light theme.
- React 19 (Vite)
- TailwindCSS 3
- React Router 6
KalLabs-FullStack/
client/ # React + Vite frontend
server/ # Express + Mongo (optional backend; mocks used in client)
client/
└── src/
├── components/
│ ├── ProgressCard.jsx
│ ├── ProtectedRoute.jsx
│ ├── Sidebar.jsx
│ ├── TaskCard.jsx
│ ├── Toast.jsx
│ ├── Navbar.jsx
│ ├── PomodoroTimer.jsx
│ ├── AchievementsCard.jsx
│ └── AIWidget.jsx
│
├── context/
│ ├── AuthContext.jsx
│ ├── PomodoroContext.jsx
│ ├── TaskContext.jsx
│ ├── ThemeContext.jsx
│ └── ToastContext.jsx
│
├── hooks/
│ ├── useAuth.js
│ └── usePomodoro.js
│
├── layouts/
│ └── MainLayout.jsx
│
├── pages/
│ ├── Home.jsx
│ ├── About.jsx
│ ├── Dashboard.jsx
│ ├── FocusRoom.jsx
│ ├── Tasks.jsx
│ ├── Settings.jsx
│ ├── Profile.jsx
│ ├── Login.jsx
│ ├── Register.jsx
│ ├── LoadingDemo.jsx
│ └── NotFound.jsx
│
├── services/
│ ├── aiService.js
│ └── api.js
│
├── styles/
│ └── index.css
│
├── App.jsx
└── main.jsx
- Pomodoro timer with start/pause/reset, focus/break cycles (
PomodoroContext,PomodoroTimer.jsx) - Tasks with add/edit/delete/filter stored in local state (
TaskContext,TaskCard.jsx,Tasks.jsx) - Protected routes for private pages (
ProtectedRoute.jsx) - Mock auth (
AuthContext.jsx, forms inLogin.jsxandRegister.jsx) - AI suggestions via mocked service (
AIWidget.jsx,aiService.js) - Toast notifications (
ToastContext.jsx,Toast.jsx) - Theme toggle (dark/light) persisted to
localStorage(ThemeContext.jsx, toggle inNavbar.jsxandSettings.jsx)
- Install dependencies
cd client && npm install- Run the dev server
npm run dev- Open the app
http://localhost:5173
npm run dev– start Vite dev servernpm run build– production buildnpm run preview– preview production buildnpm run lint– run ESLint
- Public:
/,/about,/login,/register,/loading - Private (guarded):
/dashboard,/focus,/tasks,/profile,/settings
- The client uses mock services in
services/api.jsandservices/aiService.js. Swap these with real endpoints as needed. - If you enable the backend (
server/), ensure CORS and cookie settings match your deployment strategy.
Tailwind is configured via client/src/styles/index.css:
@tailwind base;
@tailwind components;
@tailwind utilities;