Inspiration

Many students simply need to have Discord open almost all the time to communicate with their peers. When they are in these long 'studying' sessions, they can easily evade the distraction of Discord messages by going on Do Not Disturb, or just closing Discord. But what if you need specific people to message and notify you for a group project? A late-night homework session? An exam review? A hackathon where organizer pings are mostly a distraction because of the grind (there were probably like 100 in total :P)? That's where us hardworking students thought of creating a nice solution: FocusCord.

What it does

FocusCord is a completely easy way for you to categorize what notifications you want to receive. You can create these categories based on one of three conditions: a time interval (days of the week and time range of day), the presence of an app (e.g. the team members of a group when your code editor is open), and a custom profile (will activate when you switch it on).

For example, if Bob and Charlie can message Daniel when he has some custom profile on, only messages from those two will result in Daniel receiving a notification sound. If the urgent mode is enabled, Bob's and Charlie's messages will result in an SMS message being sent to Daniel's phone using a Twilio API Key and a sending phone number. That gives one more plus: no one else will see your Discord data since the API keys, sending phone number, and terminal all run locally on your terms.

How we built it

The main app runs on a NodeJS backend and a Vue frontend. The NodeJS backend communicates with the Discord client using IPC allowing us to get the user's notifications in real-time. For SMS notifications, we used the Twilio API.

Challenges we ran into

There were some minor issues with working with Vue, as some members were doing it for the first time on our team. However, through following guidelines, helping each other out, and sheer persistence those issues were aired out pretty quickly.

However, we did struggle with getting Electron to post more than 1 notification to computers. Eventually, we settled on it being an issue with the calling of our function not being registered more than once, but this was an internal issue with Electron itself rather than our code. So, we had to refactor our backend into NodeJS.

What we learned

For some of us, this was the first time having a functional backend and frontend with complex interactions. So, we learned several programming practices, the uses of different commands and/or function calls, and the structure of how the frontend and backend communicate with each other.

What's next for FocusCord

From just starting out as an idea on a late Friday night, FocusCord has the potential to evolve into a more user-friendly interactive system. Allowing users to customize the UI with colour panes or button designs can help make the product more appealing. Also, the types of messages sent can be filtered into threads, server messages, group direct messages, or direct messages, so that specific groups can be used and filtered in different configurations.

Built With

+ 2 more
Share this project:

Updates