Our team has used Microsoft's OneNote as our note-taking solution for years, but over the last 12 months we have had countless problems with it. One of our members lost access to all of their notes because one file was moved, and others of us have had corrupted pages as well.
What it does
OpenNote is intended to solve these problems by providing an open-source solution to OneNote. OpenNote is browser based, and uses google authentication. This means that anyone with an @gmail.com email is able to use OpenNote without making an account specifically for our service.
How I built it
OpenNote is built on top of Google's Firebase - a Google Cloud Platform service designed to handle the needs of real-time applications. Firebase automatically handles our user authentication, allowing us to spend more time writing the actual functionality rather than dealing with all the myriad security issues our own implementation would likely have.
OpenNote uses Firebase's Firestore database to handle document storage. Firestore is a document-oriented NoSQL database, which allowed us to rapidly try out new methods of storing information until we came upon a working solution: users are "documents" containing collections (the actual files visible in the user interface), each of which contains documents detailing the actual content and metadata of the file.
Challenges I ran into
Ensuring that our site functioned on its custom domain name proved to have some difficulties thanks to DNS propagation.
Additionally, our early attempts at securing the API keys used in the project slowed down local development significantly as we had accidentally blocked our local development environments from accessing the project's resources.
Accomplishments that I'm proud of
We initially believed that even the basic functionality of this project would be extremely complicated. However we soon learned that that was not the case and quickly developed a usable prototype; we're very proud of the functionality that we were able to get done in this limited time frame.
What I learned
Our team learned quite a lot about how Google's cloud infrastructure worked through our use of Firebase's services.
What's next for OpenNote
While OpenNote is a proof of concept at this stage, it is definitely usable, and we will likely start using it in our classes. To further expand the usefulness of OpenNote, we need to implement more features from OneNote. Some examples of these are the ability to insert text, adding more colors of pens, adding shapes, math equations, the ability to organize files in folders, and many more. The possibilities for OpenNote are endless. By being open-source, others can help contribute features that they would like to see.