๐ If you find this helpful, please star this repo โ it helps others discover these resources!
- Overview
- Features
- Links
- Quick Start
- How to Use
- Data Storage
- Time Tracking Rules
- Architecture
- API Endpoints
- Project Structure
- Development
- Licence
- Authors
A web-based time tracking application that helps you keep track of how much time you spend on tasks during your working day.
- Project Management - Create and organize projects (includes a built-in "No Project")
- Task Management - Add tasks and link a single task per project via checkbox
- Real-time Timer - Track time with minute-level precision (HH:MM format)
- Daily Summary - View total time by task, by project, by task-per-project, plus a chronological entries list
- Daily Isolation - Data is organized by day with a 4 AM boundary and proper overlap handling
- Timesheet PDF - Generate a daily PDF with totals and chronological entries
- Persistent Storage - All data is stored locally in SQLite
- Node.js (v16 or higher)
- npm
-
Install backend dependencies:
cd backend npm install -
Install frontend dependencies:
cd ../frontend npm install
-
Start the backend (Terminal 1):
cd backend npm run devThe backend will run on
http://localhost:3001 -
Start the frontend (Terminal 2):
cd frontend npm run devThe frontend will run on
http://localhost:3000 -
Open your browser and navigate to
http://localhost:3000
- Use the Projects section to create projects (or use the default "No Project")
- Select a project and use the Tasks section to create tasks
- Link a task to the selected project by checking its checkbox (one task per project)
- Click on a task in the Tasks section to select it
- In the Timer section, click the Start button to begin tracking
- The timer will show elapsed time in HH:MM:SS format
- Click End to stop tracking and record the entry
- Entries shorter than 1 minute are automatically discarded
- Use Quick Task Switching to set the active task for the timer
- Quick switch auto-links the task to the selected project and starts timing
- If a timer is running, it ends it and switches to the new task automatically
The Daily Summary section shows:
- Total Time by Task - Time spent on each task
- Total Time by Project - Time spent on each project
- Total Time by Task per Project - Breakdown of each task within each project
- Today's Entries (Chronological) - Start/end times with durations
All data is stored locally in a SQLite database at:
~/Library/Application Support/ClockWise/clockwise.db
- Time precision: Recorded to the minute (start and stop times)
- Minimum duration: Entries must be at least 1 minute to be recorded
- Non-overlapping tasks: Starting a new task automatically ends the previous one
- Daily boundary: New days start at 4 AM (time before 4 AM belongs to the previous day)
- Overlap handling: Entries spanning multiple days are split into the correct day window
- Backend: Node.js + Express + SQLite3
- Frontend: React + Vite
- Data: Local SQLite database
- Communication: REST API over HTTP
| Method | Path | Purpose |
|---|---|---|
| GET | /api/projects |
List projects |
| POST | /api/projects |
Create project |
| PUT | /api/projects/:id |
Rename project |
| DELETE | /api/projects/:id |
Delete project |
| GET | /api/tasks |
List tasks |
| POST | /api/tasks |
Create task |
| PUT | /api/tasks/:id |
Rename task |
| DELETE | /api/tasks/:id |
Delete task |
| GET | /api/timer/current |
Fetch active timer |
| POST | /api/timer/start |
Start timer for task |
| POST | /api/timer/end |
End active timer |
| GET | /api/totals |
Daily totals summary |
| GET | /api/timesheet/entries |
Daily time entries (chronological) |
ClockWise/
โโโ backend/
โ โโโ database.js - Database initialization and helpers
โ โโโ utils.js - Time calculation utilities
โ โโโ server.js - Express server and API endpoints
โ โโโ package.json
โโโ frontend/
โ โโโ src/
โ โ โโโ App.jsx - Main application component
โ โ โโโ main.jsx - React entry point
โ โ โโโ index.css - Global styles
โ โ โโโ components/
โ โ โโโ ProjectManager.jsx - Project CRUD
โ โ โโโ TaskManager.jsx - Task CRUD
โ โ โโโ Timer.jsx - Timer controls
โ โ โโโ Totals.jsx - Daily summary display
โ โโโ index.html
โ โโโ vite.config.js
โ โโโ package.json
โโโ README.md
โโโ LICENSE
To work on the application:
- Run both servers together from repo root with
npm run dev - Backend changes automatically reload with
npm run dev - Frontend changes automatically reload with Vite's hot module replacement
- Make API changes in
backend/server.js - Make UI changes in
frontend/src/
Run the full test suite from the repo root:
npx vitest run --no-cache
This project is licensed under the MIT License. See the LICENSE file for details.
- GitHub - YTasheva | Yuliya Tasheva
- For any questions, suggestions, or issues, please contact our team at
Email info@yuliya-tasheva.co.uk ย ยทย Copyright ยฉ 2026 All Rights Reserved. Site By Yuliya Tashevaยฎ

