form handling + sessions + cookies
server/
│
├── config/
│ └── db.js # MongoDB connection logic
│
├── controllers/
│ └── userController.js # logic for user routes
│
├── models/
│ └── User.js # Mongoose schema/model for User
│
├── routes/
│ └── userRoutes.js # Express routes for users
│
├── middleware/
│ └── errorMiddleware.js # Optional: error handling middleware
│
├── .env # Environment variables (Mongo URI, PORT, etc.)
├── server.js # Main entry point
├── package.json
└── README.md
[Browser: Angular]
|-- (GET /api/users) -->
[Express Server]
|-- Mongoose fetches -->
[MongoDB]
|-- returns data -->
[Express Server]
|-- sends JSON -->
[Angular updates UI]
initialize node project → npm init -y → node_modules (?) + package.json (dependencies)
install dependencies → npm i bcrypt connect-mongo cookie-parser dotenv ejs express express-session jsonwebtoken method-override mongoose
npm i nodemon —save-dev
.gitignore → add files to ignore in repo
node_modules/
.env
package.json → add start + dev scripts
...
"scripts": {
"test": "echo \\"Error: no test specified\\" && exit 1",
"start": "server.js", // server.js -> main file to create express server
"dev": "nodemon server.js" // restarts server after change
},
...
"dependencies": { // Common Issues -> dependency versions
"bcrypt": "^5.1.0",
"connect-mongo": "^5.0.0",
"cookie-parser": "^1.4.6",
"dotenv": "^16.0.3",
"ejs": "^3.1.9",
"express": "^4.18.2",
"express-session": "^1.17.3",
"jsonwebtoken": "^9.0.0",
"method-override": "^3.0.0",
"mongoose": "^7.0.3"
},
...
MONGO_URI = ""