Applcation development process can be divided into two stages, stage one utilized front-end framework only and stage two contains back-end development and also front-end refurbishment
-
Project initial development phase: A font-end app using
React
and install it on anIIS web server
. The goal is to play around with server side, set up IIS server and test my JavaScript files.
- Project enhancement phase: A full stack application that contains a CRUD (Create, Read, Update, Delete) operation built in
Node.js
(backend scripting) that utilizesMongoDB
for persistent data storage
Add note | View notes list / delete note | Note details | Edit note |
---|---|---|---|
- Root component of the application contains two subcomponents:
EditNotes
andListNotes
EditNotes
component contains a textarea and a buttonListNotes
component contains a list of created notes along with links to saved notes. Pop-up window will show when user clicks on notes
useState()
to keep track of arrays of notes objects, watch for inputs in textareauseEffect()
for side effect, in this case, storing notes inlocalStorage
- Passing state as
props
to subcomponents Form
submitmap()
each note element into an array of JSX elements- Conditional rendering the pop-up window
- Using
relative unit
andmedia query
in CSS styling
- Created a
Windows Server 2012-R2 Virtual Machine
instance onGoogle Cloud Platform
- Installed and config
IIS Web Server
on VM - Set up the web app by creating a
bucket
and transferring files to the default folder(wwwroot)
to server through Cloud Storage - Access the web page through external IP address
The application's architecture is based on the MERN stack
, which allows for the seamless integration of front-end and back-end components. The flow of data follows a client-server model, where the front-end built with React communicates with the back-end built with Node.js and Express.js through request-response cycles.
- Implement a front-end application using
React
, incorporatingReact Router v6
for routes navigation - Refurbish front-end styling using React component library
MaterialUI
- Create components for adding new notes, deleting existing notes, modifying note attributes, and displaying all notes from the database, CRUD operations are done by making requests to backend using
Axios
package - Be able to enter title, body and choose a background color of a note
- Be able to click on a note to view its full details including the date created and time last modified
- Use
Node.js
andExpress.js
to handle the server-side logic - Use
MongoDB
to store and retrieve notes - Set up
Docker image
for the NodeJS application and MongoDB
To run the application, first enter the client-side folder, install dependencies and run client-side:
cd my-note-taking-app
npm install
npm start
then we will be invoking the commands:
docker pull nnnnisidle/note-taking-app:1.0.1
docker-compose up