TimeSplit is a focus-time web app built with React, TypeScript, and Vite. It combines a Pomodoro-style timer with lightweight work tracking so you can move from planning to execution without switching tools.
- Runs focused work sessions with a live countdown timer.
- Captures session logs and displays them in a calendar-style view.
- Supports manual log entries for work completed outside the timer.
- Tracks deadlines with create, complete, and remove flows.
- Persists all user data locally in the browser (no backend required).
- Includes dedicated Dash, Logs, Sessions, and Profile views.
- Uses a stylized animated Dither background (Three.js + postprocessing) for the app atmosphere.
- React 19
- TypeScript
- Vite
- Framer Motion
- Three.js
- @react-three/fiber
- @react-three/postprocessing
- postprocessing
- src/TimeSplit.tsx: Main app shell and view routing.
- src/useTimer.ts: Timer/session mechanics.
- src/useLogStorage.ts: LocalStorage-backed logs and deadlines state.
- src/Calendar.tsx: Logs and deadline management UI.
- src/Sessions.tsx: Session history view.
- src/Profile.tsx: Aggregated stats/profile view.
- src/Dither.tsx: Animated shader background.
- src/index.css: Theme and UI styling.
- Node.js 18+ (or current LTS)
- npm
npm installnpm run devnpm run buildnpm run previewnpm run lint- npm run dev: Starts Vite dev server.
- npm run build: Type-checks and builds production assets.
- npm run preview: Serves the production build locally.
- npm run lint: Runs ESLint.
- npm run stitch:download: Downloads Stitch assets via scripts/download-stitch.mjs.
TimeSplit stores app state in browser LocalStorage, including logs, deadlines, and draft/task state. Clearing browser storage will reset local app data.
- The production build may show a chunk-size warning due to graphics and UI dependencies. This is expected for the current feature set.
- No external API keys or server services are required to run this project locally.
No license file is currently included. Add one (for example MIT) if you plan to distribute this project publicly.