Week 3 - Quick Note, our firefox extension

This week, my teammates (Haocheng Lu and Alvaro Martinez) and I developed Quick Notes, a efficient note-taking extension for Mozilla Firefox. Click ‘READ MORE’ to see more details!

Progress So Far

So far, we implemented the following functions in Quick Notes:

  • open a sidebar and take notes.
  • save and load notes locally.
  • render support for Markdown and LaTeX; seamless switch between source mode and preview mode.
  • scroll down or drag to change the size of the editor.
  • Ctrl-Z to undo previous changes, which is not naturally supported in the editor.

Problems \& Solutions

During the process of development, we faced several technical problems:

  • the logic for Markdown and LaTeX rendering is very complicated, almost impossible to implement from scratch in less than 2 weeks.
  • solved by using existing packages, Marked and MathJax.
  • we could not choose the path to save notes. They are saved to Downloads/ by default. The JS script does not have access to the file system of the local machine.
  • we leveraged the browser.downloads API as a workaround
  • the editor still fails to render LaTeX code enclosed by ‘$’. Some documents indicate this is due to conflict between Markdown parsing and LaTeX parsing. Maybe we need to re-configure the 2 packages to solve it.

Collaboration \& Contributions

My team mates and I had frequent communication by text message and seamless collaboration with Git. As for me, I mainly contributed to the Markdown \& LaTeX rendering function, switch between modes, custom save \& load path, and most of the documents in this project.

Surprises

I was not fluent in Javascript and HTML before I joined this class (the only experience I had in these 2 languages was a graduate Computer Graphics course I took last semester). However, I was surprised to notice as long as I understand the structure of the project, it’s easy to pick up the relevant HTML and JS grammar and apply it to this project.
Besides, through this project I realized contributing to an open-source project is such a pleasure. The moment you see your push is completed, all the effort seems worth it.

Written before or on February 7, 2025