{"id":13836614,"url":"https://github.com/brunojppb/turbo-racer","last_synced_at":"2026-02-25T01:35:57.102Z","repository":{"id":55459878,"uuid":"523064562","full_name":"brunojppb/turbo-racer","owner":"brunojppb","description":"High-performance distributed remote cache for Turborepo.","archived":false,"fork":false,"pushed_at":"2026-02-12T11:02:27.000Z","size":5714,"stargazers_count":34,"open_issues_count":11,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-12T19:51:45.593Z","etag":null,"topics":["docker","elixir","javascript","monorepo","phoenix","turborepo","typescript"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brunojppb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2022-08-09T18:24:59.000Z","updated_at":"2025-12-15T17:48:11.000Z","dependencies_parsed_at":"2024-05-30T01:27:20.371Z","dependency_job_id":"399d38a7-1e25-4e4b-a9dd-aa33644523ff","html_url":"https://github.com/brunojppb/turbo-racer","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/brunojppb/turbo-racer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brunojppb%2Fturbo-racer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brunojppb%2Fturbo-racer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brunojppb%2Fturbo-racer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brunojppb%2Fturbo-racer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brunojppb","download_url":"https://codeload.github.com/brunojppb/turbo-racer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brunojppb%2Fturbo-racer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29807994,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T22:43:48.403Z","status":"ssl_error","status_checked_at":"2026-02-24T22:43:18.536Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["docker","elixir","javascript","monorepo","phoenix","turborepo","typescript"],"created_at":"2024-08-04T15:00:50.984Z","updated_at":"2026-02-25T01:35:57.075Z","avatar_url":"https://github.com/brunojppb.png","language":"Elixir","funding_links":[],"categories":["Elixir","Remote Cache Servers"],"sub_categories":[],"readme":"# Turbo Racer\n\n![Workflow badge](https://github.com/brunojppb/turbo-racer/actions/workflows/checks.yml/badge.svg?branch=main)\n\nAn open-source backend with a Web UI for managing your\n[Turborepo](https://turbo.build/repo) cache.\n\n## Features\n\nThere are a few open-source turborepo cache backends out there, but all of them\nseem to lack management around tokens and teams. If you work in an enterprise,\naccess management is crucial for keeping permissions segregated and I could not\nfind anything supporting that.\n\nSo I've built my own remote cache. Besides giving you full control\nover creating teams, issuing tokens for specific teams and who has access to a\ngiven token, it also allows you to go from a simple deployment using your file\nsystem as artifact storage to going full scale using a S3-compatible backend\nservice.\n\nHere is what is available for you:\n\n- [x] Store artifacts\n  - [x] Using file system\n  - [x] Using S3 (Tested with the following)\n    - [x] [Cloudflare R2](https://developers.cloudflare.com/r2/platform/s3-compatibility/api/)\n    - [x] [AWS S3](https://aws.amazon.com/s3/)\n- [x] Cache busting\n  - [x] Automatic artifact busting to keep your disk or your S3 bill sane.\n    - [x] Configurable busting period via environment variable (see\n          `docker-compose.prod.yml`)\n- [x] Management via a Web UI for\n  - [x] Teams\n  - [x] Tokens\n  - [x] User sign-up/sign-in (Will refine this part with more permission\n        controls)\n- [x] Whether users can create accounts (Admin settings)\n\n## Web UI for managing accounts, tokens and roles\n\nTurbo Racer provides a fully fledged Web UI for managing user accounts, roles\nand tokens for cache access and segmentation. Below you can see a few screenshots\non how it looks like:\n\n| Teams                                    | Settings                                       |\n| ---------------------------------------- | ---------------------------------------------- |\n| ![Teams screen](./assets/docs/teams.jpg) | ![Settings screen](./assets/docs/settings.jpg) |\n\n| Tokens                                     | Users                                    |\n| ------------------------------------------ | ---------------------------------------- |\n| ![Tokens screen](./assets/docs/tokens.jpg) | ![Users screen](./assets/docs/users.jpg) |\n\n### Admin account when running for the first time\n\nOnce you deploy Turbo Racer for the first time, you must create an admin\naccount. The first account you signup with from the `Sign up` Web UI will be the\nsystem admin.\n\nAdmins can control whether users can create accounts so they can login and\nmanage teams and tokens.\n\n## What is coming next\n\n- [ ] Statistics dashboard\n\n## Deploying to Production\n\nTurbo Racer is designed to be deployed with Docker. The simplest way is to use\n[docker-compose](https://docs.docker.com/compose/). Have a look at the\n`docker-compose.prod.yml` in the root directory for an deployment example.\n\n### Docker images\n\nWhenever a new release is out, a new Docker image is built and pushed to Docker\nhub.  \nHere you can find the latest tags:\n\n- Docker at [brunojppb/turbo-racer](https://hub.docker.com/r/brunojppb/turbo-racer/tags)\n- Github Container Registry at [brunojppb/turbo-racer](https://github.com/brunojppb/turbo-racer/pkgs/container/turbo-racer)\n\n### Deploy to Digital Ocean\n\nYou can use our Digital Ocean template to get this running quickly in a droplet.\n\n[![Deploy to Digital Ocean](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/brunojppb/turbo-racer/tree/main\u0026refcode=3a18edba5ee4)\n\n## Dev Dependencies\n\nTo run this app locally, you need the following dependencies installed:\n\n- [Elixir 1.18](https://elixir-lang.org/) and\n  [Erlang OTP 27](https://www.erlang.org/)\n  - You can quickly do it with [asdf](https://asdf-vm.com/). Once asdf is\n    installed and then execute `asdf install` within the context of the\n    `turbo-racer` directory. It will automatically pick up the right Elixir and\n    Erlang versions defined in the `.tool-versions` file at the root of the repo.\n- [Postgres 14](https://www.postgresql.org/)\n  - The simplest way is to have\n    [Docker](https://docs.docker.com/engine/install/centos/) installed and run\n    `docker-compose up`. It will start up a Postgres container with a database\n    ready for your dev server and for running tests.\n\n### Starting development\n\nTo start your Phoenix server:\n\n- Run `mix setup` to install and setup dependencies\n- Start Phoenix endpoint with `mix phx.server` or inside IEx with\n  `iex -S mix phx.server`\n\nNow you can visit [`localhost:4000`](http://localhost:4000) from your browser.\n\n### Running tests\n\nMake sure that the Postgres container is running and execute `mix test`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrunojppb%2Fturbo-racer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrunojppb%2Fturbo-racer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrunojppb%2Fturbo-racer/lists"}