Skip to content

Zaederx/JournalApp

Repository files navigation

JournalApp - Refactored and Design Update

Jounalling App

A journalling project that I made while experiementing and learning about Node and Electron.

Tables of Contents

Background

I wanted to create an app that would allow people to journal. That meant having a system that interacted with the computers file system directly. Hearing about Node, and also being familiar with JavaScript, it became an ideal choice to work with Node and Electron to create this desktop applicaiton (as Node allow you to run JS on the computer system natively rather than just in the browser and electron renders HTML like a browser to produce app with Node.)

Images

Version 4 - Themes added + Export + Bug fixes

Screenshot 2023-04-18 at 20 48 03

Screenshot 2023-04-18 at 20 45 36

Version 3 - Design further updated

image

Version 2 - Design Updated

image

Compared to Version 1...

image

Attribution

Icons Attributed to:

Settings button icon made by Freepik from www.flaticon.com

Setting slider icon made by dmitri13 from www.flaticon.com

Add file icon made by Kiranshastry from www.flaticon.com

Folder icon made by Good Ware from www.flaticon.com

File icon made by Freepik from www.flaticon.com

Export icon from Iconmonstr

Slider buttons attributed to W3Schools who have a tutorial on how to make them.

Technologies

  • JavaScript

  • TypeScript

  • Node

  • Electron

  • HTML

  • CSS

  • SASS

    Explanation of Each Technology's Role

    JavaScript

    It's the main language used on the client side for crreating dynamic and interactive content.

    TypeScript

    The javascript is actually written in typescript and compiled to javascript by Node.js.

    HTML

    The mark up langauge of the web.

    CSS

    The styling language of the web.

    SASS

    The CSS of the project is compiled from SASS, which adds addtional language features like variables for example.

Requirements to run the project

You will need to have Node installed on your computer.

Setup

Make sure to install dependecies before running the project.

npm install

Running the Project

Clone or download the repository then cd to that folder in the commandline / terminal. From that root directory, then enter npm install (for node_modules to install) then npm start. This will generate JavaScript files from the TypeScirpt files that are in the repository (and likewise SASS into CSS) and then it will load up the project on screen.

Testing

Version 1 is tested with automated test usnig the Mocha testing framework. Was not able to apply these these test to latter versions because of the change in interface.

Project Shortcomings

I would like to take some time and some point to add a dark mode and some user settings to the project. These projects when working alone without a team do tend to drag on, but I would like to revisit it to add this improvement.

Update - Dark mode

Dark mode and other and one other theme beside default theme have been added to the application.

Modifications

Findind a way to improve journal file load times would be something I would also like to change with this project.

Things learned - see also Lesson Notes

I learned how to use Node and Electron for the first time. I learnt about TypeScript and SASS for the first time too. Also I believe it was this project that was the first time I used VScode and I haven't looked back since... :).

Apart from that I've also done some testing in this project with Mocha [in project version 1]. I really wanted to try to make an effort to do some testing with this project as it is something that I struggle with knowing how to do. I was pleased that I was able to start out this project with some testing in a BDD style rather than just adding it in at the end.

Trello Page