Skip to content

ImShyMike/rustytime

Folders and files

NameName
Last commit message
Last commit date

Latest commit

705bbf8 · · May 14, 2026

History

477 Commits
Jan 24, 2026
Jan 19, 2026
May 14, 2026
Apr 19, 2026
Jan 24, 2026
Jan 25, 2026
Jul 15, 2025
Nov 15, 2025
Jan 25, 2026
Apr 19, 2026
Oct 2, 2025
Feb 26, 2026
Nov 29, 2025
Nov 14, 2025

Repository files navigation

rustytime

    rustytime

    🕒 Blazingly fast time tracking for developers

Crates.io Downloads CI Status Version License


What is rustytime?

rustytime is a self-hosted, WakaTime-compatible backend for tracking your coding time that works with any* existing WakaTime plugin!

*every plugin that allows setting custom API URLs

Features

  • WakaTime Compatible — Drop-in replacement for the WakaTime API
  • Fast and Memory Efficient — Built for high performance and low resource usage
  • GitHub OAuth — Simple login with your GitHub account
  • Data Importing — Import your existing data from Hackatime
  • Observability — Built-in OpenTelemetry + Pyroscope support
  • Self-Hosted — Full control over your data

Quick Start

Prerequisites

1. Clone and Configure

git clone https://github.com/ImShyMike/rustytime &∓& cd rustytime
cp .env.example .envv

Edit the .env file with your GitHub OAuth credentials:

GITHUB_CLIENT_ID=your_client_id

GITHUB_CLIENT_SECRET=your_client_secret

2. Run with Docker

docker compose up

The app should now be now available at http://localhost:5173

Alternative: Run Components Separately

# Start database + backend only
docker compose up timescaledb rustytime



# Run frontend (in another terminal)

cd frontend &∓& npm run dev

Connect Your Editor

Configure your WakaTime plugin to use rustytime:

Environment API URL
Local http://localhost:3000/api/v1
Hosted https://api-rustytime.shymike.dev/api/v1

Most plugins support setting a custom API URL in their settings. Use your rustytime API key from the settings page..

Development

Backend (Rust)

cd rustytime
cargo run                     # Start server
cargo run --features seed     # Start with test data (10k heartbeats)
cargo  test                   # Run tests
cargo build --release         # Production build

Frontend (SvelteKit)

cd frontend
bun dev         # Start dev server
bun run build   # Build
bun check       # Type check
bun lint        # Lint code

Observability

OpenTelemetry

Enable tracing, metrics, and logs with OpenTelemetry:

OTEL_SERVICE_NAME=rustytime-backend

OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

OTEL_EXPORTER_OTLP_PROTOCOL=grpc

OTEL_TRACES_EXPORTER=otlp

OTEL_METRICS_EXPORTER=otlp

OTEL_LOGS_EXPORTER=otlp

Pyroscope Profiling

Enable continuous profiling:

PYROSCOPE_SERVER_URL=http://localhost:4040

PYROSCOPE_SAMPLE_RATE=99

Is this better than wakapi?

Probably not... this was just a fun side project, if you want something that's actually production ready just use Wakapi 😭

Architecture

Component Details
Backend Rust, Axum, Diesel
Frontend SvelteKit, TailwindCSS
Database TimescaleDB (PostgreSQL)

Star History

Star History Chart

License

This project is licensed under the GNU AGPLv3.