This project was inspired by John Phillippe, the Training Director at Davis-Besse Nuclear Power plant. The goal of this project was to consolidate and streamline the process of gathering and creating the resources needed to complete an INPO accreditation check for a nuclear power plant's training center.
This projct was created using MongoDB to store the data, Express.js as the Web framework, EJS for templating, and Node.js as the backend language to run the server. This tech stack was chosen primarily because I was the most familiar with Javascript, so node was an obvious choice. From there mongo and express work very seamlessly due to many of npm packages available with good documentation. This project could be transitioned to React, however I chose not to do this because I didn't believe the scale was large enough to warrant it, and I am more familiar with EJS syntax. In addition to that, I chose to use AWS S3 to store the files and images for the project. AWS was chosen mostly because of how popular it is, but any file storage system could be implemented easily that Multer has support for. The Mongo database can either be stored locally on the machine, or can be run in Atlas on the cloud. Passport local and passport Microsoft were implemented to allow for secure, conveinent login for the user.-
Make sure node is installed on the machine (Developed with v22.1.0).
-
In the terminal, go to the top level of the apps directory and run npm install. This will install all the packages and dependencies in the package.json file.
-
Setup file storage (AWS S3) and Microsft authentication if used.
-
Setup Enviroment variables:
PORT=
SESSION_SECRET=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
S3_REGION=
S3_BUCKET=
DB_URL=
AZURE_CLIENT_ID=
AZURE_CLIENT_SECRET=
AZURE_SECRET_ID=
AZURE_REDIRECT_URL= -
In the terminal run npm start to startup the application
If you want to deploy this project, here is the example I followed to setup an EC2 instance on AWS.
SunEditor (RTF) Socket.io© 2024 Noah Smith ([email protected]), All Rights Reserved.