Inspiration
Our inspiration mostly comes from the homework and studying we do for our University units. With the lack luster amount of good note taking apps and the many wasted hours spent procrastinating while studying instead of finishing of the work we wanted to try develop something that could help in this regard.
What it does
What our system does is provide a place for you to write notes allowing us to keep you on track and focused. We allow the user to set a session time on their laptop, which also automatically pairs with the companion app with how much time is left in the session.
The user can then create a new file or keep writing in an old file within our file editor window, which also determines how much activity is currently occurring giving a feedback signal to the user if they are not writing much or nothing at all. There's even a real-time graph that tracks how you've been performing in the last few minutes.
However, what happens when the user goes on their phone to browse Facebook while the session is active? A notification will pop up urging the user to get back to work and focus on the task at hand. But, we all know that you need a break every so often so we have a set break timer feature that allows the user to have a break. The active session and breaks are also synced with the companion app.
How we built it
We built our product with two clients consisting of an Android Native app and a React web application, with two backends that serve different purposes.
Initially we were planning to use Socket.IO to communicate between the native app and the web application, which worked well with the React app and the backend however we had issues with outdated repositories for the Native application and Socket.IO. Therefore, we create a relay between the React app and the native application using the backend that ran a Firebase database that hooked into our original Socket.IO system. This ended up being one of our backend systems that was running a Flask webserver with Socket.IO libraries and Firebase database libraries.
Additionally, the React app needed a way to save file data and request file data to the web for which we developed a Flask web server with a SQLite3 database.
Challenges we ran into
We can into a few challenges but we got through most of them with compromises or alternative solutions. One our major issues was that the Android Native app didn't have up-to-date libraries for Socket.IO therefore there was no real solution in being able to communicate with the backend, and therefore the React app. We rectified this issue with switching the Android Native communicate with the backend using Firebase database due to up-to-date libraries and previous experience in doing the connection. This only required a small refactor with a bit of code in the backend and the native app.
One of our second issues was mostly focused around being unable to determine what was flowing through our Socket.IO webserver, and not really knowing whether our frontend clients were actually receiving or sending data. We developed a testing listener that let us look at all the traffic and this was really useful is testing our client apps.
Another frustrating issue was a library that was being tested for the React web app was outdated and was unable to use updated JS syntax. This just required a rebuild of the app using the existing code files.
Accomplishments that we're proud of
We're proud of finishing everything and more, of what we initially thought we were going to develop. Additionally, having everything work seamlessly together was extremely satisfying and rewarding.
What we learned
One of our backend developers learnt how to create a Flask web server and also use SQLite3 for data management. Frontend learnt a lot about managing states, callbacks, and passing data through components in react. The Android Native developer learnt lot about developing an Android application from a design standpoints and also implementing Firebase database. Additionally, we all learnt Socket.IO which we've never done before
What's next for Note-by-Note
There are so many different features that we could add to Note-by-Note in the future some of which include:
- More in-depth statistics that could look at your performance over a longer period of time
- Machine learning algorithms that could determine what times you best work at, allowing you to spend more time on things you might enjoy more
- More text editing features that could increase productivity
- Implementing electronic implementations of techniques that keep people focused (such as pomodoro)
Additionally, there is a lot of business potential for Note-by-Note by offering subscriptions for power users who may want more storage or more niche keybinds such as Vim. Some other future potential prospects for Note-by-Note include enterprise editions which are focused on gathering data on how employees are developing.
Log in or sign up for Devpost to join the conversation.