By its nature, the MCIT program draws together people from a vast array of backgrounds. We all have a lot to learn from each other, but we might not know where or how to start. We wanted to provide an easy-to-use tool that would allow MCIT students to reach out to classmates who may have more experience with certain skills or a unique perspective of certain industries. We hope that our app will foster a greater sense of community in the MCIT program, and encourage students to be each other's greatest allies.

What It Does

EliCIT asks students to list out their unique sets of technical and creative skills, as well as their knowledge of particular industries. Then, whenever someone has a burning question about JavaScript, machine learning, graphic design, the healthcare industry, editing a cover letter, or even general organization techniques, our app will help direct their question to one of their many benevolent classmates for assistance. All from the comfort of the MCIT Slack workspace!

How We Built It

In preparation for the Hackathon, we all did crash courses in JavaScript and NodeJS, and we got familiar with the Slack's API and Bolt for Javascript, their proprietary framework for NodeJS. We divided up the work based on which functionalities we wished to implement, such as the question form, user profiles, and database integration. When the various parts began to fit together, we pushed our project repository to Heroku, where EliCIT is currently hosted.

When users interact with the app on Slack (button clicks, option selects, etc.), Slack sends HTTP POST requests to the app's server on Heroku. We had to implement responses to every one of these possible requests to ensure a seamless user experience.

Our data is hosted remotely in MongoDB's NoSQL cloud platform Atlas.

Challenges We Ran Into

During the 5 days of the hackathon, we had to overcome many technical challenges. We ran into issues with installing Heroku hosting and local-tunnel testing that could only be solved by using different devices. We had to work around retrieving stored information from slack and MongoDB in real-time, which sometimes takes longer than the time slack allows before displaying an error. One of the biggest issues that we had was the limited functionalities of updating slack’s modal views. We were able to work around that by being creative and temporarily storing data in slack in order to clear the view, update, and then display the view with the new information. Throughout the 5 days, we learned a lot about developing a slack app, how to troubleshoot errors and work collaboratively on github. There were also many logistical challenges. With everyone working remotely on this project, things like peer-coding, debugging, explaining concepts became much harder than if we were in person. Initially, it tooks us time to get used to working in a team. During the first two days, we had challenges of having different visions for detailed implementation of the application, but eventually, we got used to each other’s working style and became more patient with communicating and providing constructive criticism.

Accomplishments And What We Learned

  • #FirstHackathon
  • #FirstProject
  • #FirstDevelopmentTeam
  • #FirstApp
  • #FirstSlackApp
  • #FirstFullStacksApp
  • #WorkingFromHome
  • #CollaborativeLearning
  • Learned how to code in JavaScript
  • Learned how to use NodeJS, localtunnel, MongoDB and Heroku
  • Successfully deploying Slack app remotely on Heroku
  • Learned how Slack API works
  • Learned how to navigate an API documentation
  • Learned how to not destroy a shared GitHub repository
  • Learn how to coordinate as a team: feedback, criticism, logistics

What’s next for EliCIT

Looking forward, we want to make some changes to our application so that it would be deployed on a wider scale. Now when a user wants to ask a question, it sets up a group chat right away with the user and the person to who the user wants to ask the question. However, this might crowd the workspace with a lot of group chats. In the future, we want to allow multiple one-on-one messages, instead of one group chat.

In addition, currently, we have two slash commands, /view-people and /my-profile. We want to restrict where the command can be used, for example, the user cannot call /my-profile in a group chat. We also want to add an argument to the command so that, for example, by specifying the student name, (/view-profiles Jintong Wu) will be able to view the profile of the specified person.

If the app is to be deployed on a large scale, say, more than UPenn MCIT-On-Campus workspaces, we want EliCIT to have different databases for different workspaces so that it will get easier to manage data and that there won’t be any intermixing of profiles among platforms.

Share this project: