Skip to main content

Tasks

  1. Create a web server for backend communication
    1. Set up a Linux server machine on DigitalOcean
    2. Acquire a domain name (collabybot.com)
    3. Configure DNS on Cloudflare to connect Linux Server to the domain
    4. Create callback URL for Jira
    5. Create callback URL for GitHub
  2. Implement authorization process between CollabyBot and GitHub account using GitHub’s OAuth API.
    1. Create GitHub OAuth app
    2. Create extra GitHub
    3. Set up the server to request users to log into their GitHub account
    4. Redirect users back to collabybot.com to exchange access tokens
    5. Set up the server to store the received access token to make requests to API on behalf of the user.
  3. Implement authorization process between CollabyBot and Jira account using Jira’s OAuth 2.0
    1. Create Jira OAuth app
    2. Initialize resource owners and have them log into their Atlassian account by directing them to the authorization URL
    3. Define OAuth Scope to Jira management tool
    4. Redirect users back to collabybot.com and cache (or store) credentials for the remainder of the session.
  4. Create an event logging process for notifications using MongoDB
    1. Create an event listener in Python to watch Jira and Github event streams throughout session
  5. Configure the bot to handle events in messaging apps (Slack, Discord, etc.)
    1. Set up Events API
    2. Create event handlers in python
    3. Set up the server to receive JSON payloads and parse them
    4. Set up the server to send a confirmation response within 3 seconds after receiving JSON payloads
    5. Implement a queue to handle inbound events after they are received
  6. Develop an interactive personal task list tool
    1. Create Request URL on the server domain for the /todo slash command
    2. Create /todo slash command in the Slack app’s dashboard
    3. Add logic to parse app_mention event’s payload for text ‘todo new’
  7. Develop an interactive tool for viewing and scheduling team events/meetings
    1. Create actions block with Block Kit API with such interactive elements: buttons and DateTime pickers
    2. Handle block_actions payload received through request url after user submits his/her choice
  8. Configure the server to handle POST requests from GitHub and Jira to receive notifications
    1. Create GitHub listening URL on the server domain
    2. Register the URL with the GitHub app
    3. Create Jira listening URL on the server domain
    4. Register the URL with the Jira administrative console
  9. Implement custom bot’s slash commands
    1. Create callback URL for the slash commands
    2. Handle slash command events so the bot can respond to them
  10. Implement a way for users to configure which GitHub notifications they want to receive
    1. Create an interactive checklist of GitHub event types with Block Kit
    2. Configure bot to send JSON payload request to GitHub OAuth with necessary changes received from the user
    3. Add logic to parse app_mention event’s payload for text ‘github events’
    4. Make bot to handle success and failed cases
      1. Success: create a message with changed settings and send it to the user upon success
      2. Failed: handle errors and provide the user with potential errors