{"id":15412925,"url":"https://github.com/ascorbic/turbofan","last_synced_at":"2025-04-19T04:15:27.880Z","repository":{"id":206661321,"uuid":"717406928","full_name":"ascorbic/turbofan","owner":"ascorbic","description":"Self-hosted Turborepo remote cache","archived":false,"fork":false,"pushed_at":"2023-11-15T09:41:24.000Z","size":213,"stargazers_count":28,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-29T06:51:15.827Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ascorbic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2023-11-11T11:59:51.000Z","updated_at":"2025-01-06T08:59:45.000Z","dependencies_parsed_at":"2023-11-15T10:40:48.964Z","dependency_job_id":"1ddee4d6-c699-465c-a2e9-e3f8582ebf66","html_url":"https://github.com/ascorbic/turbofan","commit_stats":{"total_commits":29,"total_committers":4,"mean_commits":7.25,"dds":0.5517241379310345,"last_synced_commit":"9c6315d065669a29be47599c437c8b8dfc34682b"},"previous_names":["ascorbic/turbofan"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascorbic%2Fturbofan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascorbic%2Fturbofan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascorbic%2Fturbofan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascorbic%2Fturbofan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ascorbic","download_url":"https://codeload.github.com/ascorbic/turbofan/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249191332,"owners_count":21227546,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-10-01T16:54:51.312Z","updated_at":"2025-04-19T04:15:27.861Z","avatar_url":"https://github.com/ascorbic.png","language":"TypeScript","readme":"\u003cdiv align=\"center\"\u003e\n\n![Turbofan](https://github.com/ascorbic/turbofan/assets/213306/eae9ae24-27da-4812-b348-2dbec42c0f9e)\n\n## Self-hosted remote cache for Turborepo\n\n\u003c/div\u003e\n\nWe're all fans of [Turborepo](https://turbo.build), but for the speediest Full Turbo builds you need a remote cache. Turbofan lets you deploy your own, self-hosted remote cache in just a few clicks.\n\n## Usage\n\nYou have two options for deploying Turbofan:\n\n### Shared instance\n\nDeploy a standalone instance of Turbofan that can be used by multiple Turborepo projects\n\nClick the button below to deploy Turbofan to Netlify:\n\n[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/ascorbic/turbofan-server)\n\nYou'll need to enter a shared secret that will be used to authenticate with Turbofan and then provide this secret to all of your Turborepo projects. A quick way to generate a token on Mac OS or Linux is to run `uuidgen` in your terminal.\n\n### Per-project instance\n\nYou can add a Turbofan instance to your Turborepo project by adding a Netlify Edge Function to your project. There is no need to install anything as it can be imported directly from deno.land.\n\n```typescript\n// netlify/edge-functions/turbofan.ts\n\nexport { handleRequest as default } from \"https://deno.land/x/turbofan/mod.ts\";\n\nexport const config = {\n  method: [\"GET\", \"PUT\"],\n  path: \"/v8/artifacts/:hash\",\n  cache: \"manual\",\n};\n```\n\n## Setting up your Turborepo project\n\nOnce you have deployed Turbofan, you will need to configure your Turborepo project to use it. You can do this by creating the following file in your project and committing it to your repository:\n\n`.turbo/config.json`\n\n```json\n{\n  \"teamid\": \"team_anythingyouwant\",\n  \"apiurl\": \"https://\u003cyour cache url goes here\u003e.netlify.app\"\n}\n```\n\nThe teamid can be anything you want, as long as it starts with `team_`. This will segment your project in the cache.\n\nThe API url should be the URL of your Turbofan instance. This will either be the URL of the standalone cache, or the URL of your Netlify site if you are using a per-project instance.\n\nYou then need to provide the shared secret as an env var to the builds:\n\n```env\nTURBO_TOKEN=your-secret-here\n```\n\nYou can set this in the Netlify UI, or in the CLI by running `netlify env:set`.\n\n## Troublehooting\n\nYou can check that it is working by looking for \"Remote caching enabled\" in the logs. Be aware that the first build for a per-site instance will not use the cache, as the Edge Function needs to be deployed before it can be used.\n\nYou can check the logs for the Edge Function to see if the artifacts are being cached and returned correctly.\n\nIf you don't see \"Remote caching enabled\", check that you have set the `TURBO_TOKEN` env var correctly and have created the `.turbo/config.json` file.\n\n## License\n\nCopyright 2023 Matt Kane. Available under the terms of the MIT license.\n","funding_links":[],"categories":["Remote Cache Servers"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fascorbic%2Fturbofan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fascorbic%2Fturbofan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fascorbic%2Fturbofan/lists"}