A full-stack journal web app with Node.js, Express, PostgreSQL, React, Redux and Blueprint. An attempt to replicate the Mini Diary.
Users can:
- Start writing journal on the editor with various style (bold, italic, underlined, ordered list, unordered list). The status (Saving.../Saved) is shown at the bottom of the editor. It is only saved into the database (with Axios) when the content and title remained unchanged for 3 seconds. Word count is shown at the bottom of the editor
- Can pick journal of another date by clicking on the calendar / the list under the search bar. All the previous non-empty journals and the journals (even if empty) for the last month can be view and edit
- Search journals by typing into the search bar. The result list is only updated when the input remained unchanged for 0.5 second
- Toggle mode (bright/dark mode) by clicking the button on the top left. This preference is stored with cookie-session
- Logout by clicking the button on the top right. The username is also shown beside the button
The app is locked when:
- The window is first loaded (if user is logged in)
- The window is inactive (no mouse/keyboard movement) for 3 minutes
The user has to enter the password to unlock.

- View on tablet
- View on phone
- Clone or download this repository onto your local device.
cdto the folder where this project is cloned.- Install all dependencies with
npm installcommands in the client and server folder. - Create a
/server/.envfile by copying the contents from/server/development.env:
- Set up your PostgreSQL database for this project and fill in the values for
DB_HOST,DB_USER,DB_PASSandDB_NAME - Fill in the
SECRETvalue for the cookie sessions
- Create tables in the database with the files in
server/db/schemaby runningnpm run db:resetin the server folder. - Run the server with
npm startcommand in the server folder. - Run the app in the development mode with
npm startcommand in the client server. - Open the broswer and visit: http://localhost:3000/.






