├── .gitignore ├── models ├── users.model.js └── products.model.js ├── routes ├── users.route.js └── products.route.js ├── package.json ├── controllers ├── users.controller.js └── products.contoller.js ├── index.js └── views ├── index.html └── product.html /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /models/users.model.js: -------------------------------------------------------------------------------- 1 | const users = [ 2 | { 3 | name: "Anisul Islam", 4 | age: 31, 5 | }, 6 | { 7 | name: "Sufia Begum", 8 | age: 47, 9 | }, 10 | ]; 11 | 12 | module.exports = users; 13 | -------------------------------------------------------------------------------- /models/products.model.js: -------------------------------------------------------------------------------- 1 | const products = [ 2 | { 3 | name: "keya soap", 4 | price: 31, 5 | }, 6 | { 7 | name: "Milk", 8 | price: 47, 9 | }, 10 | ]; 11 | 12 | module.exports = products; 13 | -------------------------------------------------------------------------------- /routes/users.route.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | 3 | const { getUsers, saveUser } = require("../controllers/users.controller"); 4 | 5 | const router = express.Router(); 6 | 7 | router.get("/users", getUsers); 8 | 9 | router.post("/users", saveUser); 10 | 11 | module.exports = router; 12 | -------------------------------------------------------------------------------- /routes/products.route.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | const { 3 | getProducts, 4 | saveProduct, 5 | } = require("../controllers/products.contoller"); 6 | 7 | const router = express.Router(); 8 | 9 | router.get("/products", getProducts); 10 | 11 | router.post("/products", saveProduct); 12 | 13 | module.exports = router; 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mvc-architecture", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "nodemon index.js" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "express": "^4.17.1", 15 | "nodemon": "^2.0.15" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /controllers/users.controller.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | 3 | const users = require("../models/users.model"); 4 | 5 | exports.getUsers = (req, res) => { 6 | res.sendFile(path.join(__dirname + "/../views/index.html")); 7 | }; 8 | 9 | exports.saveUser = (req, res) => { 10 | const name = req.body.name; 11 | const age = Number(req.body.age); 12 | const user = { 13 | name, 14 | age, 15 | }; 16 | users.push(user); 17 | res.status(201).json({ 18 | success: true, 19 | users, 20 | }); 21 | }; 22 | -------------------------------------------------------------------------------- /controllers/products.contoller.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | 3 | const products = require("../models/products.model"); 4 | 5 | exports.getProducts = (req, res) => { 6 | res.sendFile(path.join(__dirname + "/../views/product.html")); 7 | }; 8 | 9 | exports.saveProduct = (req, res) => { 10 | const name = req.body.name; 11 | const price = Number(req.body.price); 12 | const product = { 13 | name, 14 | price, 15 | }; 16 | products.push(product); 17 | res.status(201).json({ 18 | success: true, 19 | products, 20 | }); 21 | }; 22 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | 3 | const userRouter = require("./routes/users.route"); 4 | const productRouter = require("./routes/products.route"); 5 | 6 | const app = express(); 7 | const PORT = 3000; 8 | 9 | app.use(express.urlencoded({ extended: true })); 10 | app.use(userRouter); 11 | app.use(productRouter); 12 | 13 | app.use((req, res, next) => { 14 | res.status(404).json({ 15 | message: "resource not found", 16 | }); 17 | }); 18 | 19 | app.listen(PORT, () => { 20 | console.log(`server is running http://localhost:${PORT}`); 21 | }); 22 | -------------------------------------------------------------------------------- /views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 |