"you're worrying about the wrong tasks fam"
To tackle the Newsprint track, we were inspired by the connectivity that the popular game "Among Us" has brought to us during this time of remote working and socializing. Additionally, our team members are also avid users of the Pomodoro method, where the user typically has intervals of ~25 minutes work and ~5 minutes break. While being stuck in our rooms all day, we often lose accountability and slack off our work, usually by going on unproductive sites and apps such as Facebook, Instagram, or even TikTok - what if every time you did, everyone would know that " there is 1 imposter among us" ;-)
What it does
Imposter is a productivity timer designed to keep friends on task together even when working remotely. It aims to create a productive and social environment for all of us working from home. It creates a space to challenge people to do work, while also incorporating a way for them to get a good laugh.
Our Chrome extension monitors your browser tabs, checking against a customized list of counterproductive websites. If one of those websites is visited, a websocket will ping our backend and notify all other users in the room of your sCanDAalouS activity.
Join a room with your friends, choose your own avatar, and keep each other on task. During a 25 minute work period if anyone visits a site they are not supposed, an EMERGENCY MEETING is called, an annoying alarm is blasted, and everyone in the room is notified about what site you were on. This will make you think twice about checking any funny memes or videos. During the break period, feel free to use our chat feature to communicate with your friends and share what tasks you were working on!
How we built it
- Chrome Extension: Detects unproductive tabs and notifies web app
- Frontend: React app, deployed on Google Firebase
- Backend: Node.js express app with a web socket server, deployed on Heroku
- Database: Google Firestore to sync timer and user data between clients and backend
Challenges we ran into
- learning React for the first time
- figuring out how to sync timer data in a way that doesn't result in race conditions
- communication with the webapp through the extension
- connecting via https/http to a websocket server
Accomplishments that we're proud of
- colour selection
- actually finishing a decently polished-product
- working integration between all parts of our product
- having CI/CD flows for backend and frontend (Google Firebase made this so streamlined and easy)
What we learned
- How to create a webapp using React
- How to make a chat app
- How to build a chrome extension
- How to make an automatic build pipeline for a node js server
- How to make an automatic build pipeline for a React app
- How to use Google Firebase storage
- How to use react router
- How to sync a timer on firebase
- How to use websockets
- How to use CSS animations
- How to make sauce flavoured meat with a touch of pasta
- how to cook an eggo with a frying pan
What's next for impostor
We're often more productive when working in public spaces because of the many eyes surrounding us, thus Imposter will be bringing video call functionalities in future updates! Pressure to work but also offering some quality face-to-face social interaction during the break periods. Some immediate future additions to the app will include, configurable Pomodoro times and customizable list of sites to block. We also hope to bring Imposter to mobile for those who hack their way out of being publicly shamed amongst your friends by perusing social media on your mobile devices... tsk tsk.