{"id":25457312,"url":"https://github.com/senora-dev/self-service-slack-bot-blueprint","last_synced_at":"2025-11-02T12:30:30.029Z","repository":{"id":277806052,"uuid":"930852923","full_name":"Senora-dev/self-service-slack-bot-blueprint","owner":"Senora-dev","description":"A Slack bot that enables self-service actions using AWS services. Easily extendable—just add an action folder with a modal.json (form UI) and buildspec.yaml (backend execution).  🚀","archived":false,"fork":false,"pushed_at":"2025-02-16T08:15:13.000Z","size":109,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-02-16T09:19:55.847Z","etag":null,"topics":["bot","developerexperience","devex","platform","platformengineering","self-service","serverless","slack","slackbot"],"latest_commit_sha":null,"homepage":"https://Senora.dev","language":"Python","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/Senora-dev.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":"2025-02-11T10:15:52.000Z","updated_at":"2025-02-16T08:17:59.000Z","dependencies_parsed_at":"2025-02-16T09:30:03.840Z","dependency_job_id":null,"html_url":"https://github.com/Senora-dev/self-service-slack-bot-blueprint","commit_stats":null,"previous_names":["senora-dev/self-service-slack-bot-blueprint"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Senora-dev%2Fself-service-slack-bot-blueprint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Senora-dev%2Fself-service-slack-bot-blueprint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Senora-dev%2Fself-service-slack-bot-blueprint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Senora-dev%2Fself-service-slack-bot-blueprint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Senora-dev","download_url":"https://codeload.github.com/Senora-dev/self-service-slack-bot-blueprint/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239394714,"owners_count":19631122,"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":["bot","developerexperience","devex","platform","platformengineering","self-service","serverless","slack","slackbot"],"created_at":"2025-02-18T02:17:00.914Z","updated_at":"2025-11-02T12:30:29.956Z","avatar_url":"https://github.com/Senora-dev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🤖 Self-Service Slack Bot Blueprint\n\n![Architecture](assets/architecture.png)  \n\nThis project enables you to create and extend a Slack bot with custom actions using AWS services.  \nIt allows you to add actions easily by simply creating a folder in the `actions` directory.  \nEach action folder includes:  \n- `modal.json` → Defines the form displayed to users.  \n- `buildspec.yaml` → Defines the backend commands executed by AWS CodeBuild.  \n\n---\n\n## 📁 Project Structure\n\nThis project consists of three main components:\n\n### 1. `bot/`\n- Contains the Python source code for the Slack bot.\n- Includes `template.yaml` for deployment.\n- Reads configurations from the `actions/` folder to present actions to users.\n\n### 2. `runners/`\n- Contains Terraform code to create AWS CodeBuild projects for each action.\n- Each project corresponds to an action and executes the respective `buildspec.yaml`.\n\n### 3. `bot/src/slack_bot/actions/`\n- Contains individual action folders.\n- Each action folder must include:  \n  - `modal.json` – Defines the Slack modal UI.  \n  - `buildspec.yaml` – Defines the backend execution logic.\n\n---\n\n## ✨ How to Add a New Action\n\n1. **Create an Action Folder**  \n   - Under `bot/src/slack_bot/actions/`, create a new folder (action name should be without spaces).\n   - This name will be used for:\n     - The AWS CodeBuild project.\n     - The corresponding action in the Slack bot.\n\n2. **Define `modal.json`**  \n   - Use the [Slack Block Kit Builder](https://api.slack.com/tools/block-kit-builder) to create the modal UI.  \n   - Save the JSON structure in `modal.json` inside the action folder.\n\n3. **Define `buildspec.yaml`**  \n   - This file contains the commands executed by AWS CodeBuild.  \n   - Define automation logic such as provisioning resources, executing scripts, or running other tasks.\n\n---\n\n## ⚙️ How the Bot Works\n\n1. The bot presents a list of available actions based on the folders in the `actions/` directory.\n2. When a user selects an action, the corresponding `modal.json` is displayed.\n3. After submission, the bot triggers the AWS CodeBuild project defined in `buildspec.yaml`.\n\n### 🔧 Customizing Actions\n- Modify `modal.json` to change the form fields.\n- Update `buildspec.yaml` to adjust the backend logic.\n\nFor more details on modals, check the [Slack Block Kit Builder](https://app.slack.com/block-kit-builder).\n\n---\n\n## 📦 Deployment\n\n1. Run the following command to deploy the bot and infrastructure:  \n  ```sh\n  make all\n  ```\n  This command will:\n\n - Deploy the CloudFormation stack (including the bot function and notifier function).\n - Create the AWS CodeBuild projects (\"Runners\") using Terraform.\n2. Set the API Gateway URL in the [Slash Command URL](https://api.slack.com/apps/A08769JU3HB/slash-commands?) \u0026 [Interactivity Request URL](https://api.slack.com/apps/A08769JU3HB/interactive-messages?) fields in the Slack App management console.\n3. Fill the secret that has been created (```/${BotName}/slack-secret-token```) with the value:\n```json\n{\n   \"slack_signing_secret\":\"[PUT_HERE_SECRET]\",\n   \"slack_bot_token\":\"[PUT_HERE_TOKEN]\"\n   }\n```\n---\n\n## 🤝 Contributing\nContributions are welcome!\nFork the repository and submit a pull request with bug fixes, improvements, or new features.\n\nFor more details, reach out to the repository owner.\nVisit [Senora.dev](https://Senora.dev)💜 for more platform-related services.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsenora-dev%2Fself-service-slack-bot-blueprint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsenora-dev%2Fself-service-slack-bot-blueprint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsenora-dev%2Fself-service-slack-bot-blueprint/lists"}