{"id":15622555,"url":"https://github.com/beeequeue/isthepatchout","last_synced_at":"2025-04-15T06:15:16.764Z","repository":{"id":36973098,"uuid":"357306245","full_name":"beeequeue/isthepatchout","owner":"beeequeue","description":"🔔 A service that automatically checks and notifies for Dota 2 Patches","archived":false,"fork":false,"pushed_at":"2025-04-14T12:03:44.000Z","size":10732,"stargazers_count":23,"open_issues_count":8,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-15T06:15:10.349Z","etag":null,"topics":["dota","dota2","nuxt","nuxt3","patch","supabase","vercel","vue","website"],"latest_commit_sha":null,"homepage":"https://isthepatchout.com","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/beeequeue.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":"2021-04-12T18:55:58.000Z","updated_at":"2025-03-20T00:41:28.000Z","dependencies_parsed_at":"2024-01-29T04:24:28.045Z","dependency_job_id":"65ccfad1-927a-4580-be55-700cd9531d60","html_url":"https://github.com/beeequeue/isthepatchout","commit_stats":{"total_commits":846,"total_committers":2,"mean_commits":423.0,"dds":"0.21749408983451535","last_synced_commit":"03900253c851ca422222d8ee02cab8515b549f54"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeequeue%2Fisthepatchout","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeequeue%2Fisthepatchout/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeequeue%2Fisthepatchout/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeequeue%2Fisthepatchout/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/beeequeue","download_url":"https://codeload.github.com/beeequeue/isthepatchout/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249016641,"owners_count":21198833,"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":["dota","dota2","nuxt","nuxt3","patch","supabase","vercel","vue","website"],"created_at":"2024-10-03T09:54:30.127Z","updated_at":"2025-04-15T06:15:16.741Z","avatar_url":"https://github.com/beeequeue.png","language":"TypeScript","readme":"# isthepatchout\n\nA website that automatically notifies when a new patch is released.\n\nIt also supports notifications via the [Web Push API](https://developer.mozilla.org/en-US/docs/Web/API/Push_API) and [Discord Webhooks](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks). Notifications are sent via the [`notifications`](https://github.com/isthepatchout/notifications) service.\n\nThis is accomplished by using [Supabase](https://supabase.com) and their real-time services to watch the `patches` table for new patches, and then doing what needs to be done based on it!\n\n## Removing notifications\n\n\u003cdetails\u003e\n\u003csummary\u003eDiscord\u003c/summary\u003e\n\n1. Go to the channel's settings \u003cbr/\u003e ![image](https://user-images.githubusercontent.com/472500/185675016-6410de81-32fe-4bb4-95e9-269a39c91620.png)\n1. Go to the integrations \u003cbr/\u003e ![image](https://user-images.githubusercontent.com/472500/185675105-8226e486-8fdb-48a9-b3bf-3abb2ca1d20b.png)\n1. Delete the `isthepatchout` integration \u003cbr/\u003e ![image](https://user-images.githubusercontent.com/472500/185675191-92833356-adcd-4287-a17e-c3f040c738e0.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWeb Push\u003c/summary\u003e\n\nClick the button that does it\n\n![image](https://user-images.githubusercontent.com/472500/185674949-e6dc073f-1c75-46de-ab6d-67f136c6f763.png)\n\nor...\n\nDeny the website access to notifications - google it!\n\n\u003c/details\u003e\n\n## Privacy \u0026 GDPR\n\nNo PII data is stored. It only stores the data needed to send notifications, which is either:\n\n- A Discord Webhook URL (e.g. `https://discord.com/api/webhooks/{random number}/{random string}`)\n- Web Push API URL (e.g. `https://fcm.googleapis.com/fcm/send/{random string}`)\n\nas well as which patch number was last sent to the recipient.\n\n## Architecture\n\n```mermaid\ngraph TD\nworker(Cloudflare Worker)\nvercel(Vercel)\nsupa(Supabase)\nbrowser([Browser])\nnotif(fa:fa-arrow-up-right-from-square notifications service)\ndiscord([Discord Channels])\n\nworker -- Triggers checks on a cron schedule --\u003e vercel\nsupa -- patch data, real-time updates --\u003e browser\nvercel -- hosts SPA, lambda functions --\u003e browser\nvercel -- updates patch, push notif data --\u003e supa\nsupa -- real-time updates --\u003e notif\nnotif -- push notifications --\u003e browser\nnotif -- webhooks --\u003e discord\n\nclick notif href \"https://github.com/isthepatchout/notifications\" \"Repo\"\n\nstyle supa stroke:#1d9065\nstyle worker stroke:orange\n```\n\n## Development\n\nRequires Node ^20, Supabase CLI, Vercel CLI\n\n### Setup\n\n1. Install dependencies: `$ pnpm i`\n1. Set up a local supabase instance: `$ supabase start`\n1. Set up the `.env` file\n   1. Create the file: `$ cp .env.example .env`\n   1. Insert the values from starting the supabase instance, etc.\n1. Install the Vercel CLI: `$ npm i -g vercel`\n1. Run dev server: `$ vercel dev`\n\n_Optional unless you need to work with realtime:_\n\nExecute the following SQL query in the database:\n\n```sql\nALTER PUBLICATION supabase_realtime ADD TABLE patches;\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeeequeue%2Fisthepatchout","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbeeequeue%2Fisthepatchout","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeeequeue%2Fisthepatchout/lists"}