π blazingly fast time tracking for developers
- β Time tracking
- β Stat visualization
- β WakaTime compatible
- β Fast and memory efficient
rustytime is a WakaTime compatible backend that can be used to track time in most apps/IDEs with any of the existing plugins! (or you could even make your own plugin)
# Clone the repo
$ git clone https://github.com/ImShyMike/rustytime && cd rustytime
# Copy the env file
$ cp .env.example .envEdit your .env file to include the following:
# GitHub OAuth Settings
GITHUB_CLIENT_ID=client_id_goes_here
GITHUB_CLIENT_SECRET=client_secret_goes_here# Run the full app
$ docker compose up
# OR
# Run the database + backend
$ docker compose up timescaledb rustytime
# Run the frontend
$ cd frontend && bun run devThe app should now be available at http://localhost:5173
The seed feature can be enabled with a build flag to seed the database with a single user and 10000 fake heartbeats.
cargo run --features seedWhen using a WakaTime client, point your requests to http://localhost:3000/api/v1 (or https://api-rustytime.shymike.dev/api/v1 if using the deployed version)
If you're running the self-hosted Grafana LGTM (Loki/Grafana/Tempo/Mimir) stack or an OpenTelemetry Collector on the same machine, expose its OTLP receiver (default gRPC on 4317). Then add the following to your .env:
OTEL_SERVICE_NAME=rustytime-backend
OTEL_RESOURCE_ATTRIBUTES=deployment.environment=dev,service.version=local-dev
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_TRACES_EXPORTER=otlp
OTEL_METRICS_EXPORTER=otlp
OTEL_LOGS_EXPORTER=otlp
# Only when your collector requires authentication headers (comma-separated k=v)
# OTEL_EXPORTER_OTLP_HEADERS=x-otlp-token=changemeIf you're also running Pyroscope for profiling, it can be enabled with:
PYROSCOPE_SERVER_URL=http://localhost:4040
PYROSCOPE_SAMPLE_RATE=99This project is licensed under the GNU AGPLv3