Work-in-progress web app for time tracking.
It should:
- be as automatic as possible, but still have powerful manual tracking
- have tag and hierarchy based tracking
- have good analytics and data export
- be easily self-hostable
Backend:
- Typescript + Node.JS
- Express
- GraphQL API with
type-graphql
- SQLite database with
typeorm
andbetter-sqlite3
Frontend:
- Typescript + React
- Chakra UI
Some design docs are available in api/docs/*.md
to explain some of the technical
decisions made in this project and the rationale behind them.
- MVP
- Calendar view of tasks
- Open-window tracker
- Firefox extension
- WakaTime integration
- Open the
api
directory. - Install dependencies with
yarn install
. - Create a
.env
file something like this:
export HOST=127.0.0.1
export PORT=8080
export SESSION_SECRET=xxx
export REDIS_HOST=localhost
export REDIS_PORT=6379
export GITHUB_CLIENT_ID=xxx
export GITHUB_CLIENT_SECRET=xxx
export DATABASE_FILENAME=./db.sqlite
TYPEORM_CONNECTION=better-sqlite3
TYPEORM_DATABASE=./db.sqlite
TYPEORM_SYNCHRONIZE=false
TYPEORM_LOGGING=true
TYPEORM_ENTITIES=dist/src/models/*.js
TYPEORM_MIGRATIONS=dist/src/migrations/*.js
TYPEORM_MIGRATIONS_DIR=src/migrations
You'll need to fill in GITHUB_CLIENT_ID
and GITHUB_CLIENT_SECRET
, which you can
generate on GitHub.com. For the "Callback URL",
put $FRONTEND_URL/githubCallback
.
- In one terminal,
yarn watch
, and in anothersource .env && yarn dev
.
- Open the
frontend
directory. - Install dependencies with
yarn install
- Configure the API URL with
export NEXT_PUBLIC_API_URL=http://127.0.0.1:8080
or wherever you are hosting the API - Start development server with
yarn dev