epoch-tui
v0.2.2
Published
A TUI app for daily task logging and time tracking
Maintainers
Readme
Epoch

Epoch is a modern, terminal-based task logger and time tracker built with TypeScript, React, and Ink. It features a three-pane layout designed for efficiency and keyboard-centric workflows, allowing you to manage nested tasks and track your time without ever leaving the terminal.
Features
- Three-Pane Layout: Seamlessly switch between Calendar, Tasks, and Timeline views.
- Calendar View: Navigate through months and days to visualize task distribution and select specific dates.
- Infinite Nesting: Break down complex projects with support for infinitely nested subtasks.
- Activity Timeline: Automatically logs every action (start, complete, delegate) with precise timestamps.
- Task States: Track tasks through 'todo', 'completed', 'delegated', and 'delayed' states.
- Extensible Themes: Comes with built-in dark and light themes (plus 20+ community themes like Catppuccin, Nord, Dracula).
- Local Persistence: Data is saved locally in JSON format for easy backup, portability, and privacy.
Installation & Running
Prerequisites
- Node.js (v16+ recommended)
- pnpm
Setup
# Install dependencies
pnpm install
# Run in development mode (with hot reload)
pnpm dev
# Build and start production version
pnpm build
pnpm startKeyboard Shortcuts
Epoch is designed to be used entirely without a mouse.
Global Navigation
1/2/3: Switch directly to Calendar / Tasks / Timeline panesTab/Shift+Tab: Cycle through panes?: Toggle help dialogq: Quit application
Calendar Pane
j/k(or↓/↑): Navigate weeksh/l(or←/→): Navigate daysn/p: Next / Previous monthEnter: Select date
Tasks Pane
a: Add new taske: Edit task titled: Delete taskSpace: Toggle completion statuss: Start task (sets start time)D: Mark as delegatedx: Mark as delayed/cancelledTab: Indent task (convert to subtask)Shift+Tab: Unindent taskEnter: Expand/Collapse subtasks
Timeline Pane
j/k: Scroll through activity historyt: Toggle theme (Dark/Light)
Data Storage
Your data is stored locally in a human-readable JSON file. This allows for easy backups or manual editing if necessary.
- macOS:
~/Library/Application Support/epoch/data.json - Linux:
~/.local/share/epoch/data.json(or$XDG_DATA_HOME) - Windows:
%APPDATA%\epoch\data.json
Tech Stack
- UI Framework: React + Ink
- Language: TypeScript
- State Management: React Context
- Date Handling: date-fns
- Persistence: File System (JSON)
Development & Code Quality
Testing
pnpm test # Run tests
pnpm test:coverage # Run tests with coverage reportCode Formatting
Code is automatically formatted with Prettier on every commit.
pnpm format # Format all files
pnpm format:check # Check formatting without modifying filesLocal SonarQube Analysis
This project uses SonarQube for local code quality analysis (runs in pre-commit hook).
To run SonarQube locally:
# Start SonarQube server (Docker)
docker run -d -p 9000:9000 --name sonarqube sonarqube
# Initialize server at http://localhost:9000 (admin/admin)
# Create a new project and generate a token
# Add token to environment
export SONAR_TOKEN=your_token_here
# Run analysis
pnpm sonarPre-commit Hook:
- Runs
lint-stagedto format staged files with Prettier - Attempts to run SonarQube scanner (non-blocking if server unavailable)
Configuration: See sonar-project.properties
Author
Created by Akshat Dubey.
