{"id":41075967,"url":"https://github.com/abians/rustrak","last_synced_at":"2026-01-28T11:00:34.334Z","repository":{"id":334026455,"uuid":"1139727427","full_name":"AbianS/rustrak","owner":"AbianS","description":"Ultra-lightweight error tracking server compatible with Sentry SDKs","archived":false,"fork":false,"pushed_at":"2026-01-25T06:05:36.000Z","size":9734,"stargazers_count":4,"open_issues_count":9,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-26T21:34:42.025Z","etag":null,"topics":["error-tracking","rust","sentry"],"latest_commit_sha":null,"homepage":"https://abians.github.io/rustrak/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AbianS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-22T10:36:38.000Z","updated_at":"2026-01-26T16:38:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/AbianS/rustrak","commit_stats":null,"previous_names":["abians/rustrak"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/AbianS/rustrak","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbianS%2Frustrak","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbianS%2Frustrak/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbianS%2Frustrak/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbianS%2Frustrak/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AbianS","download_url":"https://codeload.github.com/AbianS/rustrak/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbianS%2Frustrak/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28811495,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T07:41:26.337Z","status":"ssl_error","status_checked_at":"2026-01-27T07:41:08.776Z","response_time":168,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["error-tracking","rust","sentry"],"created_at":"2026-01-22T13:23:05.478Z","updated_at":"2026-01-27T10:00:33.509Z","avatar_url":"https://github.com/AbianS.png","language":"Rust","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"apps/docs/public/logo.svg\" alt=\"Rustrak\" width=\"80\" height=\"80\" /\u003e\n  \u003ch1\u003eRustrak\u003c/h1\u003e\n  \u003cp\u003e\u003cstrong\u003eUltra-lightweight, self-hosted error tracking compatible with Sentry SDKs\u003c/strong\u003e\u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/AbianS/rustrak/actions/workflows/ci.yml\"\u003e\n      \u003cimg src=\"https://github.com/AbianS/rustrak/actions/workflows/ci.yml/badge.svg\" alt=\"CI\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/AbianS/rustrak/blob/main/LICENSE\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/license-GPL--3.0-blue.svg\" alt=\"License\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/AbianS/rustrak/releases\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/v/release/AbianS/rustrak\" alt=\"Release\" /\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://abians.github.io/rustrak\"\u003eDocumentation\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/AbianS/rustrak/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/AbianS/rustrak/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n## Why Rustrak?\n\nMost error tracking solutions are either expensive SaaS products or heavy self-hosted applications. Rustrak is different:\n\n- **Sentry Compatible** - Works with any existing Sentry SDK (Python, JavaScript, Go, Rust, etc.)\n- **Lightweight** - Server runs with ~50MB memory footprint\n- **Fast** - \u003c50ms P99 ingestion latency, 10k+ events/second\n- **Simple** - Single binary + PostgreSQL, no Redis or complex infrastructure\n\n\u003cimg width=\"1280\" height=\"412\" alt=\"Frame 2\" src=\"https://github.com/user-attachments/assets/7ba6664b-7352-4955-8943-b1429d7491cd\" /\u003e\n\n## Quick Start\n\n### 1. Create `docker-compose.yml`\n\n```yaml\nservices:\n  postgres:\n    image: postgres:16-alpine\n    environment:\n      POSTGRES_USER: ${POSTGRES_USER}\n      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}\n      POSTGRES_DB: ${POSTGRES_DB}\n    volumes:\n      - postgres_data:/var/lib/postgresql/data\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}\"]\n      interval: 5s\n      timeout: 5s\n      retries: 5\n    restart: unless-stopped\n\n  server:\n    image: abians7/rustrak-server:latest\n    ports:\n      - \"${SERVER_PORT}:8080\"\n    environment:\n      - HOST=0.0.0.0\n      - PORT=8080\n      - RUST_LOG=${RUST_LOG}\n      - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}\n      - SESSION_SECRET_KEY=${SESSION_SECRET_KEY}\n      - CREATE_SUPERUSER=${CREATE_SUPERUSER}\n    depends_on:\n      postgres:\n        condition: service_healthy\n    restart: unless-stopped\n\n  ui:\n    image: abians7/rustrak-ui:latest\n    ports:\n      - \"${UI_PORT}:3000\"\n    environment:\n      - RUSTRAK_API_URL=${RUSTRAK_API_URL}\n    depends_on:\n      - server\n    restart: unless-stopped\n\nvolumes:\n  postgres_data:\n```\n\n### 2. Create `.env` file\n\n```bash\n# Database\nPOSTGRES_USER=rustrak\nPOSTGRES_PASSWORD=rustrak\nPOSTGRES_DB=rustrak\n\n# Server\nSERVER_PORT=8080\nRUST_LOG=info\nSESSION_SECRET_KEY=\u003crun: openssl rand -hex 32\u003e\nCREATE_SUPERUSER=admin@example.com:changeme123\n\n# Dashboard\nUI_PORT=3000\nRUSTRAK_API_URL=http://server:8080\n```\n\n### 3. Start Rustrak\n\n```bash\ndocker compose up -d\n```\n\nOpen http://localhost:3000 and login with your `CREATE_SUPERUSER` credentials\n\n![ezgif-3519bd2e7e178ab7](https://github.com/user-attachments/assets/112376f3-67cf-440c-a8ab-fab6b74c9eb4)\n\n\n## Connect Your App\n\nCreate a project in the UI, copy your DSN, and add it to your application:\n\n```python\n# Python\nimport sentry_sdk\nsentry_sdk.init(dsn=\"http://\u003ckey\u003e@localhost:8080/\u003cproject_id\u003e\")\n```\n\n```javascript\n// JavaScript\nimport * as Sentry from \"@sentry/browser\";\nSentry.init({ dsn: \"http://\u003ckey\u003e@localhost:8080/\u003cproject_id\u003e\" });\n```\n\n```go\n// Go\nsentry.Init(sentry.ClientOptions{Dsn: \"http://\u003ckey\u003e@localhost:8080/\u003cproject_id\u003e\"})\n```\n\nWorks with **any** Sentry SDK - no code changes needed if you're migrating from Sentry.\n\n## Architecture\n\n```\n┌─────────────────┐     ┌─────────────────┐     ┌──────────────┐\n│   Sentry SDK    │────▶│  Rustrak Server │────▶│  PostgreSQL  │\n│   (your app)    │     │   (Rust/Actix)  │     │              │\n└─────────────────┘     └─────────────────┘     └──────────────┘\n                               │\n                               ▼\n                        ┌─────────────┐\n                        │  Rustrak UI │\n                        │  (Next.js)  │\n                        └─────────────┘\n```\n\n| Component | Tech | Purpose |\n|-----------|------|---------|\n| Server | Rust + Actix-web | API \u0026 event ingestion |\n| UI | Next.js 16 | Dashboard |\n| Database | PostgreSQL 16 | Storage |\n\n## Docker Images\n\nAvailable on Docker Hub:\n\n```bash\ndocker pull abians7/rustrak-server\ndocker pull abians7/rustrak-ui\n```\n\n| Image | Size | Description |\n|-------|------|-------------|\n| `rustrak-server` | ~20MB | API \u0026 event ingestion |\n| `rustrak-ui` | ~50MB | Next.js dashboard |\n\n## Development\n\n```bash\n# Prerequisites: Rust, Node.js 20+, pnpm, Docker\n\n# Install dependencies\npnpm install\n\n# Start PostgreSQL\ndocker-compose -f docker-compose.dev.yml up -d postgres\n\n# Run server (terminal 1)\ncd apps/server \u0026\u0026 cargo run\n\n# Run UI (terminal 2)\ncd apps/webview-ui \u0026\u0026 pnpm dev\n```\n\n## Documentation\n\nFull documentation is available at **[docs](https://abians.github.io/rustrak/)**\n\n- [Getting Started](https://rustrak.dev/getting-started)\n- [Configuration](https://rustrak.dev/configuration)\n- [API Reference](https://rustrak.dev/api)\n- [Self-Hosting Guide](https://rustrak.dev/self-hosting)\n\n## Contributing\n\nContributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) before submitting a PR.\n\n```bash\n# Run tests\npnpm test\n\n# Run linter\npnpm lint\n\n# Format code\npnpm format\n```\n\n## License\n\nGPL-3.0 License - see [LICENSE](LICENSE) for details.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabians%2Frustrak","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabians%2Frustrak","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabians%2Frustrak/lists"}