Teambot - a service to manage distributed teams
If you ever managed a distributed team, you probably saw how hard it could be continuous status tracking of the next parameters:
- Who is working on what at the moment.
- How much time was spent to a given task.
- How many time a developer worked in the given day or week.
- How many time was reported to time tracker and if any real pushes were performed during that time.
Usually that information is scattered across different sources in inconvenient format, so collecting information altogether can be a challenge. The additional challenge is to make sure developers report real time on the given tasks, and I'm not even talking about the case, when the reports are altered on purpose - if workers tend to fill reports by the end of the week, instead of enabling tracker on time, the report will contain just the approximate numbers recalled behindhand. The main problem with such reports - the simple tasks will "consume" time from the undervalued ones and the estimation issue will be hidden in the future. Teambot collects information from different sources (Upwork, ScreenshotMonitor, Gitlab, JIRA) into a single place and provides access to it in convenient format.
- When developer assigns a task in JIRA, they need to put the task number into description of the current task in Upwork or Screenshot Monitor trackers. E.g. put text "WEB-123".
- Teambot will later fetch reported worklogs from Upwork or Screenshot Monitor, and additionally fetch issue title, description, and the original estimation.
- Teambot will also fetch commits from gitlab and build comparison table between tracked time and pushed commits, that is developers have to push code by the end of the day if the task is not still complete into a separate branch.
So, developers don't have to log work in JIRA anymore, but you can still see who spend time on what, and how many time in total was spent to the given task (development, code review, testing)
-
Show work log analytics per a developer or the full team in the given date/week
-
Alert about empty reports directly into Slack
-
Send worklog reports into Slack
- Upwork
- Screenshot Monitor
- JIRA
- Gitlab
- Slack
Generate JIRA_TOKEN
here: https://id.atlassian.com/manage/api-tokens
- Put docker-compose.yml file in directory and fill setup required variables
version: "2"
services:
web:
image: nepherhotep/teambot
ports:
- "80:80"
environment:
- PGHOST=postgres
- PGDATABASE=postgres
- PGUSER=postgres
- DJANGO_SECRET_KEY
- DJANGO_ALLOWED_HOSTS=localhost,yourdomain.com
- JIRA_BASE_URL=https://yourdomain.atlassian.net
- JIRA_PROJECT_KEYS=BACK,WEB,IOS,ANDR
- JIRA_USER
- JIRA_TOKEN
- JIRA_AUTOCREATE_USERS=0
- CUSTOM_ETA_FIELD='customfield_10035'
- UPWORK_COMPANY_ID
- UPWORK_TEAM_ID
- KIBANA_URL
- GITLAB_SCHEDULED_PROJECT_URL
- HIPCHAT_TOKEN
- UPWORK_PUBLIC_KEY
- UPWORK_SECRET_KEY
- UPWORK_OAUTH_TOKEN
- UPWORK_OAUTH_TOKEN_SECRET
- GITLAB_HOST
- GITLAB_TOKEN
- SMON_TOKEN
- SLACK_TOKEN
- SLACK_TIMESHEET_REPORT_CHANNEL=management
- SLACK_ISSUES_REPORT_CHANNEL=development
postgres:
image: postgres
redis:
image: redis
- Setup environment variables
- Launch container
docker-compose up
- Enter container
docker exec -it teambot_web_1 /bin/bash
- Create table schema with command inside container
python3 manage.py migrate
- Create super user inside container
python3 manage.py create
Once the web is live, you need to enter Django admin and setup team. In the following examples, web is linked to localhost, but you need to replace it with your real domain name
Go to that link http://localhost/admin/botapp/userprofile/add/ and populate user names and service accounts. Service types are upwork/sreenshot monitor (smon) or gitlab. UID - user id in the given service.
Note: gitlab UID is email user specified in their GIT settings. It's also possible to add several gitlab ids, if user pushes from different environments with different emails
At the moment only a single team is used, but it's still required to create the entity in database, as it keeps references to team members.
Add managers here http://localhost/admin/auth/user/add/ - the users, who will have access to team statistics. There are two ways kind of permissions can be set for managers:
- Staff + superuser permissions. Those users will see all the data in teambot and dashboard will show all developers
- Staff + specific permissions (superuser checkbox is unchecked). Those users will only default team statistics in dashboard, and the admin will display only explicitly allowed chapters.
Note: manager accounts aren't related User Profiles, whose statistics is collected.
- The default page is a team dashboard - http://localhost/.
- To view the previous day worklogs per team - open the following link http://localhost/admin/botapp/worklog/?daterange=yesterday
- To view the full task work logs - just click JIRA link in worklogs screen