{"id":50297582,"url":"https://github.com/danarmor/vtuber-go","last_synced_at":"2026-05-28T10:03:01.162Z","repository":{"id":254754187,"uuid":"734014847","full_name":"DanArmor/vtuber-go","owner":"DanArmor","description":"Telegram bot that reminds users about streams of selected vtubers","archived":false,"fork":false,"pushed_at":"2025-07-18T15:38:29.000Z","size":2851,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-18T19:11:10.203Z","etag":null,"topics":["entgo","golang","holodex","hololive","react","self-hosted","telegram","telegram-bot","telegram-mini-app","typescript","vtuber"],"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/DanArmor.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-12-20T16:51:14.000Z","updated_at":"2025-07-18T14:50:35.000Z","dependencies_parsed_at":"2024-08-25T22:41:50.866Z","dependency_job_id":null,"html_url":"https://github.com/DanArmor/vtuber-go","commit_stats":null,"previous_names":["danarmor/vtuber-go"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DanArmor/vtuber-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanArmor%2Fvtuber-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanArmor%2Fvtuber-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanArmor%2Fvtuber-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanArmor%2Fvtuber-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DanArmor","download_url":"https://codeload.github.com/DanArmor/vtuber-go/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanArmor%2Fvtuber-go/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33603475,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["entgo","golang","holodex","hololive","react","self-hosted","telegram","telegram-bot","telegram-mini-app","typescript","vtuber"],"created_at":"2026-05-28T10:02:55.906Z","updated_at":"2026-05-28T10:03:01.154Z","avatar_url":"https://github.com/DanArmor.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vtuber-go\n\n- [About](#about)\n- [Running instance](#running-instance)\n- [How to selfhost](#how-to-selfhost)\n  - [Deploy](#deploy)\n  - [Configuration](#configuration)\n  - [How to populate data](#how-to-populate-data)\n\n## About\n\nTelegram bot that reminds users about streams of selected vtubers.\n\n![message example](/backend/internal/resources/photos/files/1.jpg)\n\nIt has user interface implemented via Telegram Mini App mechanism. You can access it by pressing 'Menu' button in the lower left corner.\n\nSelect the streamers whose broadcasts you want to be notified about. You can use filters by:\n\n- *name*;\n- *company*;\n- *wave*;\n- *all/selected/not selected property*.\n\nAlso in \"Show\" tab you can hide tags of vtubers and avatars.\n\n![screen example](/backend/internal/resources/photos/files/2.jpg)\n\nIn \"Settings\" tab you can select the shift from GMT of your local time to get proper \"start time\" value. If you didn't select any - it will format start time as GMT +0.\n\n![screen example](/backend/internal/resources/photos/files/3.jpg)\n\nAlso you can click on streamer in list and got streamer card with links to their accounts on youtube/twitch/twitter and etc.\n![screeb example](/backend/internal/resources/photos/files/4.jpg)\n\nTo get help message send `/start` command to the bot.\n\nCan be used as learning example of Telegram Mini App\n\nBased on example from [vkruglikov/react-telegram-web-app](https://github.com/vkruglikov/react-telegram-web-app)\n\nBuilt with Golang + Ent + Gin / Typescript + React + Ant Design.\n\n## Running instance\n\n[Link to running instance](https://t.me/vtuber_go_bot).\n\nSends a notification 30 minutes before the stream.\n\n## How to selfhost\n\n### Deploy\n\nYou need 3 things:\n\n- [Holodex API key](https://holodex.net/);\n- [Telegram Bot (its token)](https://t.me/botfather);\n- Server to run on with the access to external users to connect to it (to access web interface. Also you want some domain to got certificate to run web interface over https).\n\nWhen you setuped your server, you need to clone the repo to it, enter `.docker` dir, change .env and config.yaml according to your needs and run:\n\n```bash\ndocker compose up -d\n```\n\nDone - it will build all the images and run the application.\n\n### Configuration\n\nClarification of some config.yaml values:\n\n```bash\nbase_path - the path after hostname and port to bind backend to.\nexpiration_hours - expiration time in hours for jwt token\nadmin_token - token for administration endpoints\ntime_notify_after - time threshold in minutes after which the notification should be sent\ntime_step - time step in minutes for check streams time. If you set it to 2 - it will check time of streams every 2 minutes.\n```\n\nAlso don't forget to change backend url in `frontend/src/config.ts` accordingly to your setup and setup database params in .env *and* config.yaml.\n\nFurthermore, you need to create empty `secrets.ts` file in `frontend/src` directory.\n\n### How to populate data\n\nYou can use Holodex API to get data about vtubers. Example:\n\n```shell\ncurl --request GET \\\n--header \"X-APIKEY: \u003cYOUR_API_KEY\u003e\" \"https://holodex.net/api/v2/channels?org=Hololive\u0026limit=50\" \u003e out.txt\n```\n\nAnd use data from out.txt to send it into Vtuber-Go (`/api/admin/vtubers`) with curl or [Postman](https://www.postman.com/) in format:\n\nheader: `ADMIN-TOKEN: \u003cYOUR_ADMIN_TOKEN\u003e`\n\nbody:\n\n```json\n{\n    \"vtubers\": \u003coutput of the /channels endpoint of Holodex API\u003e\n}\n```\n\nAt the moment you can use only vtubers, that are available with Holodex, cause we use Holodex API to check available streams.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanarmor%2Fvtuber-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanarmor%2Fvtuber-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanarmor%2Fvtuber-go/lists"}