Snap Journal

This is a desktop app that enables you to write journals alongside your images, and videos. It also acts a a beautiful way to store and organize your media.

The design goals for this app were:
  • Support for pictures and videos
  • Private and offline by default
  • Minimal design

I wrote the app in ElectronJs so that it will be cross compatible across all Desktop platforms.

A screenshot of the app

Security!

One of the main design goals for this app was to be offline and private. I wrote almost all of the code for this app from scratch (no libraries!), so that I have full control over the security of the app. Although it would've been easier to store the data in a database, I made a custom note storage system with json files for meta data along with the media so that everything can be stored locally.
ElectronJs (the tech stack) uses Inter-Process-Communication to isolate the frontend renderer process (running JavaScript) from the NodeJs backend. Bypassing this isolation would have made it much easier to access the data and manage the file IO operations, but it would expose my application to XSS attacks. Thus I ended up writing backend functions for copying media over to a secure folder that the front-end renderer process can access, without granting the front-end access to the entire file system.

Future development

There are still some features I want to add to this application:
  • Backups An export and import notes feature for backing up
  • Media support Support for audio data
  • Thumbnail view Right now when you add too many images, the UI becomes very cluttered. So I want to add a scrollable thumbnail view for the images so that not all of them have to be displayed in the left pane
  • Distribution I want to make this app available for download. So I have to figure out the code signing and distribution process, especially for Macs since I don't have a Mac.
  • Get paid After completing all the above, I plan to explore the possibility of monetizing this app, probably through one-time purchases