Features
- ✅ Time tracking
- ✅ Stat visualization
- ✅ WakaTime compatible
- ✅ Fast and memory efficient
What is this?
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)
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 database + backend
# Run the frontend
&&
The app should now be available at http://localhost:5173
Seeding the DB
The seed feature can be enabled with a build flag to seed the database with a single user and 10000 fake 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)
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:
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=changeme
Profiling (Pyroscope)
If you're also running Pyroscope for profiling, it can be enabled with:
PYROSCOPE_SERVER_URL=http://localhost:4040
PYROSCOPE_SAMPLE_RATE=99
Star History
License
This project is licensed under the GNU AGPLv3