- Node.js
- Express
- Mongoose
- Request
- Body-Parser
- DotEnv
- MongoDB
- ValStringer
- Slack API
I created the Chimp to give members of Chingu a more visual sense of community and personal growth. The Chimp is a robust profile bot that lets users update, view, and share each others profiles and profile items all from within Slack.
It also handles check-ins where users can keep track of personal, team, pair-programming, and accountability progress.
2) The /update
command: lets the user update all of their profile items using a git-style inline interface
3) The /checkin
command: lets a user check-in themselves and any other partner(s) into a team meeting, pair-programming session, accountability session, or a self-checkin
The profile command is the heart of the Chimp. It lets users view and share each other's profile cards and profile items across all Chingu cohorts.
Each profile card is populated based on the available data for that user. The more you update the more detailed your profile will appear.
At the end of every card are a series of buttons. If a button is green it means a member has added that profile item - if it is grey they have not.
Clicking a profile item button will display that item along with a footer button to return back to the original profile card.
/profile <@userName> [share] [profile item]
-
<@userName>
: the user to be requested.- Note: if the user is in your cohort then their name will auto-complete through Slack.
- you can still request a user's profile who isn't in your cohort as long as you know how to spell their user name
-
[share]
: an optional parameter which will share the profile card / item publicly into the current channel- all profile card and profile item requests default to private unless the
share
parameter is used
- all profile card and profile item requests default to private unless the
-
[profile item]
: an optional parameter to call a specific profile item.- if a profile item parameter is omitted then the requested user's profile card will be returned
-
- Blog, Portfolio, Github
/profile @userName [share] blog
- Certifications
/profile @userName [share] certifications
- Projects
/profile @userName [share] projects
- Skills
/profile @userName [share] skills
- Story
/profile @userName [share] story
This is a summary of the command. For a detailed help guide you can issue the /update help
command in Slack
- You build your command by passing a
profile item
and its associated [-flag data
] pairs.
/update <profile item> [ -flag data ]
blog
,certifications
,gitHub
,picture
,portfolio
,projects
,skills
,story
-date
,-name
,-repo
,-url
- All of the flags can also be written shorthand:
-d
,-n
,-r
,-u
type/format | string | mm/dd/yy | string | string |
---|---|---|---|---|
-flag |
-url / -u |
-date / -d |
-name / -n |
-repo / -r |
Profile item | ||||
blog | blog url | |||
certifications | certificate url | completion date (optional) | ||
gitHub | GitHub profile url | |||
portfolio | portfolio url | |||
projects | project url | completion date (optional) | project name (optional) | GitHub repo url |
Note 1: Dates are optional. If no date is passed then the current date is inserted.
Note 2: Projects require at minimum a project name and GitHub repo link
Note 3: All urls must begin with http(s)://
and are validated before being accepted and committed to the database. Certification urls are verified with Free Code Camp before being updated.
Example: /update certifications -url https://www.freecodecamp.com/userName/x-x-certification -date 01/01/11
The profile picture update command does not take any additional parameters. When the command is entered the user's current Slack profile picture will be saved and added to your Chingu profile card.
Note: The system is designed to update a user's profile picture automatically during the updating of any item - every 14 days. The /update picture
command can be used to force an update at any time.
flag | data |
---|---|
-name |
Project Name |
-date |
01/01/11 |
-repo |
https://github.com/userName/repoName |
-url |
https://projecturl.com |
Example: /update projects -n Project Name -d 01/01/11 -r https://github.com/userName/repoName -u https://projecturl.com
Skills are broken down into three categories: languages, frameworks, and technologies. Updating skills takes place in an interactive message
User stories can be updated by pasting or writing your user story after the /update story
command.
- Note: Slack markdown / formatting can be preserved by copying from the "edit message" window of your user story message in the intro-stories channel
Example: /update story Paste your user story here with *bold* _italic_ and any other Slack supported markdown
The check-in command lets users keep track of their progress through a simple 15 second process in Slack. Users can check-in to team meetings, pair programming meetings, accountability buddy sessions, or as inviduals in a self-checkin.
My goal for check-ins was a way to quantify a major part of Chingu members' progress within the community and their teams. When team members check-in together they can each add and share the record of their check-ins on their profiles. Other members can view a user's check-ins as an indication of their ability and, most importantly, reliabilility.
Check-ins take place using an interactive message menu (a Slack dropdown menu). When a user selects the type of check-in a new menu of type related activities are returned to select from.
Currently only pre-defined check-in types and activites can be chosen. You can add them as a comment to the Types and Activities issue on this repo and I will add them to the menus.
That being said - according to the Slack API Team's Trello they will be releasing version 3 of interactive messages "in the neat future" which will enable text input into Slack app messages.
In the future when text inputs become available check-ins can become much more specific. Check-ins could have a user input type, activity, and notes.
At that point it would be nice to build a simple front end that could display check-ins "posts" for users to have a running log of all they have accomplished in Chingu.
/checkin [@partner] [@partner,N]
Using the check-in command is simple - you call the command and pass any partners (or none for a self check-in) then follow the interactive menu form that is presented to provide details about the check-in.
All users that are tagged in the command will have the check-in processed on their behalf. The user calling the check-in command is always included in the check-in.
All erroneous commands and invalid inputs should return a useful error message to help guide you towards fixing the command. If you do not receive a specific and useful error message for your erroneous command you can raise an issue on this repo to have it fixed.
The API is private right now but if you'd like to read more about it you can navigate to /API/getRequestGuide.md in the project