{"id":16990849,"url":"https://github.com/blenderskool/diode","last_synced_at":"2025-03-22T15:30:56.695Z","repository":{"id":44723148,"uuid":"427593327","full_name":"blenderskool/diode","owner":"blenderskool","description":"🔌 Open-source API proxy server with an easy-to-use dashboard for configuring middlewares and secrets.","archived":false,"fork":false,"pushed_at":"2023-12-25T18:09:31.000Z","size":915,"stargazers_count":48,"open_issues_count":3,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-18T13:15:38.736Z","etag":null,"topics":["api","dashboard","middleware","one-click","proxy"],"latest_commit_sha":null,"homepage":"https://diode.vercel.app","language":"TypeScript","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/blenderskool.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}},"created_at":"2021-11-13T07:02:10.000Z","updated_at":"2025-02-20T13:22:31.000Z","dependencies_parsed_at":"2024-10-28T13:23:45.932Z","dependency_job_id":"69d0f790-78e0-41a6-be36-a8a098963208","html_url":"https://github.com/blenderskool/diode","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blenderskool%2Fdiode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blenderskool%2Fdiode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blenderskool%2Fdiode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blenderskool%2Fdiode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blenderskool","download_url":"https://codeload.github.com/blenderskool/diode/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244978494,"owners_count":20541862,"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":["api","dashboard","middleware","one-click","proxy"],"created_at":"2024-10-14T03:23:55.854Z","updated_at":"2025-03-22T15:30:56.145Z","avatar_url":"https://github.com/blenderskool.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eDiode 🔌\u003c/h1\u003e\n  \u003cp\u003e\u003cb\u003eOpen source API proxy server with an easy-to-use dashboard for configuring middlewares and secrets.\u003c/b\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n![](https://user-images.githubusercontent.com/21107799/141688536-1dfc2db7-d334-493e-b23f-fe7e9cc1b6af.png)\n\n\n### What does Diode do?\nThird party APIs make it easy to integrate functionalities across apps. But using them on a purely front-end project is a hassle. Most of the time, the API endpoints require an API key which cannot be exposed on the frontend. Hence, most of us setup a proxy backend server that makes the request to the third party API with the API keys and make the frontend request this proxy server instead. While it might be a trivial solution that shouldn't take a lot of time to implement, it can get very repeatable and tedious over time.\n\n**Diode solves this** problem by abstracting this proxy server and allowing you to add and configure as many API routes and consume them directly on the frontend **without having to worry about exposing any API keys**! Since Diode sits in between all the requests going to the third-party server, it also makes it easy to add **commonly used middlewares to the API route** with just a click!  \n_Fun fact: All of this happens without you having to write a single line of code._\n\n### Features\n- 💡 Easy to use dashboard.\n- ⏩ Query parameters and request headers forwarding.\n- 🕶️ Encrypted Secrets that get dynamically injected when making request.\n- 🔮 Request and Response structure preservation.\n- One-click middlewares for:\n  - 🚫 IP/HTTP restriction\n  - ⏱️ Rate-limiting\n  - 📌 Caching\n- 💙 Open source, can be self-hosted.\n\n\n### Try it out\n[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/blenderskool/diode)\n[![Try in Play-With-Docker](./public/try-with-docker.svg)](https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/blenderskool/diode/master/docker-compose.yml)\n\n_Note: Deploying on Heroku free plan may cause higher latencies_\n\n## Project Setup\n### Pre-requisites:\n- Node.js and npm installed.\n- Postgres installed.\n- Redis installed.\n\n### Clone the repo, install dependencies\n```bash\ngit clone https://github.com/blenderskool/diode.git\ncd diode\nnpm install\n```\n\n### Setup environment variables\nCreate a `.env` file and provide values for all the variables listed in `.env.example` file.\n\n### Setup database\nIn the root of this project, run the following command to setup the database schema\n```bash\nnpx prisma db push\n```\n\n### Build the project\n```bash\nnpm run build\n```\n\n### Start the server\n```bash\nnpm run start\n```\nDiode will start running at port `3000`.\n\n### Explore the database\nPrisma Studio makes it easy to explore and edit the data in the database. You can start it by running\n```bash\nnpx prisma studio\n```\nPrisma Studio will be running at port `5555`.\n\n## License \nDiode is [MIT Licensed](https://github.com/blenderskool/diode/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblenderskool%2Fdiode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblenderskool%2Fdiode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblenderskool%2Fdiode/lists"}