Features
- ✅ Time tracking
- ✅ Stat visualization
- ✅ WakaTime compatible
- ✅ Fast and memory efficient
What is this?
rustytime is a WakaTime compatible server that can be used to track time in most apps with any of the existing plugins!
Local Development
# Clone the repo
&&
# Copy the env file
Edit your .env file to include the following:
# GitHub OAuth Settings
GITHUB_CLIENT_ID=client_id_goes_here
GITHUB_CLIENT_SECRET=client_secret_goes_here
Build & Run
# Run the full app
# OR
# Run the databse + backend
# Run the frontend
&&
The app should now be available at http://localhost:5173
Observability (OTel + LGTM)
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 (already scaffolded in .env.example):
OTEL_SERVICE_NAME=rustytime-server
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://127.0.0.1:4317
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=grpc
OTEL_RESOURCE_ATTRIBUTES=deployment.environment=development
# Only when your collector requires authentication headers (comma-separated k=v)
# OTEL_EXPORTER_OTLP_HEADERS=x-otlp-token=changeme
Restart the backend (cargo run) after updating the env vars. The warning about missing OTEL exporter configuration disappears, and spans begin flowing into Tempo. From there you can wire Grafana dashboards against the same Tempo instance alongside your LGTM stack.
Seeding the DB
The seed feature can be enabled in the build to seed the database with a single user and 10000 heartbeats.
WakaTime
When 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)
Star History
License
This project is licensed under the GNU AGPLv3