{"id":49222096,"url":"https://github.com/mustackable-dev/botyo","last_synced_at":"2026-04-24T04:07:30.952Z","repository":{"id":344406957,"uuid":"1136262184","full_name":"mustackable-dev/Botyo","owner":"mustackable-dev","description":"Botyo is a lightweight Discord notification bot","archived":false,"fork":false,"pushed_at":"2026-03-14T14:14:36.000Z","size":14,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-15T01:24:43.479Z","etag":null,"topics":["a","botyo","is"],"latest_commit_sha":null,"homepage":"","language":"C#","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/mustackable-dev.png","metadata":{"files":{"readme":"docs/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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-17T11:15:57.000Z","updated_at":"2026-03-14T14:14:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mustackable-dev/Botyo","commit_stats":null,"previous_names":["mustackable-dev/botyo"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/mustackable-dev/Botyo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustackable-dev%2FBotyo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustackable-dev%2FBotyo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustackable-dev%2FBotyo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustackable-dev%2FBotyo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mustackable-dev","download_url":"https://codeload.github.com/mustackable-dev/Botyo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustackable-dev%2FBotyo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32208518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T03:15:14.334Z","status":"ssl_error","status_checked_at":"2026-04-24T03:15:11.608Z","response_time":64,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["a","botyo","is"],"created_at":"2026-04-24T04:07:29.994Z","updated_at":"2026-04-24T04:07:30.942Z","avatar_url":"https://github.com/mustackable-dev.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Mustackable](https://avatars.githubusercontent.com/u/200509271?s=96\u0026v=4)](https://mustackable.dev)\n\n\u003c!-- TOC --\u003e\n  * [Intro](#intro)\n  * [Features](#features)\n  * [Getting Started](#getting-started)\n    * [1. Create a Discord Webhook](#1-create-a-discord-webhook)\n    * [2. Configure environment variables](#2-configure-environment-variables)\n    * [3. Run with Docker Compose](#3-run-with-docker-compose)\n  * [Authentication](#authentication)\n  * [API Overview](#api-overview)\n  * [Tech Stack](#tech-stack)\n  * [License](#license)\n\u003c!-- TOC --\u003e\n\n## Intro\n\n**Botyo** is a lightweight Discord notification bot with a REST API and SQLite persistence. It was built in 12 hours as a coding challenge.\n\n## Features\n\n- Schedule unlimited Discord notifications\n- Cron-based scheduling\n- REST API with Swagger UI\n- API key authentication\n- SQLite persistence\n- Designed to run in Docker\n\n## Getting Started\n\n### 1. Create a Discord Webhook\nYou’ll need a Discord **channel webhook URL**.\n\nFollow Discord’s official guide:  \nhttps://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks\n\n### 2. Configure environment variables\n\nCreate a `.env` file:\n\n```env\nApiKey=your-secure-api-key\nDiscord__WebHook=https://discord.com/api/webhooks/...\n```\n\n### 3. Run with Docker Compose\n\n```bash\ndocker compose up -d\n```\n\nThe API will be available at:\n\n- Swagger UI: http://localhost:55421/swagger\n- API Base URL: http://localhost:55421\n\n\n## Authentication\n\nAll endpoints are secured via an API key.\n\nSend the key in the request header:\n\n```http\nApiKey: your-secure-api-key\n```\n\n## API Overview\n\nMain endpoints:\n\n- `POST /Notifications` – Create a notification\n- `GET /Notifications` – List notifications\n- `GET /Notifications/{id}` – Get a notification\n- `PUT /Notifications/{id}` – Update a notification\n- `DELETE /Notifications/{id}` – Delete a notification\n- `PATCH /Notifications/{id}/Start` – Enable notification\n- `PATCH /Notifications/{id}/Stop` – Disable notification\n- `POST /Notifications/{id}/Run` – Run immediately\n\nAll scheduling is done using cron expressions with **UTC time**!\n\n## Tech Stack\n\n- .NET 10\n- ASP.NET Core\n- SQLite\n- Docker / Docker Compose\n- Swagger (OpenAPI)\n\n## License\n\nMIT — feel free to use, modify, and improve.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmustackable-dev%2Fbotyo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmustackable-dev%2Fbotyo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmustackable-dev%2Fbotyo/lists"}