- express: Express is still the web framework for your API.
- jsonwebtoken: For JWT token creation and verification.
- bcrypt: To securely hash passwords.
- body-parser Middleware for parsing incoming request bodies.
- prisma: Prisma is the ORM that allows you to work with your PostgreSQL database.
- dotenv: To manage environment variables.
- src
- configs
- controller
- middlewares
- models
- routes
- servcies
- utils
- test
1. MVC (Model-View-Controller):
blog-api/
├── src/
│ ├── controllers/
│ │ ├── authController.js
│ │ ├── postController.js
│ │ └── userController.js
│ ├── models/
│ │ ├── AuthModel.js
│ │ ├── PostModel.js
│ │ └── UserModel.js
│ ├── views/
│ │ ├── authView.js
│ │ ├── postView.js
│ │ └── userView.js
│ ├── routes/
│ │ ├── authRoutes.js
│ │ ├── postRoutes.js
│ │ └── userRoutes.js
│ ├── utils/
│ │ ├── jwtUtils.js
│ │ └── validation.js
│ ├── app.js
│ └── server.js
├── .env
├── .gitignore
├── package.json
├── prisma/
│ ├── schema.prisma
│ └── seed.js
└── README.md
2. Feature-Based Structure:
blog-api/
├── src/
│ ├── auth/
│ │ ├── authController.js
│ │ ├── authRoutes.js
│ │ └── authMiddleware.js
│ ├── posts/
│ │ ├── postController.js
│ │ ├── postRoutes.js
│ │ └── postMiddleware.js
│ ├── users/
│ │ ├── userController.js
│ │ ├── userRoutes.js
│ │ └── userMiddleware.js
│ ├── utils/
│ │ ├── jwtUtils.js
│ │ └── validation.js
│ ├── app.js
│ └── server.js
├── .env
├── .gitignore
├── package.json
├── prisma/
│ ├── schema.prisma
│ └── seed.js
└── README.md
blog-api/
├── src/
│ ├── controllers/
│ │ ├── authController.js
│ │ ├── postController.js
│ │ └── userController.js
│ ├── services/
│ │ ├── authService.js
│ │ ├── postService.js
│ │ └── userService.js
│ ├── repositories/
│ │ ├── authRepository.js
│ │ ├── postRepository.js
│ │ └── userRepository.js
│ ├── middlewares/
│ │ ├── authenticate.js
│ │ └── errorHandling.js
│ ├── models/
│ │ ├── User.js
│ │ ├── Post.js
│ │ └── Comment.js
│ ├── routes/
│ │ ├── authRoutes.js
│ │ ├── postRoutes.js
│ │ └── userRoutes.js
│ ├── utils/
│ │ ├── jwtUtils.js
│ │ └── validation.js
│ ├── app.js
│ └── server.js
├── .env
├── .gitignore
├── package.json
├── prisma/
│ ├── schema.prisma
│ └── seed.js
└── README.md