Skip to content

Slackpoint - A gamified agile development slack bot. Repository for CSC 510 Software Engineering project 2, created by Group 3: Shreya Maheshwari, Nandini Mundra, Palash Rathod, Tanvi Sinha, and Kartik Soni

License

Notifications You must be signed in to change notification settings

kartikson1/slackpoint

Repository files navigation

Slackpoint 2.0

This is an image DOI

License: MIT Github GitHub Workflow Status GitHub top language GitHub last commit codecov

GitHub issues GitHub closed issues GitHub forks GitHub contributors GitHub Workflow Status

Click on the image below to view the demo video of the project

Demo Vidoe of the project

Gamify your slack tasks! 💻

A lot of teams use Slack to get things done. However when you have ton of things to do with no short term rewards in sight, it gets difficult to check off those tasks. That's where SlackPoint comes to the rescue! SlackPoint aims to make work more fun and get people motivated to finish their tasks by gamifying Slack!

Built with

Flask
Python
PostgreSQL

Scalability

  • Deployment of the server from ngrok to the cloud ☁️ - via Heroku. We no longer need re-routing of localhost to ngrok since our server has been deployed on the cloud (https://slackpoint-server.herokuapp.com/).

  • Deployment of the database from local to the cloud ☁️ - on Heroku Postgres which uses AWS EC2 instances at the backend to scale up and down dewpending on the amount of data.



Chat Channel

Features

Here is a list of features added during phase 2 of this project:

  • Functionality for assigning a user while creating task - tasks can now be assigned to different members of the slack channel.
  • Ensuring that the person updating task to completed has to be the same person who the task has been assigned to.
  • Viewpending tasks for me - Any user can now see what tasks assigned to them specifically are pending. This enables real-time agile board style coordination on slack.
  • Notifications: The person who the task is assigned to gets notified when this happens. Notifications have also been added for a variety of edge cases (for instance, if a user tries to mark a task not assigned to them as completed)
  • Update tasks: A major functionality that allows updating tasks has been added. A wide array of edge cases have been handled here (such as a person who has not created a task cannot update it, etc).
  • View tasks pending today: Users can view the list of tasks pending today.

Project documentation

The docs folder incorporates all necessary documents and documentation in our project.

Tools used

Code formatter: black and flake8

Tech stack: Flask, PostgreSQL

📖 Getting started:

Run Locally

Clone the project

  git clone https://github.com/kartikson1/slackpoint.git

Go to the project directory

  cd Slackpoint

Create a virtual environment:

  python3 -m venv test_env

Activate the virtual environment: Linux/MacOS:

  source test_env/bin/activate

Windows:

  ./test_env/Scripts/activate

Install dependencies

  pip install -r requirements.txt

Log on to api.slack.com and create your own slack bot.

On ngrok shell run 'ngrok http 5000' to get the public IP address in your local machine.

Add all the /commands in the bot configuration and paste the url from ngrok shell to requesting url section in the bot configuration.

Finally, change the URL in interactivity and shortcuts, URL: /slack/interactive-endpoint.

Start the server

  flask run
 - Site will be hosted at:
   `http://127.0.0.1:5000/`

Before creating the database,

(1) Create a database in PgAdmin with any name convention.

(2) Change the local path of PostgreSQL in .env file (DATABASE_URL= 'postgresql://postgres:(password)@localhost/(database name from PgAdmin')

(3) Provide the Slack sigining secret and Slack bot token from the bot you created.

To create tables in the database,

First run the command 'flask shell'
Next command to create the database - 'db.create_all()'

Project Dependencies

  • flask
  • slackclient
  • python-dotenv
  • slackeventsapi
  • flask-sqlalchemy
  • psycopg2
  • pytest
  • pytest-mock
  • black
  • pylint
  • coverage
  • pytest-cov

Slackpoint 1.0

List of miracles that slackpoint can perform✨:

  • Create a new task
  • Mark task as done
  • View pending tasks
  • View completed tasks
  • Ask for help

lets go over these one by one...

1. Create new task:

You can create a new task by simple using the /create-task command. We ask for just a few more parameters in addition to that:

Command: /create

Create Task GIF

This particular command will create a new task with the description as Hey! This is my new task having 100 points and a deadline of 15th October 2022

2. Mark task as done:

Here you can mark a task as completed. You just need to give the task ID as a parameter

Command: /task-done [task ID]

Example: /task-done 10214

Task Done GIF

This will mark the task having task ID 10214 as completed. Further, updates records to show that this task is completed by user who posted this command

3. View pending tasks:

This command will return the list of incomplete tasks. Relax! no parameters required here

Command: /viewpending [no parameters]

View pending GIF

Above command will display a list of pending tasks

4. View completed tasks:

Like the above command this will return a list of completed tasks. No parameters here as well!

Command: /viewcompleted [no parameter]

View completed GIF

Above command will display a list of completed tasks

5. Leaderboard:

Want to get competitive? Take a peek at the leaderboard and try to beat the winner!

Command: /leaderboard [no parameters]

Leaderboard GIF

It displays the list of the top performers on the channel along with their points.

6. Help:

Newbie at using slackpoint? You could use some help...

Command: /help [no parameters]

Help GIF

About

Slackpoint - A gamified agile development slack bot. Repository for CSC 510 Software Engineering project 2, created by Group 3: Shreya Maheshwari, Nandini Mundra, Palash Rathod, Tanvi Sinha, and Kartik Soni

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages