Skip to content

ImShyMike/rustytime

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ•’ blazingly fast time tracking for developers

Crates.io Total Downloads GitHub Actions Workflow Status GitHub last commit Crates.io Version Crates.io License Crates.io Size

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
$ git clone https://github.com/ImShyMike/rustytime && cd rustytime

# Copy the env file
$ cp .env.example .env

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
$ docker compose up

# OR

# Run the database + backend 
$ docker compose up timescaledb rustytime
# Run the frontend
$ cd frontend && bun run dev

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.

cargo run --features seed

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

Star History Chart

License

This project is licensed under the GNU AGPLv3

About

πŸ•’ blazingly fast time tracking for developers

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •