SLACK MEETUP BOT
This backend project was created in hopes of providing a more social aspect for finding meetups. It displays who in the channel signed up for what meetup so you can decide if you want to go with or avoid your friends.
Where did this come from?
This project was created during a week-long coding sprint in school with 2 other students. The idea came from going to various meetups in the Portland, OR area. Going to meetups was part of our requirements for the class. We thought it would be interesting to add a more social aspect to going to meetups in school. So with this app that runs inside of Slack, you can see which meetups your friends are signed up for. You can then decide if you'd like to go to the same meetup or avoid certain folks.
About the app
This was a backend project made with NodeJS. We used the Slack API to create a bot that runs inside of a slack channel. The bot then responds to certain commands that are issued in the chat. To get the meetups we were only working with calagator.org. So the bot wasn't getting meetups from any other sources. To scrape the site for the meetups we used Cheerio NPM package. It drastically simplified the scraping process. All the data for the app was stored in MongoDB. We built a REST API using Express and MongoDB to read and write the correct data from the database. Now to get the correct data we used aggregations to get like the meetups that are happening today only, or in the period of the next week, and so on.
Collaborative Coding Session
In the very beginning, we had a collaborative coding session. During that session, we built out the main guts of the app. The very basic structure, some initial models, basic scraping functionality, basic tests setup, and a few other parts of the app. This session was with the two other students and me. We worked on one machine and would switch roles of driving/coding and navigating. The two navigators would have the roles of doing research online on personal laptops and guiding the driver or coder on what to do next or what to type. Roles would be switched by a timer running on the coding machine. The collaborative session lasted for a day or two. Then we branched off and worked on individual parts. Occasionally we would pair code. So if someone needed a bit of guidance they might work as a pair with someone, and the third person worked personally on other parts. We found this strategy of working on the app to be rather effective.
More specific personal contributions
Personally, I coded some of the models, routes for the models, various bug fixes, and some functionality. One of the things I personally dealt with specifically that was a neat experience was working with dates. We noticed almost right away the dates we were getting for the meetups were not right. I was tasked to take care of that issue. I came to realize there was more to dates than just a general date. Dates had various formats and I needed to make sure everything was the correct format. So the dates we were scraping from the site, the dates that were stored, the dates for aggregations (today, past week, etc.), and the dates that would get displayed were just about all in various formats and not matching up. So I had to standardize that and make sure the dates were being displayed correctly.