isthepatchout
isthepatchout copied to clipboard
🔔 A service that automatically checks and notifies for Dota 2 Patches
isthepatchout
A website that automatically notifies when a new patch is released.
It also supports notifications via the Web Push API and Discord Webhooks. Notifications are sent via the notifications service.
This is accomplished by using Supabase and their real-time services to watch the patches table for new patches, and then doing what needs to be done based on it!
Removing notifications
Discord
- Go to the channel's settings

- Go to the integrations

- Delete the
isthepatchoutintegration

Web Push
Click the button that does it

or...
Deny the website access to notifications - google it!
Privacy & GDPR
No PII data is stored. It only stores the data needed to send notifications, which is either:
- A Discord Webhook URL (e.g.
https://discord.com/api/webhooks/{random number}/{random string}) - Web Push API URL (e.g.
https://fcm.googleapis.com/fcm/send/{random string})
as well as which patch number was last sent to the recipient.
Architecture
graph TD
worker(Cloudflare Worker)
vercel(Vercel)
supa(Supabase)
browser([Browser])
notif(fa:fa-arrow-up-right-from-square notifications service)
discord([Discord Channels])
worker -- Triggers checks on a cron schedule --> vercel
supa -- patch data, real-time updates --> browser
vercel -- hosts SPA, lambda functions --> browser
vercel -- updates patch, push notif data --> supa
supa -- real-time updates --> notif
notif -- push notifications --> browser
notif -- webhooks --> discord
click notif href "https://github.com/isthepatchout/notifications" "Repo"
style supa stroke:#1d9065
style worker stroke:orange
Development
Requires Node ^20, Supabase CLI, Vercel CLI
Setup
- Install dependencies:
$ pnpm i - Set up a local supabase instance:
$ supabase start - Set up the
.envfile- Create the file:
$ cp .env.example .env - Insert the values from starting the supabase instance, etc.
- Create the file:
- Install the Vercel CLI:
$ npm i -g vercel - Run dev server:
$ vercel dev
Optional unless you need to work with realtime:
Execute the following SQL query in the database:
ALTER PUBLICATION supabase_realtime ADD TABLE patches;