/initiative-tracker

A slackbot for tracking initiatives - who is championing, who is participating, and whether or not initiative is active

Primary LanguageTypeScriptMIT LicenseMIT

Build status Known Vulnerabilities Dependency Status devDependency Status License Code style

Initiative Tracker

Initiative Tracker is a slackbot which helps teams track the internal initiatives that people are working on. In addition to creating initiatives users can indicate their participation as an initiative champion or member and update the status of initiatives for others to see.

Available slash commands are:

  • /add-initiative [name], [optional description], [optional #channel]
  • /show-initiatives [optional filter: 'public'], [optional filter: 'active' | 'abandoned' | 'complete' | 'on hold']

Architecture diagram

Architecture diagram

Tools used to build this application

  • Serverless Framework for easy serverless development and deployment
  • TypeScript for strongly typed JavaScript
  • CircleCI for application CI/CD - /.circleci/config.yml contains the job and workflow configurations
  • AWS for application and infrastructure hosting, primarily API Gateway, Lambda, and DynamoDB
  • IOPipe for serverless logging and monitoring
  • Cloudcraft for the architecture diagram

Key libraries

  • Serverless plugin IOPipe: a serverless plugin which automatically wraps the Lambda functions for IOPipe logging
  • Serverless webpack: a plugin included with the serverless framework TypeScript template for compilation and bundling
  • Serverless plugin IAM Checker: a serverless framework plugin which validates IAM policies and roles to make sure there are no overly permissive (e.g. *) actions or resources
  • Serverless CloudFormation resource counter: a serverless framework plugin which outputs the number of AWS resources deployed with the service
  • Nodejs Slack SDK: the official Slack Nodejs library for calling their API
  • Lambda wrapper: a library which wraps Lambda functions to provide a better developer experience and implement boilerplate parsing, responses, logging, and monitoring

Slack development resources