Skip to content

wowvendor/slack-standup

 
 

Repository files navigation

slack-standup

An application for Slack based standups. This is a Flask server application to handle Slack callbacks, create/submit standups, report to a channel etc.

Check usage and API further in the README.

Screenshots

Slash command


Standup form


Reporting submissions on the channel


User standup notification

Configuration

  • Create a new standup app in your Slack workspace
  • Generate tokens and secrets
  • Create slash command to trigger the modal (eg: /standup)
  • Configure the HTTP URL for the slash command to: http://127.0.0.0:5000/slack/standup-trigger/. Replace 127.0.0.1:5000 with your deployment host/port.
  • Add HTTP URL in the "Interactivity & Shortcuts" to handle the form submission.
    • Enable "Interactivity"
    • URL: http://127.0.0.1:5000/slack/submit_standup/. Replace 127.0.0.1:5000 with your deployment host/port.

Some environment variables for the application:

export SLACK_API_TOKEN="<slack-api-token-here>"
export SLACK_SIGNING_SECRET="<slack-signing-secret-here>"
export SQLALCHEMY_DATABASE_URI="sqlite:////path/to/standup.db"
export STANDUP_CHANNEL_ID="C0XXXXXXXXX"  # Channel where submissions will be posted

Docker

docker-compose up

Usage

Use the slash command to trigger with the standup you want to fill

/standup

This will open any standup which is added for the user who triggered it

Alternatively you can also configure user DM notifications which will allow them to open form from the notification message. Check API below in "Notifications and Reporting" section

API

There are APIs to fetch, create, update and delete users, standup forms, user submissions over a date range etc.. These can be used to integrate with a UI application.

API usage, examples and doc at: https://documenter.getpostman.com/view/803934/TVYKbwpd

DB

This application uses SQLite DB which can be replaced with any other DB by the users of this repo. I am using SQLAlchemy as the ORM.

Notifications and Reporting

  • Currently, there's a single GET API endpoint which can be scheduled as a cron to report all the submitted standups in a channel: /slack/publish_standup/
  • You can notify users to submit standup by hitting the /slack/notify_usesrs/ endpoint. It will send DMs to people who have not submitted the standup (check screenshot above).

License

MIT

About

An application for Slack based daily standups

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 95.4%
  • Dockerfile 3.1%
  • Mako 1.5%