├── 9-expressRouting ├── readme.md └── package.json ├── 33-Template_BlogApp ├── public │ ├── postList.ejs │ ├── assets │ │ └── blog.css │ └── error.ejs ├── .env-sample ├── src │ ├── dbConnection.js │ ├── routes │ │ ├── api │ │ │ ├── userRoute.js │ │ │ └── blogRoute.js │ │ └── views │ │ │ └── userRoute.js │ ├── helpers │ │ └── passwordEncrypt.js │ ├── errorHandler.js │ └── models │ │ └── userModel.js └── package.json ├── .DS_Store ├── 25-RentACar ├── newERD.png ├── erdRentACarAPI.png ├── src │ ├── helpers │ │ ├── dateToLocaleString.js │ │ ├── sync.js │ │ └── passwordEncrypt.js │ ├── middlewares │ │ ├── errorHandler.js │ │ ├── logger.js │ │ ├── upload.js │ │ ├── permissions.js │ │ └── authentication.js │ ├── routes │ │ ├── auth.js │ │ ├── reservation.js │ │ ├── token.js │ │ ├── car.js │ │ ├── index.js │ │ ├── user.js │ │ └── document.js │ ├── configs │ │ └── dbConnection.js │ └── models │ │ └── token.js └── package.json ├── 12-Models-Todo ├── db.sqlite3 ├── erdTodoAPI.png ├── intro-mvc.png ├── intro-orm.jpeg ├── intro-sequelize.png └── package.json ├── 26-RentACar_2 ├── newERD.png ├── erdRentACarAPI.png ├── src │ ├── helpers │ │ ├── dateToLocaleString.js │ │ ├── sync.js │ │ └── passwordEncrypt.js │ ├── middlewares │ │ ├── errorHandler.js │ │ ├── logger.js │ │ ├── upload.js │ │ ├── permissions.js │ │ └── authentication.js │ ├── routes │ │ ├── auth.js │ │ ├── reservation.js │ │ ├── token.js │ │ ├── car.js │ │ ├── index.js │ │ ├── user.js │ │ └── document.js │ ├── configs │ │ └── dbConnection.js │ └── models │ │ └── token.js └── package.json ├── 8-NodeJs-server ├── .DS_Store ├── package.json └── expressServer.js ├── 13-Models-Todo2 ├── db.sqlite3 ├── package.json ├── app │ ├── errorHandler.js │ ├── errorHandler copy.js │ └── routes │ │ └── todo.router.js └── app.js ├── 22-PizzaAPI ├── erdPizzaAPI.png ├── src │ ├── middlewares │ │ ├── permissions.js │ │ ├── errorHandler.js │ │ ├── logger.js │ │ └── authentication.js │ ├── helpers │ │ ├── sync.js │ │ └── passwordEncrypt.js │ ├── configs │ │ └── dbConnection.js │ ├── models │ │ ├── topping.js │ │ ├── token.js │ │ └── pizza.js │ └── routes │ │ ├── order.js │ │ ├── user.js │ │ ├── auth.js │ │ ├── pizza.js │ │ ├── token.js │ │ ├── topping.js │ │ ├── index.js │ │ └── document.js └── package.json ├── 31-template-toDo ├── db.sqlite3 ├── intro-mvc.png ├── erdTodoAPI.png ├── intro-orm.jpeg ├── intro-sequelize.png ├── intro.md ├── package.json ├── app │ ├── errorHandler.js │ └── routes │ │ ├── todo.router.js │ │ └── todo.view.router.js ├── views │ └── index.ejs └── public │ └── index.ejs ├── 10-Router&middlewres ├── .DS_Store ├── middlewares1.png ├── middlewares2.jpeg ├── package.json └── routes │ └── index.js ├── 32-template-todo2 ├── db.sqlite3 ├── intro-mvc.png ├── erdTodoAPI.png ├── intro-orm.jpeg ├── intro-sequelize.png ├── public │ ├── _footer.ejs │ ├── _header.ejs │ ├── todoRead.ejs │ ├── errors.ejs │ ├── index.ejs │ └── todoCreate.ejs ├── intro.md ├── package.json ├── app │ ├── errorHandler.js │ └── routes │ │ ├── todo.router.js │ │ └── todo.view.router.js └── views │ └── index.ejs ├── 15-BlogAPI_Mongoose ├── mongoose.png ├── package.json ├── readme.md ├── src │ ├── dbConnection.js │ ├── errorHandler.js │ └── routes │ │ └── blog.route.js ├── intro.md └── index.js ├── 23-PizzaAPI_JWT ├── erdPizzaAPI.png ├── src │ ├── middlewares │ │ ├── errorHandler.js │ │ ├── logger.js │ │ └── permissions.js │ ├── helpers │ │ ├── passwordEncrypt.js │ │ └── sync.js │ ├── configs │ │ ├── dbConnection.js │ │ └── swagger.json │ ├── models │ │ ├── topping.js │ │ ├── token.js │ │ └── pizza.js │ └── routes │ │ ├── auth.js │ │ ├── pizza.js │ │ ├── token.js │ │ ├── topping.js │ │ ├── user.js │ │ ├── index.js │ │ ├── order.js │ │ └── document.js ├── package.json └── intro.md ├── 18-BlogAPI_SearchSort ├── mongoose.png ├── erdBlogAPI.png ├── src │ ├── configs │ │ └── dbConnection.js │ ├── middlewares │ │ ├── errorHandler.js │ │ └── userControl.js │ ├── helpers │ │ └── passwordEncrypt.js │ └── routes │ │ ├── user.router.js │ │ └── blog.router.js ├── package.json └── intro.md ├── 19-PersonnelAPI ├── erdPersonnelAPI.png ├── _projectStarter │ ├── erdPersonnelAPI.png │ ├── .env-sample │ ├── src │ │ ├── controllers │ │ │ ├── department.controller.js │ │ │ └── personnel.controller.js │ │ ├── models │ │ │ ├── department.model.js │ │ │ └── personnel.model.js │ │ ├── routes │ │ │ ├── department.router.js │ │ │ └── personnel.router.js │ │ ├── middlewares │ │ │ └── errorHandler.js │ │ ├── helpers │ │ │ └── passwordEncrypt.js │ │ └── configs │ │ │ └── dbConnection.js │ ├── package.json │ ├── readme.md │ └── index.js ├── src │ ├── middlewares │ │ └── errorHandler.js │ ├── helpers │ │ └── passwordEncrypt.js │ ├── models │ │ └── department.model.js │ ├── configs │ │ └── dbConnection.js │ └── routes │ │ ├── personnel.router.js │ │ └── department.router.js ├── package.json ├── intro.md └── readme.md ├── 16-BlogAPI_Mongoose copy ├── mongoose.png ├── package.json ├── src │ ├── configs │ │ └── dbConnection.js │ ├── routes │ │ ├── user.router.js │ │ └── blog.router.js │ ├── middlewares │ │ └── errorHandler.js │ ├── helpers │ │ └── passwordEncrypt.js │ └── sync.js └── intro.md ├── 21-PersonnelAPI_LogDocument ├── .DS_Store ├── src │ ├── .DS_Store │ ├── middlewares │ │ ├── errorHandler.js │ │ ├── logging.js │ │ └── authentication.js │ ├── helpers │ │ └── passwordEncrypt.js │ ├── routes │ │ ├── index.js │ │ ├── auth.router.js │ │ ├── personnel.router.js │ │ └── department.router.js │ ├── models │ │ └── department.model.js │ └── configs │ │ └── dbConnection.js ├── erdPersonnelAPI.png ├── _projectStarter │ ├── erdPersonnelAPI.png │ ├── .env-sample │ ├── src │ │ ├── controllers │ │ │ ├── personnel.controller.js │ │ │ └── department.controller.js │ │ ├── models │ │ │ ├── department.model.js │ │ │ └── personnel.model.js │ │ ├── routes │ │ │ ├── department.router.js │ │ │ └── personnel.router.js │ │ ├── middlewares │ │ │ └── errorHandler.js │ │ ├── helpers │ │ │ └── passwordEncrypt.js │ │ └── configs │ │ │ └── dbConnection.js │ ├── package.json │ ├── readme.md │ └── index.js └── package.json ├── 17-BlogAPI_SessionCookies l ├── mongoose.png ├── src │ ├── configs │ │ └── dbConnection.js │ ├── middlewares │ │ ├── errorHandler.js │ │ └── userControl.js │ ├── helpers │ │ └── passwordEncrypt.js │ ├── routes │ │ ├── user.router.js │ │ └── blog.router.js │ └── sync.js ├── package.json └── intro.md ├── 24-PizzaAPI_Email_Upload ├── erdPizzaAPI.png ├── uploads │ ├── .manzara.jpg.icloud │ ├── .simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711915833572-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711916565569-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711917005698-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711978113466-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711978114186-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711978391475-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711978492696-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711978493626-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711978753138-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711978754277-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711979162046-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711979191483-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711979480924-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711979585345-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711979871328-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711980318971-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711980345560-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711980372414-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud │ ├── .1711916565749-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud │ ├── .1711917006164-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud │ ├── .1711978113802-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud │ ├── .1711978391973-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud │ ├── .1711978493346-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud │ ├── .1711978494562-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud │ ├── .1711978753956-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud │ ├── .1711978754881-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud │ ├── .1711979162799-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud │ ├── .1711979192151-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud │ ├── .1711979481226-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud │ ├── .1711979586582-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud │ ├── .1711979872221-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud │ ├── .1711980319531-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud │ ├── .1711980345845-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud │ └── .1711980373093-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud ├── src │ ├── middlewares │ │ ├── errorHandler.js │ │ ├── logger.js │ │ ├── permissions.js │ │ └── upload.js │ ├── helpers │ │ ├── passwordEncrypt.js │ │ └── sync.js │ ├── configs │ │ ├── dbConnection.js │ │ └── swagger.json │ ├── models │ │ ├── topping.js │ │ ├── token.js │ │ └── pizza.js │ └── routes │ │ ├── auth.js │ │ ├── token.js │ │ ├── topping.js │ │ ├── user.js │ │ ├── index.js │ │ ├── order.js │ │ └── document.js ├── package.json └── intro.md ├── 11-Error-management ├── public │ └── images │ │ └── monalisa.jpg ├── package.json └── errorHandler.js ├── 20-PersonnelAPI-Token_permission ├── erdPersonnelAPI.png ├── _projectStarter │ ├── erdPersonnelAPI.png │ ├── .env-sample │ ├── src │ │ ├── controllers │ │ │ ├── personnel.controller.js │ │ │ └── department.controller.js │ │ ├── models │ │ │ ├── department.model.js │ │ │ └── personnel.model.js │ │ ├── routes │ │ │ ├── department.router.js │ │ │ └── personnel.router.js │ │ ├── middlewares │ │ │ └── errorHandler.js │ │ ├── helpers │ │ │ └── passwordEncrypt.js │ │ └── configs │ │ │ └── dbConnection.js │ ├── package.json │ ├── readme.md │ └── index.js ├── src │ ├── middlewares │ │ └── errorHandler.js │ ├── helpers │ │ └── passwordEncrypt.js │ ├── routes │ │ ├── index.js │ │ ├── auth.router.js │ │ └── personnel.router.js │ ├── models │ │ └── department.model.js │ └── configs │ │ └── dbConnection.js ├── package.json └── intro.md ├── .vscode └── settings.json └── projects-details └── intro.md /9-expressRouting/readme.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /33-Template_BlogApp/public/postList.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/.DS_Store -------------------------------------------------------------------------------- /25-RentACar/newERD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/25-RentACar/newERD.png -------------------------------------------------------------------------------- /12-Models-Todo/db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/12-Models-Todo/db.sqlite3 -------------------------------------------------------------------------------- /26-RentACar_2/newERD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/26-RentACar_2/newERD.png -------------------------------------------------------------------------------- /8-NodeJs-server/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/8-NodeJs-server/.DS_Store -------------------------------------------------------------------------------- /13-Models-Todo2/db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/13-Models-Todo2/db.sqlite3 -------------------------------------------------------------------------------- /22-PizzaAPI/erdPizzaAPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/22-PizzaAPI/erdPizzaAPI.png -------------------------------------------------------------------------------- /31-template-toDo/db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/31-template-toDo/db.sqlite3 -------------------------------------------------------------------------------- /10-Router&middlewres/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/10-Router&middlewres/.DS_Store -------------------------------------------------------------------------------- /12-Models-Todo/erdTodoAPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/12-Models-Todo/erdTodoAPI.png -------------------------------------------------------------------------------- /12-Models-Todo/intro-mvc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/12-Models-Todo/intro-mvc.png -------------------------------------------------------------------------------- /12-Models-Todo/intro-orm.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/12-Models-Todo/intro-orm.jpeg -------------------------------------------------------------------------------- /25-RentACar/erdRentACarAPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/25-RentACar/erdRentACarAPI.png -------------------------------------------------------------------------------- /31-template-toDo/intro-mvc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/31-template-toDo/intro-mvc.png -------------------------------------------------------------------------------- /32-template-todo2 /db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/32-template-todo2 /db.sqlite3 -------------------------------------------------------------------------------- /15-BlogAPI_Mongoose/mongoose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/15-BlogAPI_Mongoose/mongoose.png -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/erdPizzaAPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/23-PizzaAPI_JWT/erdPizzaAPI.png -------------------------------------------------------------------------------- /26-RentACar_2/erdRentACarAPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/26-RentACar_2/erdRentACarAPI.png -------------------------------------------------------------------------------- /31-template-toDo/erdTodoAPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/31-template-toDo/erdTodoAPI.png -------------------------------------------------------------------------------- /31-template-toDo/intro-orm.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/31-template-toDo/intro-orm.jpeg -------------------------------------------------------------------------------- /32-template-todo2 /intro-mvc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/32-template-todo2 /intro-mvc.png -------------------------------------------------------------------------------- /12-Models-Todo/intro-sequelize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/12-Models-Todo/intro-sequelize.png -------------------------------------------------------------------------------- /18-BlogAPI_SearchSort/mongoose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/18-BlogAPI_SearchSort/mongoose.png -------------------------------------------------------------------------------- /19-PersonnelAPI/erdPersonnelAPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/19-PersonnelAPI/erdPersonnelAPI.png -------------------------------------------------------------------------------- /32-template-todo2 /erdTodoAPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/32-template-todo2 /erdTodoAPI.png -------------------------------------------------------------------------------- /32-template-todo2 /intro-orm.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/32-template-todo2 /intro-orm.jpeg -------------------------------------------------------------------------------- /10-Router&middlewres/middlewares1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/10-Router&middlewres/middlewares1.png -------------------------------------------------------------------------------- /16-BlogAPI_Mongoose copy/mongoose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/16-BlogAPI_Mongoose copy/mongoose.png -------------------------------------------------------------------------------- /18-BlogAPI_SearchSort/erdBlogAPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/18-BlogAPI_SearchSort/erdBlogAPI.png -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/21-PersonnelAPI_LogDocument/.DS_Store -------------------------------------------------------------------------------- /31-template-toDo/intro-sequelize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/31-template-toDo/intro-sequelize.png -------------------------------------------------------------------------------- /10-Router&middlewres/middlewares2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/10-Router&middlewres/middlewares2.jpeg -------------------------------------------------------------------------------- /17-BlogAPI_SessionCookies l/mongoose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/17-BlogAPI_SessionCookies l/mongoose.png -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/erdPizzaAPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/erdPizzaAPI.png -------------------------------------------------------------------------------- /32-template-todo2 /intro-sequelize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/32-template-todo2 /intro-sequelize.png -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/21-PersonnelAPI_LogDocument/src/.DS_Store -------------------------------------------------------------------------------- /11-Error-management/public/images/monalisa.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/11-Error-management/public/images/monalisa.jpg -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/erdPersonnelAPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/21-PersonnelAPI_LogDocument/erdPersonnelAPI.png -------------------------------------------------------------------------------- /19-PersonnelAPI/_projectStarter/erdPersonnelAPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/19-PersonnelAPI/_projectStarter/erdPersonnelAPI.png -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/erdPersonnelAPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/20-PersonnelAPI-Token_permission/erdPersonnelAPI.png -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.manzara.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.manzara.jpg.icloud -------------------------------------------------------------------------------- /10-Router&middlewres/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "", 3 | "dependencies": { 4 | "dotenv": "^16.4.5", 5 | "express": "^4.18.3" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /32-template-todo2 /public/_footer.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 |
Powered by FullStack Team
4 | 5 | 6 | -------------------------------------------------------------------------------- /33-Template_BlogApp/.env-sample: -------------------------------------------------------------------------------- 1 | PORT=8000 2 | MONGODB=mongodb://127.0.0.1:27017/blogAPP 3 | SECRET_KEY=a7db7ashd7ashd7ahsd7ashd7ashd7hasd7g2367f4e219er 4 | PAGE_SIZE=10 5 | -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/_projectStarter/erdPersonnelAPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/21-PersonnelAPI_LogDocument/_projectStarter/erdPersonnelAPI.png -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/_projectStarter/erdPersonnelAPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/20-PersonnelAPI-Token_permission/_projectStarter/erdPersonnelAPI.png -------------------------------------------------------------------------------- /19-PersonnelAPI/_projectStarter/.env-sample: -------------------------------------------------------------------------------- 1 | PORT=8000 2 | 3 | MONGODB=mongodb://127.0.0.1:27017/personnelAPI 4 | 5 | SECRET_KEY=a7db7ashd7ashd7ahsd7ashd7ashd7hasd7g2367f4e219er 6 | 7 | PAGE_SIZE=25 8 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/_projectStarter/.env-sample: -------------------------------------------------------------------------------- 1 | PORT=8000 2 | 3 | MONGODB=mongodb://127.0.0.1:27017/personnelAPI 4 | 5 | SECRET_KEY=a7db7ashd7ashd7ahsd7ashd7ashd7hasd7g2367f4e219er 6 | 7 | PAGE_SIZE=25 8 | -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/_projectStarter/.env-sample: -------------------------------------------------------------------------------- 1 | PORT=8000 2 | 3 | MONGODB=mongodb://127.0.0.1:27017/personnelAPI 4 | 5 | SECRET_KEY=a7db7ashd7ashd7ahsd7ashd7ashd7hasd7g2367f4e219er 6 | 7 | PAGE_SIZE=25 8 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711915833572-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711915833572-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711916565569-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711916565569-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711917005698-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711917005698-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711978113466-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711978113466-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711978114186-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711978114186-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711978391475-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711978391475-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711978492696-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711978492696-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711978493626-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711978493626-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711978753138-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711978753138-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711978754277-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711978754277-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711979162046-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711979162046-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711979191483-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711979191483-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711979480924-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711979480924-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711979585345-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711979585345-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711979871328-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711979871328-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711980318971-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711980318971-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711980345560-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711980345560-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711980372414-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711980372414-simon-spring-Szabb9A5U4o-unsplash.jpg.icloud -------------------------------------------------------------------------------- /19-PersonnelAPI/_projectStarter/src/controllers/department.controller.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ -------------------------------------------------------------------------------- /19-PersonnelAPI/_projectStarter/src/controllers/personnel.controller.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711916565749-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711916565749-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711917006164-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711917006164-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711978113802-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711978113802-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711978391973-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711978391973-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711978493346-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711978493346-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711978494562-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711978494562-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711978753956-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711978753956-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711978754881-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711978754881-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711979162799-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711979162799-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711979192151-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711979192151-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711979481226-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711979481226-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711979586582-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711979586582-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711979872221-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711979872221-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711980319531-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711980319531-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711980345845-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711980345845-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/uploads/.1711980373093-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salihaoguz11/node/HEAD/24-PizzaAPI_Email_Upload/uploads/.1711980373093-marcell-rubies-cKGtI-S5EPY-unsplash.jpg.icloud -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/_projectStarter/src/controllers/personnel.controller.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/_projectStarter/src/controllers/personnel.controller.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/_projectStarter/src/controllers/department.controller.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/_projectStarter/src/controllers/department.controller.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ -------------------------------------------------------------------------------- /19-PersonnelAPI/_projectStarter/src/models/department.model.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require('../configs/dbConnection') 6 | /* ------------------------------------------------------- */ -------------------------------------------------------------------------------- /19-PersonnelAPI/_projectStarter/src/models/personnel.model.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require('../configs/dbConnection') 6 | /* ------------------------------------------------------- */ -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/_projectStarter/src/models/department.model.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require('../configs/dbConnection') 6 | /* ------------------------------------------------------- */ -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/_projectStarter/src/models/personnel.model.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require('../configs/dbConnection') 6 | /* ------------------------------------------------------- */ -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/_projectStarter/src/models/department.model.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require('../configs/dbConnection') 6 | /* ------------------------------------------------------- */ -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/_projectStarter/src/models/personnel.model.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require('../configs/dbConnection') 6 | /* ------------------------------------------------------- */ -------------------------------------------------------------------------------- /31-template-toDo/intro.md: -------------------------------------------------------------------------------- 1 | # TODO Project with Sequelize 2 | 3 | ## What? Why? 4 | 5 | ### Model Logic in MVC: 6 | 7 | ![](./intro-mvc.png) 8 | 9 | ### ORM: 10 | 11 | ![](./intro-orm.jpeg) 12 | 13 | ### SEQUELIZE: 14 | 15 | https://sequelize.org/ 16 | 17 | ![](./intro-sequelize.png) 18 | 19 | ## TODO API 20 | 21 | ### ERD: 22 | 23 | ![ERD](./erdTodoAPI.png) -------------------------------------------------------------------------------- /32-template-todo2 /intro.md: -------------------------------------------------------------------------------- 1 | # TODO Project with Sequelize 2 | 3 | ## What? Why? 4 | 5 | ### Model Logic in MVC: 6 | 7 | ![](./intro-mvc.png) 8 | 9 | ### ORM: 10 | 11 | ![](./intro-orm.jpeg) 12 | 13 | ### SEQUELIZE: 14 | 15 | https://sequelize.org/ 16 | 17 | ![](./intro-sequelize.png) 18 | 19 | ## TODO API 20 | 21 | ### ERD: 22 | 23 | ![ERD](./erdTodoAPI.png) -------------------------------------------------------------------------------- /8-NodeJs-server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "node", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "dotenv": "^16.4.5", 14 | "express": "^4.18.2" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /9-expressRouting/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "expressrouting", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "dotenv": "^16.4.5", 14 | "express": "^4.18.2" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /25-RentACar/src/helpers/dateToLocaleString.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // dateToLocaleString(date:Date): 6 | 7 | module.exports = function (dateData) { 8 | return dateData.toLocaleString('tr-tr', { dateStyle: 'full', timeStyle: 'medium' }) 9 | } -------------------------------------------------------------------------------- /26-RentACar_2/src/helpers/dateToLocaleString.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // dateToLocaleString(date:Date): 6 | 7 | module.exports = function (dateData) { 8 | return dateData.toLocaleString('tr-tr', { dateStyle: 'full', timeStyle: 'medium' }) 9 | } -------------------------------------------------------------------------------- /11-Error-management/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "11-error-management", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "dotenv": "^16.4.5", 14 | "express": "^4.18.3", 15 | "express-async-errors": "^3.1.1" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /19-PersonnelAPI/_projectStarter/src/routes/department.router.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | 8 | 9 | 10 | /* ------------------------------------------------------- */ 11 | module.exports = router -------------------------------------------------------------------------------- /19-PersonnelAPI/_projectStarter/src/routes/personnel.router.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | 8 | 9 | 10 | /* ------------------------------------------------------- */ 11 | module.exports = router -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/_projectStarter/src/routes/department.router.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | 8 | 9 | 10 | /* ------------------------------------------------------- */ 11 | module.exports = router -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/_projectStarter/src/routes/personnel.router.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | 8 | 9 | 10 | /* ------------------------------------------------------- */ 11 | module.exports = router -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/_projectStarter/src/routes/department.router.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | 8 | 9 | 10 | /* ------------------------------------------------------- */ 11 | module.exports = router -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/_projectStarter/src/routes/personnel.router.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | 8 | 9 | 10 | /* ------------------------------------------------------- */ 11 | module.exports = router -------------------------------------------------------------------------------- /15-BlogAPI_Mongoose/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "15-blogapi_mongoose", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "dotenv": "^16.4.5", 14 | "express": "^4.18.3", 15 | "express-async-errors": "^3.1.1", 16 | "mongoose": "^8.2.1" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /16-BlogAPI_Mongoose copy/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "15-blogapi_mongoose", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "dotenv": "^16.4.5", 14 | "express": "^4.18.3", 15 | "express-async-errors": "^3.1.1", 16 | "mongoose": "^8.2.1" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /12-Models-Todo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "12-models-todo", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "dotenv": "^16.4.5", 14 | "express": "^4.18.3", 15 | "express-async-errors": "^3.1.1", 16 | "sequelize": "^6.37.1", 17 | "sqlite3": "^5.1.7" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /15-BlogAPI_Mongoose/readme.md: -------------------------------------------------------------------------------- 1 | # NoSQL DB 2 | 3 | ```jsx 4 | NoSQL DB na yardimci olan yapiya Object Document Maping denir. 5 | * Mongoose gorevi MongoDB islemlerini kolaylastirmaktir. 6 | * MongoDB esnekligi problem olusturabiliyor ve burada Mongoose 7 | bir standart olusturmak icin devreye giriyor. 8 | * index true erisimi hizlandirir ama her field'e eklersen 9 | o zaman db'ye yuk olur. 10 | ``` 11 | 12 | ### 13 | 14 | ```jsx 15 | 16 | ``` 17 | 18 | ### 19 | 20 | ```jsx 21 | 22 | ``` 23 | -------------------------------------------------------------------------------- /15-BlogAPI_Mongoose/src/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | BLOG API with Mongoose 4 | ------------------------------------------------------- */ 5 | const mongoose = require("mongoose"); 6 | // mongoose.connect("mongodb://localhost:27017/blogAPI"); 7 | const MONGODB = process.env.MONGODB; 8 | mongoose 9 | .connect(MONGODB) 10 | .then(() => console.log("DB connected")) 11 | .catch((err) => console.log("DB not connected", err)); 12 | -------------------------------------------------------------------------------- /19-PersonnelAPI/src/middlewares/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // app.use(errorHandler): 6 | 7 | module.exports = (err, req, res, next) => { 8 | 9 | return res.status(res?.errorStatusCode || 500).send({ 10 | error: true, 11 | message: err.message, 12 | cause: err.cause, 13 | body: req.body 14 | }); 15 | } -------------------------------------------------------------------------------- /22-PizzaAPI/src/middlewares/permissions.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | module.exports = { 6 | isLogin: (req, res, next) => { 7 | if (req.user && req.user.isActive) { 8 | next(); 9 | } else { 10 | res.errorStatusCode = 403; 11 | throw new Error("NoPermission: You must login."); 12 | } 13 | }, 14 | }; 15 | -------------------------------------------------------------------------------- /13-Models-Todo2/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "13-models-todo2", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "dotenv": "^16.4.5", 14 | "express": "^4.18.3", 15 | "express-async-errors": "^3.1.1", 16 | "sequelize": "^6.37.1", 17 | "sqlite3": "^5.1.7" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /16-BlogAPI_Mongoose copy/src/configs/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | BLOG API with Mongoose 4 | ------------------------------------------------------- */ 5 | const mongoose = require("mongoose"); 6 | // mongoose.connect("mongodb://localhost:27017/blogAPI"); 7 | const MONGODB = process.env.MONGODB; 8 | mongoose 9 | .connect(MONGODB) 10 | .then(() => console.log("DB connected")) 11 | .catch((err) => console.log("DB not connected", err)); 12 | -------------------------------------------------------------------------------- /18-BlogAPI_SearchSort/src/configs/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | BLOG API with Mongoose 4 | ------------------------------------------------------- */ 5 | const mongoose = require("mongoose"); 6 | // mongoose.connect("mongodb://localhost:27017/blogAPI"); 7 | const MONGODB = process.env.MONGODB; 8 | mongoose 9 | .connect(MONGODB) 10 | .then(() => console.log("DB connected")) 11 | .catch((err) => console.log("DB not connected", err)); 12 | -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/src/middlewares/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // app.use(errorHandler): 6 | 7 | module.exports = (err, req, res, next) => { 8 | 9 | return res.status(res?.errorStatusCode || 500).send({ 10 | error: true, 11 | message: err.message, 12 | cause: err.cause, 13 | body: req.body 14 | }); 15 | } -------------------------------------------------------------------------------- /17-BlogAPI_SessionCookies l/src/configs/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | BLOG API with Mongoose 4 | ------------------------------------------------------- */ 5 | const mongoose = require("mongoose"); 6 | // mongoose.connect("mongodb://localhost:27017/blogAPI"); 7 | const MONGODB = process.env.MONGODB; 8 | mongoose 9 | .connect(MONGODB) 10 | .then(() => console.log("DB connected")) 11 | .catch((err) => console.log("DB not connected", err)); 12 | -------------------------------------------------------------------------------- /19-PersonnelAPI/_projectStarter/src/middlewares/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // app.use(errorHandler): 6 | 7 | module.exports = (err, req, res, next) => { 8 | 9 | return res.status(res?.errorStatusCode || 500).send({ 10 | error: true, 11 | message: err.message, 12 | cause: err.cause, 13 | body: req.body 14 | }); 15 | } -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/src/middlewares/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // app.use(errorHandler): 6 | 7 | module.exports = (err, req, res, next) => { 8 | 9 | return res.status(res?.errorStatusCode || 500).send({ 10 | error: true, 11 | message: err.message, 12 | cause: err.cause, 13 | body: req.body 14 | }); 15 | } -------------------------------------------------------------------------------- /22-PizzaAPI/src/middlewares/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // app.use(errorHandler): 6 | 7 | module.exports = (err, req, res, next) => { 8 | 9 | return res.status(res?.errorStatusCode || 500).send({ 10 | error: true, 11 | message: err.message, 12 | cause: err.cause, 13 | body: req.body 14 | }); 15 | } -------------------------------------------------------------------------------- /18-BlogAPI_SearchSort/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "15-blogapi_mongoose", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "cookie-session": "^2.1.0", 14 | "dotenv": "^16.4.5", 15 | "express": "^4.18.3", 16 | "express-async-errors": "^3.1.1", 17 | "mongoose": "^8.2.1" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/middlewares/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // app.use(errorHandler): 6 | 7 | module.exports = (err, req, res, next) => { 8 | 9 | return res.status(res?.errorStatusCode || 500).send({ 10 | error: true, 11 | message: err.message, 12 | cause: err.cause, 13 | body: req.body 14 | }); 15 | } -------------------------------------------------------------------------------- /17-BlogAPI_SessionCookies l/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "15-blogapi_mongoose", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "cookie-session": "^2.1.0", 14 | "dotenv": "^16.4.5", 15 | "express": "^4.18.3", 16 | "express-async-errors": "^3.1.1", 17 | "mongoose": "^8.2.1" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/middlewares/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // app.use(errorHandler): 6 | 7 | module.exports = (err, req, res, next) => { 8 | 9 | return res.status(res?.errorStatusCode || 500).send({ 10 | error: true, 11 | message: err.message, 12 | cause: err.cause, 13 | body: req.body 14 | }); 15 | } -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/_projectStarter/src/middlewares/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // app.use(errorHandler): 6 | 7 | module.exports = (err, req, res, next) => { 8 | 9 | return res.status(res?.errorStatusCode || 500).send({ 10 | error: true, 11 | message: err.message, 12 | cause: err.cause, 13 | body: req.body 14 | }); 15 | } -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/_projectStarter/src/middlewares/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // app.use(errorHandler): 6 | 7 | module.exports = (err, req, res, next) => { 8 | 9 | return res.status(res?.errorStatusCode || 500).send({ 10 | error: true, 11 | message: err.message, 12 | cause: err.cause, 13 | body: req.body 14 | }); 15 | } -------------------------------------------------------------------------------- /19-PersonnelAPI/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "personnelapi", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "cookie-session": "^2.0.0", 14 | "dotenv": "^16.3.1", 15 | "express": "^4.18.2", 16 | "express-async-errors": "^3.1.1", 17 | "jsonwebtoken": "^9.0.2", 18 | "mongoose": "^7.6.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /25-RentACar/src/middlewares/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // app.use(errorHandler): 6 | 7 | module.exports = (err, req, res, next) => { 8 | 9 | return res.status(res?.errorStatusCode || 500).send({ 10 | error: true, 11 | message: err.message, 12 | cause: err.cause, 13 | body: req.body, 14 | stack: err.stack 15 | }); 16 | } -------------------------------------------------------------------------------- /26-RentACar_2/src/middlewares/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // app.use(errorHandler): 6 | 7 | module.exports = (err, req, res, next) => { 8 | 9 | return res.status(res?.errorStatusCode || 500).send({ 10 | error: true, 11 | message: err.message, 12 | cause: err.cause, 13 | body: req.body, 14 | stack: err.stack 15 | }); 16 | } -------------------------------------------------------------------------------- /22-PizzaAPI/src/helpers/sync.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // sync(): 6 | 7 | module.exports = async function() { 8 | 9 | return null; 10 | 11 | /* CLEAR DATABASE */ 12 | const { mongoose } = require('../configs/dbConnection') 13 | await mongoose.connection.dropDatabase() 14 | console.log('- Database and all data DELETED!') 15 | /* CLEAR DATABASE */ 16 | 17 | } -------------------------------------------------------------------------------- /25-RentACar/src/helpers/sync.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // sync(): 6 | 7 | module.exports = async function() { 8 | 9 | return null; 10 | 11 | /* REMOVE DATABASE */ 12 | const { mongoose } = require('../configs/dbConnection') 13 | await mongoose.connection.dropDatabase() 14 | console.log('- Database and all data DELETED!') 15 | /* REMOVE DATABASE */ 16 | 17 | } -------------------------------------------------------------------------------- /19-PersonnelAPI/_projectStarter/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "personnelapi", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "cookie-session": "^2.0.0", 14 | "dotenv": "^16.3.1", 15 | "express": "^4.18.2", 16 | "express-async-errors": "^3.1.1", 17 | "jsonwebtoken": "^9.0.2", 18 | "mongoose": "^7.6.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "personnelapi", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "cookie-session": "^2.0.0", 14 | "dotenv": "^16.3.1", 15 | "express": "^4.18.2", 16 | "express-async-errors": "^3.1.1", 17 | "jsonwebtoken": "^9.0.2", 18 | "mongoose": "^7.6.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /26-RentACar_2/src/helpers/sync.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // sync(): 6 | 7 | module.exports = async function() { 8 | 9 | return null; 10 | 11 | /* REMOVE DATABASE */ 12 | const { mongoose } = require('../configs/dbConnection') 13 | await mongoose.connection.dropDatabase() 14 | console.log('- Database and all data DELETED!') 15 | /* REMOVE DATABASE */ 16 | 17 | } -------------------------------------------------------------------------------- /33-Template_BlogApp/src/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG Project with Mongoose 4 | ------------------------------------------------------- */ 5 | 6 | const mongoose = require('mongoose') 7 | 8 | // const MONGODB = process.env.MONGODB || 'mongodb://localhost:27017/blogAPI' 9 | // mongoose.connect(MONGODB) 10 | 11 | mongoose.connect(process.env.MONGODB) 12 | .then(() => console.log(' * DB Connected * ')) 13 | .catch((err) => console.log(' * DB Not Connected * ', err)) -------------------------------------------------------------------------------- /22-PizzaAPI/src/middlewares/logger.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // $ npm i morgan 6 | // app.use(logger): 7 | 8 | const morgan = require('morgan') 9 | const fs = require('node:fs') 10 | 11 | const now = new Date() 12 | const today = now.toISOString().split('T')[0] 13 | 14 | module.exports = morgan('combined', { 15 | stream: fs.createWriteStream(`./logs/${today}.log`, { flags: 'a+' }) 16 | }) -------------------------------------------------------------------------------- /25-RentACar/src/middlewares/logger.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // $ npm i morgan 6 | // app.use(logger): 7 | 8 | const morgan = require('morgan') 9 | const fs = require('node:fs') 10 | 11 | const now = new Date() 12 | const today = now.toISOString().split('T')[0] 13 | 14 | module.exports = morgan('combined', { 15 | stream: fs.createWriteStream(`./logs/${today}.log`, { flags: 'a+' }) 16 | }) -------------------------------------------------------------------------------- /26-RentACar_2/src/middlewares/logger.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // $ npm i morgan 6 | // app.use(logger): 7 | 8 | const morgan = require('morgan') 9 | const fs = require('node:fs') 10 | 11 | const now = new Date() 12 | const today = now.toISOString().split('T')[0] 13 | 14 | module.exports = morgan('combined', { 15 | stream: fs.createWriteStream(`./logs/${today}.log`, { flags: 'a+' }) 16 | }) -------------------------------------------------------------------------------- /19-PersonnelAPI/src/helpers/passwordEncrypt.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // passwordEncrypt(): 6 | 7 | const crypto = require('node:crypto'), 8 | keyCode = process.env.SECRET_KEY, 9 | loopCount = 10_000, 10 | charCount = 32, 11 | encType = 'sha512'; 12 | 13 | module.exports = function (password) { 14 | return crypto.pbkdf2Sync(password, keyCode, loopCount, charCount, encType).toString('hex') 15 | } -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/middlewares/logger.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // $ npm i morgan 6 | // app.use(logger): 7 | 8 | const morgan = require('morgan') 9 | const fs = require('node:fs') 10 | 11 | const now = new Date() 12 | const today = now.toISOString().split('T')[0] 13 | 14 | module.exports = morgan('combined', { 15 | stream: fs.createWriteStream(`./logs/${today}.log`, { flags: 'a+' }) 16 | }) -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/_projectStarter/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "personnelapi", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "cookie-session": "^2.0.0", 14 | "dotenv": "^16.3.1", 15 | "express": "^4.18.2", 16 | "express-async-errors": "^3.1.1", 17 | "jsonwebtoken": "^9.0.2", 18 | "mongoose": "^7.6.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/_projectStarter/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "personnelapi", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "cookie-session": "^2.0.0", 14 | "dotenv": "^16.3.1", 15 | "express": "^4.18.2", 16 | "express-async-errors": "^3.1.1", 17 | "jsonwebtoken": "^9.0.2", 18 | "mongoose": "^7.6.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/src/helpers/passwordEncrypt.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // passwordEncrypt(): 6 | 7 | const crypto = require('node:crypto'), 8 | keyCode = process.env.SECRET_KEY, 9 | loopCount = 10_000, 10 | charCount = 32, 11 | encType = 'sha512'; 12 | 13 | module.exports = function (password) { 14 | return crypto.pbkdf2Sync(password, keyCode, loopCount, charCount, encType).toString('hex') 15 | } -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/middlewares/logger.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // $ npm i morgan 6 | // app.use(logger): 7 | 8 | const morgan = require('morgan') 9 | const fs = require('node:fs') 10 | 11 | const now = new Date() 12 | const today = now.toISOString().split('T')[0] 13 | 14 | module.exports = morgan('combined', { 15 | stream: fs.createWriteStream(`./logs/${today}.log`, { flags: 'a+' }) 16 | }) -------------------------------------------------------------------------------- /19-PersonnelAPI/_projectStarter/src/helpers/passwordEncrypt.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // passwordEncrypt(): 6 | 7 | const crypto = require('node:crypto'), 8 | keyCode = process.env.SECRET_KEY, 9 | loopCount = 10_000, 10 | charCount = 32, 11 | encType = 'sha512'; 12 | 13 | module.exports = function (password) { 14 | return crypto.pbkdf2Sync(password, keyCode, loopCount, charCount, encType).toString('hex') 15 | } -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/src/helpers/passwordEncrypt.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // passwordEncrypt(): 6 | 7 | const crypto = require('node:crypto'), 8 | keyCode = process.env.SECRET_KEY, 9 | loopCount = 10_000, 10 | charCount = 32, 11 | encType = 'sha512'; 12 | 13 | module.exports = function (password) { 14 | return crypto.pbkdf2Sync(password, keyCode, loopCount, charCount, encType).toString('hex') 15 | } -------------------------------------------------------------------------------- /33-Template_BlogApp/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "13-blogapi_mongoose", 3 | "version": "1.0.0", 4 | "description": "## MONGOOSE", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "cookie-session": "^2.0.0", 14 | "dotenv": "^16.3.1", 15 | "ejs": "^3.1.9", 16 | "express": "^4.18.2", 17 | "express-async-errors": "^3.1.1", 18 | "mongoose": "^8.0.0", 19 | "tinymce": "^6.7.2" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/_projectStarter/src/helpers/passwordEncrypt.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // passwordEncrypt(): 6 | 7 | const crypto = require('node:crypto'), 8 | keyCode = process.env.SECRET_KEY, 9 | loopCount = 10_000, 10 | charCount = 32, 11 | encType = 'sha512'; 12 | 13 | module.exports = function (password) { 14 | return crypto.pbkdf2Sync(password, keyCode, loopCount, charCount, encType).toString('hex') 15 | } -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/_projectStarter/src/helpers/passwordEncrypt.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // passwordEncrypt(): 6 | 7 | const crypto = require('node:crypto'), 8 | keyCode = process.env.SECRET_KEY, 9 | loopCount = 10_000, 10 | charCount = 32, 11 | encType = 'sha512'; 12 | 13 | module.exports = function (password) { 14 | return crypto.pbkdf2Sync(password, keyCode, loopCount, charCount, encType).toString('hex') 15 | } -------------------------------------------------------------------------------- /22-PizzaAPI/src/helpers/passwordEncrypt.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // passwordEncrypt(password:string): 6 | 7 | const crypto = require('node:crypto'), 8 | keyCode = process.env.SECRET_KEY, 9 | loopCount = 10_000, 10 | charCount = 32, 11 | encType = 'sha512'; 12 | 13 | module.exports = function (password) { 14 | return crypto.pbkdf2Sync(password, keyCode, loopCount, charCount, encType).toString('hex') 15 | } -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/helpers/passwordEncrypt.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // passwordEncrypt(password:string): 6 | 7 | const crypto = require('node:crypto'), 8 | keyCode = process.env.SECRET_KEY, 9 | loopCount = 10_000, 10 | charCount = 32, 11 | encType = 'sha512'; 12 | 13 | module.exports = function (password) { 14 | return crypto.pbkdf2Sync(password, keyCode, loopCount, charCount, encType).toString('hex') 15 | } -------------------------------------------------------------------------------- /25-RentACar/src/helpers/passwordEncrypt.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // passwordEncrypt(password:string): 6 | 7 | const crypto = require('node:crypto'), 8 | keyCode = process.env.SECRET_KEY, 9 | loopCount = 10_000, 10 | charCount = 32, 11 | encType = 'sha512'; 12 | 13 | module.exports = function (password) { 14 | return crypto.pbkdf2Sync(password, keyCode, loopCount, charCount, encType).toString('hex') 15 | } -------------------------------------------------------------------------------- /26-RentACar_2/src/helpers/passwordEncrypt.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // passwordEncrypt(password:string): 6 | 7 | const crypto = require('node:crypto'), 8 | keyCode = process.env.SECRET_KEY, 9 | loopCount = 10_000, 10 | charCount = 32, 11 | encType = 'sha512'; 12 | 13 | module.exports = function (password) { 14 | return crypto.pbkdf2Sync(password, keyCode, loopCount, charCount, encType).toString('hex') 15 | } -------------------------------------------------------------------------------- /31-template-toDo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "12-models_todo", 3 | "version": "1.0.0", 4 | "description": "## What? Why?", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "dotenv": "^16.4.5", 14 | "ejs": "^3.1.10", 15 | "express": "^4.18.3", 16 | "express-async-errors": "^3.1.1", 17 | "pg": "^8.11.3", 18 | "pg-hstore": "^2.3.4", 19 | "sequelize": "^6.37.1", 20 | "sqlite3": "^5.1.7" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/helpers/passwordEncrypt.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // passwordEncrypt(password:string): 6 | 7 | const crypto = require('node:crypto'), 8 | keyCode = process.env.SECRET_KEY, 9 | loopCount = 10_000, 10 | charCount = 32, 11 | encType = 'sha512'; 12 | 13 | module.exports = function (password) { 14 | return crypto.pbkdf2Sync(password, keyCode, loopCount, charCount, encType).toString('hex') 15 | } -------------------------------------------------------------------------------- /32-template-todo2 /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "12-models_todo", 3 | "version": "1.0.0", 4 | "description": "## What? Why?", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "dotenv": "^16.4.5", 14 | "ejs": "^3.1.10", 15 | "express": "^4.18.3", 16 | "express-async-errors": "^3.1.1", 17 | "pg": "^8.11.3", 18 | "pg-hstore": "^2.3.4", 19 | "sequelize": "^6.37.1", 20 | "sqlite3": "^5.1.7" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /16-BlogAPI_Mongoose copy/src/routes/user.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG API 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router() 6 | 7 | const User = require("../controllers/user.controller") 8 | 9 | // User: 10 | router.route('/') 11 | .get(User.list) 12 | .post(User.create) 13 | router.route('/:userId') 14 | .get(User.read) 15 | .put(User.update) // put patch aynı 16 | .patch(User.update) 17 | .delete(User.delete) 18 | 19 | module.exports = router -------------------------------------------------------------------------------- /22-PizzaAPI/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "_projectstarter", 3 | "version": "1.0.0", 4 | "description": "### ERD:", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "dotenv": "^16.4.5", 14 | "express": "^4.19.2", 15 | "express-async-errors": "^3.1.1", 16 | "mongoose": "^8.2.3", 17 | "morgan": "^1.10.0", 18 | "redoc-express": "^2.1.0", 19 | "swagger-autogen": "^2.23.7", 20 | "swagger-ui-express": "^5.0.0" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /8-NodeJs-server/expressServer.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | // Node Js Server 3 | require("dotenv").config(); //env file dan verileri alir ve process.env ye ekler.; 4 | // const PORT = process.env.PORT; 5 | // const HOST = process.env.HOST; 6 | 7 | const PORT = process.env?.PORT || 8000; 8 | const HOST = process.env?.HOST || "127.0.0.1"; 9 | 10 | //npm i express 11 | const express = require("express"); 12 | const app = express(); 13 | 14 | console.log("express server"); 15 | app.get("/", (req, res) => { 16 | res.send("express deneme"); 17 | }); 18 | app.listen(8000, () => console.log(`server run:http//${HOST}:${PORT}`)); 19 | -------------------------------------------------------------------------------- /13-Models-Todo2/app/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - TODO Project with Sequelize 4 | ------------------------------------------------------- */ 5 | 6 | module.exports = (err, req, res, next) => { 7 | const errorStatusCode = res.errorStatusCode ?? 500; 8 | console.log("errorHandler worked."); 9 | res.status(errorStatusCode).send({ 10 | error: true, // special data 11 | message: err.message, // error string message 12 | cause: err.cause, // error option cause 13 | // stack: err.stack, // error details 14 | }); 15 | }; 16 | -------------------------------------------------------------------------------- /15-BlogAPI_Mongoose/intro.md: -------------------------------------------------------------------------------- 1 | # BLOG Project with Mongoose 2 | 3 | ## MONGOOSE 4 | 5 | https://mongoosejs.com/ 6 | 7 | ### What? Why? 8 | 9 | ![](./mongoose.png) 10 | 11 | ## BLOG API 12 | 13 | ### ERD: 14 | 15 | ![ERD](./erdBlogAPI.png) 16 | 17 | ### Folder/File Structure: 18 | 19 | ``` 20 | .env 21 | .gitignore 22 | index.js 23 | package.json 24 | readme.md 25 | src/ 26 | errorHandler.js 27 | dbConnection.js 28 | models/ 29 | blogModel.js 30 | controllers/ 31 | blogController.js 32 | routes/ 33 | blogRouter.js 34 | ``` -------------------------------------------------------------------------------- /13-Models-Todo2/app/errorHandler copy.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - TODO Project with Sequelize 4 | ------------------------------------------------------- */ 5 | 6 | module.exports = (err, req, res, next) => { 7 | const errorStatusCode = res.errorStatusCode ?? 500; 8 | console.log("errorHandler worked."); 9 | res.status(errorStatusCode).send({ 10 | error: true, // special data 11 | message: err.message, // error string message 12 | cause: err.cause, // error option cause 13 | // stack: err.stack, // error details 14 | }); 15 | }; 16 | -------------------------------------------------------------------------------- /15-BlogAPI_Mongoose/src/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG API Project with Mongoose 4 | ------------------------------------------------------- */ 5 | 6 | module.exports = (err, req, res, next) => { 7 | const errorStatusCode = res.errorStatusCode ?? 500; 8 | console.log("errorHandler worked."); 9 | res.status(errorStatusCode).send({ 10 | error: true, // special data 11 | message: err.message, // error string message 12 | cause: err.cause, // error option cause 13 | // stack: err.stack, // error details 14 | }); 15 | }; 16 | -------------------------------------------------------------------------------- /16-BlogAPI_Mongoose copy/intro.md: -------------------------------------------------------------------------------- 1 | # BLOG Project with Mongoose 2 | 3 | ## MONGOOSE 4 | 5 | https://mongoosejs.com/ 6 | 7 | ### What? Why? 8 | 9 | ![](./mongoose.png) 10 | 11 | ## BLOG API 12 | 13 | ### ERD: 14 | 15 | ![ERD](./erdBlogAPI.png) 16 | 17 | ### Folder/File Structure: 18 | 19 | ``` 20 | .env 21 | .gitignore 22 | index.js 23 | package.json 24 | readme.md 25 | src/ 26 | errorHandler.js 27 | dbConnection.js 28 | models/ 29 | blogModel.js 30 | controllers/ 31 | blogController.js 32 | routes/ 33 | blogRouter.js 34 | ``` -------------------------------------------------------------------------------- /18-BlogAPI_SearchSort/intro.md: -------------------------------------------------------------------------------- 1 | # BLOG Project with Mongoose 2 | 3 | ## MONGOOSE 4 | 5 | https://mongoosejs.com/ 6 | 7 | ### What? Why? 8 | 9 | ![](./mongoose.png) 10 | 11 | ## BLOG API 12 | 13 | ### ERD: 14 | 15 | ![ERD](./erdBlogAPI.png) 16 | 17 | ### Folder/File Structure: 18 | 19 | ``` 20 | .env 21 | .gitignore 22 | index.js 23 | package.json 24 | readme.md 25 | src/ 26 | errorHandler.js 27 | dbConnection.js 28 | models/ 29 | blogModel.js 30 | controllers/ 31 | blogController.js 32 | routes/ 33 | blogRouter.js 34 | ``` -------------------------------------------------------------------------------- /17-BlogAPI_SessionCookies l/intro.md: -------------------------------------------------------------------------------- 1 | # BLOG Project with Mongoose 2 | 3 | ## MONGOOSE 4 | 5 | https://mongoosejs.com/ 6 | 7 | ### What? Why? 8 | 9 | ![](./mongoose.png) 10 | 11 | ## BLOG API 12 | 13 | ### ERD: 14 | 15 | ![ERD](./erdBlogAPI.png) 16 | 17 | ### Folder/File Structure: 18 | 19 | ``` 20 | .env 21 | .gitignore 22 | index.js 23 | package.json 24 | readme.md 25 | src/ 26 | errorHandler.js 27 | dbConnection.js 28 | models/ 29 | blogModel.js 30 | controllers/ 31 | blogController.js 32 | routes/ 33 | blogRouter.js 34 | ``` -------------------------------------------------------------------------------- /18-BlogAPI_SearchSort/src/middlewares/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG API Project with Mongoose 4 | ------------------------------------------------------- */ 5 | 6 | module.exports = (err, req, res, next) => { 7 | const errorStatusCode = res.errorStatusCode ?? 500; 8 | console.log("errorHandler worked."); 9 | res.status(errorStatusCode).send({ 10 | error: true, // special data 11 | message: err.message, // error string message 12 | cause: err.cause, // error option cause 13 | // stack: err.stack, // error details 14 | }); 15 | }; 16 | -------------------------------------------------------------------------------- /31-template-toDo/app/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - TODO Project with Sequelize 4 | ------------------------------------------------------- */ 5 | 6 | module.exports = (err, req, res, next) => { 7 | const errorStatusCode = res.errorStatusCode ?? 500 8 | console.log('errorHandler worked.') 9 | res.status(errorStatusCode).send({ 10 | error: true, // special data 11 | message: err.message, // error string message 12 | cause: err.cause, // error option cause 13 | // stack: err.stack, // error details 14 | }) 15 | } 16 | -------------------------------------------------------------------------------- /16-BlogAPI_Mongoose copy/src/middlewares/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG API Project with Mongoose 4 | ------------------------------------------------------- */ 5 | 6 | module.exports = (err, req, res, next) => { 7 | const errorStatusCode = res.errorStatusCode ?? 500; 8 | console.log("errorHandler worked."); 9 | res.status(errorStatusCode).send({ 10 | error: true, // special data 11 | message: err.message, // error string message 12 | cause: err.cause, // error option cause 13 | // stack: err.stack, // error details 14 | }); 15 | }; 16 | -------------------------------------------------------------------------------- /17-BlogAPI_SessionCookies l/src/middlewares/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG API Project with Mongoose 4 | ------------------------------------------------------- */ 5 | 6 | module.exports = (err, req, res, next) => { 7 | const errorStatusCode = res.errorStatusCode ?? 500; 8 | console.log("errorHandler worked."); 9 | res.status(errorStatusCode).send({ 10 | error: true, // special data 11 | message: err.message, // error string message 12 | cause: err.cause, // error option cause 13 | // stack: err.stack, // error details 14 | }); 15 | }; 16 | -------------------------------------------------------------------------------- /25-RentACar/src/routes/auth.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | // routes/auth: 8 | 9 | const auth = require('../controllers/auth') 10 | 11 | // URL: /auth 12 | 13 | router.post('/login', auth.login) 14 | router.post('/refresh', auth.refresh) 15 | router.get('/logout', auth.logout) 16 | 17 | /* ------------------------------------------------------- */ 18 | module.exports = router -------------------------------------------------------------------------------- /32-template-todo2 /public/_header.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | TODO LIST 8 | 10 | 11 | 12 | 13 |

FullStack Team TODO Project

14 |
15 |
16 |
17 |
-------------------------------------------------------------------------------- /26-RentACar_2/src/routes/auth.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | // routes/auth: 8 | 9 | const auth = require('../controllers/auth') 10 | 11 | // URL: /auth 12 | 13 | router.post('/login', auth.login) 14 | router.post('/refresh', auth.refresh) 15 | router.get('/logout', auth.logout) 16 | 17 | /* ------------------------------------------------------- */ 18 | module.exports = router -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "_projectstarter", 3 | "version": "1.0.0", 4 | "description": "### ERD:", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "dotenv": "^16.4.5", 14 | "express": "^4.19.2", 15 | "express-async-errors": "^3.1.1", 16 | "jsonwebtoken": "^9.0.2", 17 | "mongoose": "^8.2.3", 18 | "morgan": "^1.10.0", 19 | "redoc-express": "^2.1.0", 20 | "swagger-autogen": "^2.23.7", 21 | "swagger-ui-express": "^5.0.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /25-RentACar/src/middlewares/upload.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // Middleware: upload 6 | // npm i multer 7 | 8 | // Multer: UploadFile: 9 | // https://expressjs.com/en/resources/middleware/multer.html 10 | const multer = require('multer') 11 | 12 | module.exports = multer({ 13 | storage: multer.diskStorage({ 14 | destination: './upload/', 15 | filename: function(req, file, returnCallback) { 16 | returnCallback(null, file.originalname) 17 | } 18 | }) 19 | }) -------------------------------------------------------------------------------- /26-RentACar_2/src/middlewares/upload.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // Middleware: upload 6 | // npm i multer 7 | 8 | // Multer: UploadFile: 9 | // https://expressjs.com/en/resources/middleware/multer.html 10 | const multer = require('multer') 11 | 12 | module.exports = multer({ 13 | storage: multer.diskStorage({ 14 | destination: './upload/', 15 | filename: function(req, file, returnCallback) { 16 | returnCallback(null, file.originalname) 17 | } 18 | }) 19 | }) -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/src/routes/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | 8 | // /auth: 9 | router.use("/auth", require("./auth.router")); 10 | // /token: 11 | router.use("/tokens", require("./token.router")); 12 | // /personnel: 13 | router.use("/personnels", require("./personnel.router")); 14 | // /department: 15 | router.use("/departments", require("./department.router")); 16 | 17 | module.exports = router; 18 | -------------------------------------------------------------------------------- /19-PersonnelAPI/_projectStarter/src/configs/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // MongoDB Connection: 6 | 7 | const mongoose = require('mongoose') 8 | 9 | const dbConnection = function() { 10 | // Connect: 11 | mongoose.connect(process.env.MONGODB) 12 | .then(() => console.log('* DB Connected * ')) 13 | .catch((err) => console.log('* DB Not Connected * ', err)) 14 | } 15 | 16 | /* ------------------------------------------------------- */ 17 | module.exports = { 18 | mongoose, 19 | dbConnection 20 | } -------------------------------------------------------------------------------- /22-PizzaAPI/src/configs/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // MongoDB Connection: 6 | 7 | const mongoose = require('mongoose') 8 | 9 | const dbConnection = function() { 10 | // Connect: 11 | mongoose.connect(process.env.MONGODB) 12 | .then(() => console.log('* DB Connected * ')) 13 | .catch((err) => console.log('* DB Not Connected * ', err)) 14 | } 15 | 16 | /* ------------------------------------------------------- */ 17 | module.exports = { 18 | mongoose, 19 | dbConnection 20 | } -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/configs/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // MongoDB Connection: 6 | 7 | const mongoose = require('mongoose') 8 | 9 | const dbConnection = function() { 10 | // Connect: 11 | mongoose.connect(process.env.MONGODB) 12 | .then(() => console.log('* DB Connected * ')) 13 | .catch((err) => console.log('* DB Not Connected * ', err)) 14 | } 15 | 16 | /* ------------------------------------------------------- */ 17 | module.exports = { 18 | mongoose, 19 | dbConnection 20 | } -------------------------------------------------------------------------------- /25-RentACar/src/configs/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // MongoDB Connection: 6 | 7 | const mongoose = require('mongoose') 8 | 9 | const dbConnection = function() { 10 | // Connect: 11 | mongoose.connect(process.env.MONGODB) 12 | .then(() => console.log('* DB Connected * ')) 13 | .catch((err) => console.log('* DB Not Connected * ', err)) 14 | } 15 | 16 | /* ------------------------------------------------------- */ 17 | module.exports = { 18 | mongoose, 19 | dbConnection 20 | } -------------------------------------------------------------------------------- /26-RentACar_2/src/configs/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // MongoDB Connection: 6 | 7 | const mongoose = require('mongoose') 8 | 9 | const dbConnection = function() { 10 | // Connect: 11 | mongoose.connect(process.env.MONGODB) 12 | .then(() => console.log('* DB Connected * ')) 13 | .catch((err) => console.log('* DB Not Connected * ', err)) 14 | } 15 | 16 | /* ------------------------------------------------------- */ 17 | module.exports = { 18 | mongoose, 19 | dbConnection 20 | } -------------------------------------------------------------------------------- /11-Error-management/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - ERROR MANAGEMENT 4 | ------------------------------------------------------- */ 5 | //* ERROR HANDLER 6 | 7 | //? errorHandler is middleware and has must be four parameters. (error, request, response, next) 8 | module.exports = (err, req, res, next) => { 9 | // console.log(err) 10 | console.log("errorHandler started."); 11 | 12 | const errorStatusCode = res?.errorStatusCode || 500; 13 | 14 | res.status(errorStatusCode).send({ 15 | error: true, 16 | message: err.message, 17 | cause: err.cause, 18 | stack: err.stack, 19 | }); 20 | }; 21 | -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/_projectStarter/src/configs/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // MongoDB Connection: 6 | 7 | const mongoose = require('mongoose') 8 | 9 | const dbConnection = function() { 10 | // Connect: 11 | mongoose.connect(process.env.MONGODB) 12 | .then(() => console.log('* DB Connected * ')) 13 | .catch((err) => console.log('* DB Not Connected * ', err)) 14 | } 15 | 16 | /* ------------------------------------------------------- */ 17 | module.exports = { 18 | mongoose, 19 | dbConnection 20 | } -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "personnelapi", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "cookie-session": "^2.0.0", 14 | "dotenv": "^16.3.1", 15 | "express": "^4.18.2", 16 | "express-async-errors": "^3.1.1", 17 | "jsonwebtoken": "^9.0.2", 18 | "mongoose": "^7.6.0", 19 | "morgan": "^1.10.0", 20 | "redoc-express": "^2.1.0", 21 | "swagger-autogen": "^2.23.7", 22 | "swagger-ui-express": "^5.0.0" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/configs/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // MongoDB Connection: 6 | 7 | const mongoose = require('mongoose') 8 | 9 | const dbConnection = function() { 10 | // Connect: 11 | mongoose.connect(process.env.MONGODB) 12 | .then(() => console.log('* DB Connected * ')) 13 | .catch((err) => console.log('* DB Not Connected * ', err)) 14 | } 15 | 16 | /* ------------------------------------------------------- */ 17 | module.exports = { 18 | mongoose, 19 | dbConnection 20 | } -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/_projectStarter/src/configs/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // MongoDB Connection: 6 | 7 | const mongoose = require('mongoose') 8 | 9 | const dbConnection = function() { 10 | // Connect: 11 | mongoose.connect(process.env.MONGODB) 12 | .then(() => console.log('* DB Connected * ')) 13 | .catch((err) => console.log('* DB Not Connected * ', err)) 14 | } 15 | 16 | /* ------------------------------------------------------- */ 17 | module.exports = { 18 | mongoose, 19 | dbConnection 20 | } -------------------------------------------------------------------------------- /15-BlogAPI_Mongoose/src/routes/blog.route.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ====================================================== */ 3 | /* BLOG API ROUTES */ 4 | /* ====================================================== */ 5 | const router = require("express").Router(); 6 | 7 | const { route } = require("express/lib/router"); 8 | const { BlogPost } = require("../controllers/blog.controller"); 9 | 10 | router.route("/posts").get(BlogPost.list).post(BlogPost.create); 11 | 12 | router 13 | .route("/posts/:postId") 14 | .get(BlogPost.read) 15 | .put(BlogPost.update) // put patch aynı 16 | .patch(BlogPost.update) 17 | .delete(BlogPost.delete); 18 | 19 | module.exports = router; 20 | -------------------------------------------------------------------------------- /22-PizzaAPI/src/models/topping.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require('../configs/dbConnection') 6 | /* ------------------------------------------------------- */ 7 | // Topping Model: 8 | 9 | const ToppingSchema = new mongoose.Schema({ 10 | 11 | name: { 12 | type: String, 13 | trim: true, 14 | required: true, 15 | unique: true, 16 | } 17 | 18 | }, { 19 | collection: 'toppings', 20 | timestamps: true 21 | }) 22 | 23 | // Model: 24 | module.exports = mongoose.model('Topping', ToppingSchema) -------------------------------------------------------------------------------- /18-BlogAPI_SearchSort/src/helpers/passwordEncrypt.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG API 4 | ------------------------------------------------------- */ 5 | // Password Encryption: 6 | // https://nodejs.org/api/crypto.html#cryptopbkdf2syncpassword-salt-iterations-keylen-digest 7 | const crypto = require('node:crypto') 8 | 9 | const keyCode = process.env?.SECRET_KEY || 'write_random_chars_in_here' 10 | const loopCount = 10_000 // 10K 11 | const charCount = 32 // write 32 for 64 12 | const encType = 'sha512' 13 | 14 | module.exports = function (password) { 15 | return crypto.pbkdf2Sync(password, keyCode, loopCount, charCount, encType).toString('hex') 16 | } -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/models/topping.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require('../configs/dbConnection') 6 | /* ------------------------------------------------------- */ 7 | // Topping Model: 8 | 9 | const ToppingSchema = new mongoose.Schema({ 10 | 11 | name: { 12 | type: String, 13 | trim: true, 14 | required: true, 15 | unique: true, 16 | } 17 | 18 | }, { 19 | collection: 'toppings', 20 | timestamps: true 21 | }) 22 | 23 | // Model: 24 | module.exports = mongoose.model('Topping', ToppingSchema) -------------------------------------------------------------------------------- /16-BlogAPI_Mongoose copy/src/helpers/passwordEncrypt.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG API 4 | ------------------------------------------------------- */ 5 | // Password Encryption: 6 | // https://nodejs.org/api/crypto.html#cryptopbkdf2syncpassword-salt-iterations-keylen-digest 7 | const crypto = require('node:crypto') 8 | 9 | const keyCode = process.env?.SECRET_KEY || 'write_random_chars_in_here' 10 | const loopCount = 10_000 // 10K 11 | const charCount = 32 // write 32 for 64 12 | const encType = 'sha512' 13 | 14 | module.exports = function (password) { 15 | return crypto.pbkdf2Sync(password, keyCode, loopCount, charCount, encType).toString('hex') 16 | } -------------------------------------------------------------------------------- /17-BlogAPI_SessionCookies l/src/helpers/passwordEncrypt.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG API 4 | ------------------------------------------------------- */ 5 | // Password Encryption: 6 | // https://nodejs.org/api/crypto.html#cryptopbkdf2syncpassword-salt-iterations-keylen-digest 7 | const crypto = require('node:crypto') 8 | 9 | const keyCode = process.env?.SECRET_KEY || 'write_random_chars_in_here' 10 | const loopCount = 10_000 // 10K 11 | const charCount = 32 // write 32 for 64 12 | const encType = 'sha512' 13 | 14 | module.exports = function (password) { 15 | return crypto.pbkdf2Sync(password, keyCode, loopCount, charCount, encType).toString('hex') 16 | } -------------------------------------------------------------------------------- /19-PersonnelAPI/intro.md: -------------------------------------------------------------------------------- 1 | ### Thunder post department example 2 | 3 | ```jsx 4 | 5 | { 6 | "name": "FullStack Department" 7 | } 8 | 9 | ``` 10 | 11 | ### Thunder post personnels example 12 | 13 | ```jsx 14 | { 15 | "departmentId": "departmentId", 16 | "username": "test", 17 | "password": "1234", 18 | "firstName": "firstName", 19 | "lastName": "lastName", 20 | "phone": "123456789", 21 | "email": "email@site.com", 22 | "title": "title", 23 | "salary": 2500, 24 | "description": "description", 25 | "isActive": true, 26 | "isAdmin": false, 27 | "isLead": true, 28 | "startedAt": "2023-10-15 13:14:15" 29 | } 30 | 31 | ``` 32 | 33 | ### 34 | 35 | ```jsx 36 | 37 | ``` 38 | 39 | ### 40 | 41 | ```jsx 42 | 43 | ``` 44 | -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/routes/auth.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/auth: 8 | 9 | const auth = require("../controllers/auth"); 10 | 11 | // URL: /auth 12 | 13 | // Login/logout: 14 | router.post("/login", auth.login); 15 | router.post("/refresh", auth.refresh); 16 | // router.all('/logout', auth.logout) 17 | router.get("/logout", auth.logout); 18 | 19 | /* ------------------------------------------------------- */ 20 | module.exports = router; 21 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/models/topping.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require('../configs/dbConnection') 6 | /* ------------------------------------------------------- */ 7 | // Topping Model: 8 | 9 | const ToppingSchema = new mongoose.Schema({ 10 | 11 | name: { 12 | type: String, 13 | trim: true, 14 | required: true, 15 | unique: true, 16 | } 17 | 18 | }, { 19 | collection: 'toppings', 20 | timestamps: true 21 | }) 22 | 23 | // Model: 24 | module.exports = mongoose.model('Topping', ToppingSchema) -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "_projectstarter", 3 | "version": "1.0.0", 4 | "description": "### ERD:", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "dotenv": "^16.4.5", 14 | "express": "^4.19.2", 15 | "express-async-errors": "^3.1.1", 16 | "jsonwebtoken": "^9.0.2", 17 | "mongoose": "^8.2.3", 18 | "morgan": "^1.10.0", 19 | "multer": "^1.4.5-lts.1", 20 | "nodemailer": "^6.9.13", 21 | "redoc-express": "^2.1.0", 22 | "swagger-autogen": "^2.23.7", 23 | "swagger-ui-express": "^5.0.0" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /19-PersonnelAPI/readme.md: -------------------------------------------------------------------------------- 1 | # PERSONNEL API 2 | 3 | ### ERD: 4 | 5 | ![ERD](./erdPersonnelAPI.png) 6 | 7 | ### Folder/File Structure: 8 | 9 | ``` 10 | .env 11 | .gitignore 12 | index.js 13 | readme.md 14 | src/ 15 | configs/ 16 | dbConnection.js 17 | controllers/ 18 | department.controller.js 19 | personnel.controller.js 20 | helpers/ 21 | passwordEncrypt.js 22 | middlewares/ 23 | errorHandler.js 24 | findSearchSortPage.js 25 | models/ 26 | department.model.js 27 | personnel.model.js 28 | routes/ 29 | department.router.js 30 | personnel.router.js 31 | ``` -------------------------------------------------------------------------------- /22-PizzaAPI/src/routes/order.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/order: 8 | 9 | const order = require("../controllers/order"); 10 | 11 | // URL: /orders 12 | router.route("/").get(order.list).post(order.create); 13 | 14 | router 15 | .route("/:id") 16 | .get(order.read) 17 | .put(order.update) 18 | .patch(order.update) 19 | .delete(order.delete); 20 | 21 | /* ------------------------------------------------------- */ 22 | module.exports = router; 23 | -------------------------------------------------------------------------------- /22-PizzaAPI/src/routes/user.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/user: 8 | 9 | const user = require("../controllers/user"); 10 | 11 | // URL: /users 12 | 13 | router.route("/").get(user.list).post(user.create); 14 | 15 | router 16 | .route("/:id") 17 | .get(user.read) 18 | .post(user.update) 19 | .patch(user.update) 20 | .delete(user.delete); 21 | 22 | /* ------------------------------------------------------- */ 23 | module.exports = router; 24 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/routes/auth.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/auth: 8 | 9 | const auth = require("../controllers/auth"); 10 | 11 | // URL: /auth 12 | 13 | // Login/logout: 14 | router.post("/login", auth.login); 15 | router.post("/refresh", auth.refresh); 16 | // router.all('/logout', auth.logout) 17 | router.get("/logout", auth.logout); 18 | 19 | /* ------------------------------------------------------- */ 20 | module.exports = router; 21 | -------------------------------------------------------------------------------- /18-BlogAPI_SearchSort/src/routes/user.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG API 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | 7 | const User = require("../controllers/user.controller"); 8 | 9 | // User: 10 | 11 | // Login/Logout: 12 | 13 | router.post("/login", User.login); 14 | router.all("/logout", User.logout); 15 | // router.get('/logout', User.logout) 16 | 17 | router.route("/").get(User.list).post(User.create); 18 | router 19 | .route("/:userId") 20 | .get(User.read) 21 | .put(User.update) // put patch aynı 22 | .patch(User.update) 23 | .delete(User.delete); 24 | 25 | module.exports = router; 26 | -------------------------------------------------------------------------------- /19-PersonnelAPI/_projectStarter/readme.md: -------------------------------------------------------------------------------- 1 | # PERSONNEL API 2 | 3 | ### ERD: 4 | 5 | ![ERD](./erdPersonnelAPI.png) 6 | 7 | ### Folder/File Structure: 8 | 9 | ``` 10 | .env 11 | .gitignore 12 | index.js 13 | readme.md 14 | src/ 15 | configs/ 16 | dbConnection.js 17 | controllers/ 18 | department.controller.js 19 | personnel.controller.js 20 | helpers/ 21 | passwordEncrypt.js 22 | middlewares/ 23 | errorHandler.js 24 | findSearchSortPage.js 25 | models/ 26 | department.model.js 27 | personnel.model.js 28 | routes/ 29 | department.router.js 30 | personnel.router.js 31 | ``` -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/intro.md: -------------------------------------------------------------------------------- 1 | # PERSONNEL API 2 | 3 | ### ERD: 4 | 5 | ![ERD](./erdPersonnelAPI.png) 6 | 7 | ### Folder/File Structure: 8 | 9 | ``` 10 | .env 11 | .gitignore 12 | index.js 13 | readme.md 14 | src/ 15 | configs/ 16 | dbConnection.js 17 | controllers/ 18 | department.controller.js 19 | personnel.controller.js 20 | helpers/ 21 | passwordEncrypt.js 22 | middlewares/ 23 | errorHandler.js 24 | findSearchSortPage.js 25 | models/ 26 | department.model.js 27 | personnel.model.js 28 | routes/ 29 | department.router.js 30 | personnel.router.js 31 | ``` -------------------------------------------------------------------------------- /22-PizzaAPI/src/routes/auth.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/auth: 8 | 9 | const auth = require("../controllers/auth"); 10 | 11 | // URL: /auth 12 | 13 | // Login/logout: 14 | router.post("/login", auth.login); 15 | // router.all('/logout', auth.logout) 16 | router.get("/logout", auth.logout); 17 | //swagger gorsun diye logout router larini get olarak belirtiyoruz. 18 | 19 | /* ------------------------------------------------------- */ 20 | module.exports = router; 21 | -------------------------------------------------------------------------------- /22-PizzaAPI/src/routes/pizza.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | // routes/pizza: 8 | 9 | const pizza = require('../controllers/pizza') 10 | 11 | // URL: /pizzas 12 | 13 | router.route('/') 14 | .get(pizza.list) 15 | .post(pizza.create) 16 | 17 | router.route('/:id') 18 | .get(pizza.read) 19 | .put(pizza.update) 20 | .patch(pizza.update) 21 | .delete(pizza.delete) 22 | 23 | /* ------------------------------------------------------- */ 24 | module.exports = router -------------------------------------------------------------------------------- /22-PizzaAPI/src/routes/token.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | // routes/token: 8 | 9 | const token = require('../controllers/token') 10 | 11 | // URL: /tokens 12 | 13 | router.route('/') 14 | .get(token.list) 15 | .post(token.create) 16 | 17 | router.route('/:id') 18 | .get(token.read) 19 | .put(token.update) 20 | .patch(token.update) 21 | .delete(token.delete) 22 | 23 | /* ------------------------------------------------------- */ 24 | module.exports = router -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/helpers/sync.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // sync(): 6 | 7 | module.exports = async function () { 8 | return null; 9 | 10 | /* CLEAR DATABASE */ 11 | const { mongoose } = require("../configs/dbConnection"); 12 | await mongoose.connection.dropDatabase(); 13 | 14 | const users = []; 15 | users.unshift({ 16 | username: "test", 17 | password: "aA?123456", 18 | email: "suzan123@gmail.com", 19 | isActive: true, 20 | isAdmin: true, 21 | }); 22 | 23 | console.log("- Database and all data DELETED!"); 24 | /* CLEAR DATABASE */ 25 | }; 26 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/helpers/sync.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // sync(): 6 | 7 | module.exports = async function () { 8 | return null; 9 | 10 | /* CLEAR DATABASE */ 11 | const { mongoose } = require("../configs/dbConnection"); 12 | await mongoose.connection.dropDatabase(); 13 | 14 | const users = []; 15 | users.unshift({ 16 | username: "test", 17 | password: "aA?123456", 18 | email: "suzan123@gmail.com", 19 | isActive: true, 20 | isAdmin: true, 21 | }); 22 | 23 | console.log("- Database and all data DELETED!"); 24 | /* CLEAR DATABASE */ 25 | }; 26 | -------------------------------------------------------------------------------- /17-BlogAPI_SessionCookies l/src/routes/user.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG API 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | 7 | const User = require("../controllers/user.controller"); 8 | 9 | // User: 10 | 11 | // Login/Logout: 12 | 13 | router.post("/login", User.login); 14 | router.all("/logout", User.logout); 15 | // router.get('/logout', User.logout) 16 | 17 | router.route("/").get(User.list).post(User.create); 18 | router 19 | .route("/:userId") 20 | .get(User.read) 21 | .put(User.update) // put patch aynı 22 | .patch(User.update) 23 | .delete(User.delete); 24 | 25 | module.exports = router; 26 | -------------------------------------------------------------------------------- /19-PersonnelAPI/src/models/department.model.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require("../configs/dbConnection"); 6 | /* ------------------------------------------------------- */ 7 | 8 | const DepartmentSchema = new mongoose.Schema( 9 | { 10 | name: { 11 | type: String, 12 | trim: true, 13 | required: true, 14 | unique: true, 15 | }, 16 | }, 17 | { 18 | collection: "departments", 19 | timestamps: true, 20 | } 21 | ); 22 | /* ------------------------------------------------------- */ 23 | module.exports = mongoose.model("Department", DepartmentSchema); 24 | -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/_projectStarter/readme.md: -------------------------------------------------------------------------------- 1 | # PERSONNEL API 2 | 3 | ### ERD: 4 | 5 | ![ERD](./erdPersonnelAPI.png) 6 | 7 | ### Folder/File Structure: 8 | 9 | ``` 10 | .env 11 | .gitignore 12 | index.js 13 | readme.md 14 | src/ 15 | configs/ 16 | dbConnection.js 17 | controllers/ 18 | department.controller.js 19 | personnel.controller.js 20 | helpers/ 21 | passwordEncrypt.js 22 | middlewares/ 23 | errorHandler.js 24 | findSearchSortPage.js 25 | models/ 26 | department.model.js 27 | personnel.model.js 28 | routes/ 29 | department.router.js 30 | personnel.router.js 31 | ``` -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/_projectStarter/readme.md: -------------------------------------------------------------------------------- 1 | # PERSONNEL API 2 | 3 | ### ERD: 4 | 5 | ![ERD](./erdPersonnelAPI.png) 6 | 7 | ### Folder/File Structure: 8 | 9 | ``` 10 | .env 11 | .gitignore 12 | index.js 13 | readme.md 14 | src/ 15 | configs/ 16 | dbConnection.js 17 | controllers/ 18 | department.controller.js 19 | personnel.controller.js 20 | helpers/ 21 | passwordEncrypt.js 22 | middlewares/ 23 | errorHandler.js 24 | findSearchSortPage.js 25 | models/ 26 | department.model.js 27 | personnel.model.js 28 | routes/ 29 | department.router.js 30 | personnel.router.js 31 | ``` -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/src/routes/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | 8 | // /auth: 9 | router.use("/auth", require("./auth.router")); 10 | // /token: 11 | router.use("/tokens", require("./token.router")); 12 | // /personnel: 13 | router.use("/personnels", require("./personnel.router")); 14 | // /department: 15 | router.use("/departments", require("./department.router")); 16 | 17 | module.exports = router; 18 | //ayri bir dosyaya tasinirsa muhakkak router kullaniriz. 19 | //router export edecegiz. 20 | -------------------------------------------------------------------------------- /22-PizzaAPI/src/routes/topping.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/topping: 8 | 9 | const topping = require("../controllers/topping"); 10 | 11 | // URL: /toppings 12 | 13 | router.route("/").get(topping.list).post(topping.create); 14 | 15 | router 16 | .route("/:id") 17 | .get(topping.read) 18 | .put(topping.update) 19 | .patch(topping.update) 20 | .delete(topping.delete); 21 | 22 | /* ------------------------------------------------------- */ 23 | module.exports = router; 24 | -------------------------------------------------------------------------------- /33-Template_BlogApp/src/routes/api/userRoute.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG Project with Mongoose 4 | ------------------------------------------------------- */ 5 | 6 | const router = require("express").Router(); 7 | 8 | const { User } = require("../../controllers/api/userController"); 9 | 10 | // ------------------------------------------ 11 | // User 12 | // ------------------------------------------ 13 | 14 | // Login/logout: 15 | router.post("/login", User.login); 16 | router.all("/logout", User.logout); 17 | 18 | router.route("/").get(User.list).post(User.create); 19 | 20 | router.route("/:userId").get(User.read).put(User.update).delete(User.delete); 21 | 22 | module.exports = router; 23 | -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/src/routes/auth.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- * 7 | { 8 | "username": "testF0", 9 | "password": "1234" 10 | } 11 | /* ------------------------------------------------------- */ 12 | 13 | const auth = require("../controllers/auth.controller"); 14 | 15 | // URL: /auth 16 | 17 | // Login/logout: 18 | router.post("/login", auth.login); 19 | router.all("/logout", auth.logout); 20 | 21 | /* ------------------------------------------------------- */ 22 | module.exports = router; 23 | -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/src/models/department.model.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require("../configs/dbConnection"); 6 | /* ------------------------------------------------------- */ 7 | 8 | const DepartmentSchema = new mongoose.Schema( 9 | { 10 | name: { 11 | type: String, 12 | trim: true, 13 | required: true, 14 | unique: true, 15 | }, 16 | }, 17 | { 18 | collection: "departments", 19 | timestamps: true, 20 | } 21 | ); 22 | /* ------------------------------------------------------- */ 23 | module.exports = mongoose.model("Department", DepartmentSchema); 24 | -------------------------------------------------------------------------------- /22-PizzaAPI/src/middlewares/authentication.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | 6 | const Token = require("../models/token"); 7 | 8 | module.exports = async (req, res, next) => { 9 | const auth = req.headers?.authorization; // Token ...tokenKey... 10 | const tokenKey = auth ? auth.split(" ") : null; // ['Token', '...tokenKey...'] 11 | 12 | if (tokenKey) { 13 | if (tokenKey[0] == "Token") { 14 | const tokenData = await Token.findOne({ token: tokenKey[1] }).populate( 15 | "userId" 16 | ); 17 | req.user = tokenData ? tokenData.userId : false; 18 | } 19 | } 20 | next(); 21 | }; 22 | -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/src/models/department.model.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require("../configs/dbConnection"); 6 | /* ------------------------------------------------------- */ 7 | 8 | const DepartmentSchema = new mongoose.Schema( 9 | { 10 | name: { 11 | type: String, 12 | trim: true, 13 | required: true, 14 | unique: true, 15 | }, 16 | }, 17 | { 18 | collection: "departments", 19 | timestamps: true, 20 | } 21 | ); 22 | /* ------------------------------------------------------- */ 23 | module.exports = mongoose.model("Department", DepartmentSchema); 24 | -------------------------------------------------------------------------------- /25-RentACar/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Rent A Car API", 3 | "name": "renacarapi", 4 | "version": "1.0.0", 5 | "description": "Rent A Car Management System", 6 | "main": "index.js", 7 | "scripts": { 8 | "start": "nodemon", 9 | "debug": "DEBUG=* nodemon" 10 | }, 11 | "keywords": [], 12 | "author": "Clarusway", 13 | "license": "ISC Licence", 14 | "dependencies": { 15 | "dotenv": "^16.3.1", 16 | "express": "^4.18.2", 17 | "express-async-errors": "^3.1.1", 18 | "jsonwebtoken": "^9.0.2", 19 | "mongoose": "^7.6.2", 20 | "morgan": "^1.10.0", 21 | "multer": "^1.4.5-lts.1", 22 | "nodemailer": "^6.9.7", 23 | "redoc-express": "^2.1.0", 24 | "swagger-autogen": "^2.23.6", 25 | "swagger-ui-express": "^5.0.0" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /16-BlogAPI_Mongoose copy/src/sync.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | const { BlogCategory, BlogPost } = require("./models/blog.model"); 4 | 5 | module.exports = async () => { 6 | /* BlogCategory */ 7 | 8 | // Get first blogCategory: 9 | const blogCategory = await BlogCategory.findOne(); 10 | // console.log(blogCategory._id) 11 | 12 | if (blogCategory) { 13 | BlogPost.updateMany( 14 | { 15 | //? Filter: BlogCat. olmayanlara 16 | blogCategoryId: { $exists: false }, // field yok ise 17 | }, 18 | { 19 | //? Update: BlogCat. ekle 20 | blogCategoryId: blogCategory._id, // kaydı ata 21 | } 22 | ).catch((err) => console.log(err)); 23 | } 24 | 25 | // End: 26 | console.log("* Synchronized *"); 27 | /* Finished */ 28 | }; 29 | -------------------------------------------------------------------------------- /19-PersonnelAPI/src/configs/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // MongoDB Connection: 6 | 7 | const mongoose = require("mongoose"); 8 | 9 | const dbConnection = function () { 10 | // Connect: 11 | mongoose 12 | .connect(process.env.MONGODB) 13 | .then(() => console.log("* DB Connected * ")) 14 | .catch((err) => console.log("* DB Not Connected * ", err)); 15 | }; 16 | 17 | /* ------------------------------------------------------- */ 18 | module.exports = { 19 | mongoose, 20 | dbConnection, 21 | //proje de dbConnection sadece bir kez cagirmak icin burada 22 | // cagirip daha sonra export ediyoruz. 23 | }; 24 | -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/middlewares/permissions.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | 6 | module.exports = { 7 | isLogin: (req, res, next) => { 8 | if (req.user && req.user.isActive) { 9 | next(); 10 | } else { 11 | res.errorStatusCode = 403; 12 | throw new Error("NoPermission: You must login."); 13 | } 14 | }, 15 | 16 | isAdmin: (req, res, next) => { 17 | if (req.user && req.user.isActive && req.user.isAdmin) { 18 | next(); 19 | } else { 20 | res.errorStatusCode = 403; 21 | throw new Error("NoPermission: You must login and must be admin."); 22 | } 23 | }, 24 | }; 25 | -------------------------------------------------------------------------------- /26-RentACar_2/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Rent A Car API", 3 | "name": "renacarapi", 4 | "version": "1.0.0", 5 | "description": "Rent A Car Management System", 6 | "main": "index.js", 7 | "scripts": { 8 | "start": "nodemon", 9 | "debug": "DEBUG=* nodemon" 10 | }, 11 | "keywords": [], 12 | "author": "Clarusway", 13 | "license": "ISC Licence", 14 | "dependencies": { 15 | "dotenv": "^16.3.1", 16 | "express": "^4.18.2", 17 | "express-async-errors": "^3.1.1", 18 | "jsonwebtoken": "^9.0.2", 19 | "mongoose": "^7.6.2", 20 | "morgan": "^1.10.0", 21 | "multer": "^1.4.5-lts.1", 22 | "nodemailer": "^6.9.7", 23 | "redoc-express": "^2.1.0", 24 | "swagger-autogen": "^2.23.6", 25 | "swagger-ui-express": "^5.0.0" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /33-Template_BlogApp/src/helpers/passwordEncrypt.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG Project with Mongoose 4 | ------------------------------------------------------- */ 5 | // Password Encrypt: 6 | // https://nodejs.org/api/crypto.html#cryptopbkdf2syncpassword-salt-iterations-keylen-digest 7 | const crypto = require('node:crypto') 8 | 9 | const keyCode = process.env.SECRET_KEY || 'write_random_chars_to_here' 10 | const loopCount = 10_000 11 | const charsCount = 32 // write 32 for 64 12 | const encType = 'sha512' 13 | 14 | module.exports = function (password) { 15 | 16 | const encode = crypto.pbkdf2Sync(password, keyCode, loopCount, charsCount, encType) // return BufferType 17 | return encode.toString('hex') 18 | } -------------------------------------------------------------------------------- /17-BlogAPI_SessionCookies l/src/sync.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | const { BlogCategory, BlogPost } = require("./models/blog.model"); 4 | 5 | module.exports = async () => { 6 | /* BlogCategory */ 7 | 8 | // Get first blogCategory: 9 | const blogCategory = await BlogCategory.findOne(); 10 | // console.log(blogCategory._id) 11 | 12 | if (blogCategory) { 13 | BlogPost.updateMany( 14 | { 15 | //? Filter: BlogCat. olmayanlara 16 | blogCategoryId: { $exists: false }, // field yok ise 17 | }, 18 | { 19 | //? Update: BlogCat. ekle 20 | blogCategoryId: blogCategory._id, // kaydı ata 21 | } 22 | ).catch((err) => console.log(err)); 23 | } 24 | 25 | // End: 26 | console.log("* Synchronized *"); 27 | /* Finished */ 28 | }; 29 | -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/src/configs/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // MongoDB Connection: 6 | 7 | const mongoose = require("mongoose"); 8 | 9 | const dbConnection = function () { 10 | // Connect: 11 | mongoose 12 | .connect(process.env.MONGODB) 13 | .then(() => console.log("* DB Connected * ")) 14 | .catch((err) => console.log("* DB Not Connected * ", err)); 15 | }; 16 | 17 | /* ------------------------------------------------------- */ 18 | module.exports = { 19 | mongoose, 20 | dbConnection, 21 | //proje de dbConnection sadece bir kez cagirmak icin burada 22 | // cagirip daha sonra export ediyoruz. 23 | }; 24 | -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/src/configs/dbConnection.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // MongoDB Connection: 6 | 7 | const mongoose = require("mongoose"); 8 | 9 | const dbConnection = function () { 10 | // Connect: 11 | mongoose 12 | .connect(process.env.MONGODB) 13 | .then(() => console.log("* DB Connected * ")) 14 | .catch((err) => console.log("* DB Not Connected * ", err)); 15 | }; 16 | 17 | /* ------------------------------------------------------- */ 18 | module.exports = { 19 | mongoose, 20 | dbConnection, 21 | //proje de dbConnection sadece bir kez cagirmak icin burada 22 | // cagirip daha sonra export ediyoruz. 23 | }; 24 | -------------------------------------------------------------------------------- /33-Template_BlogApp/src/routes/views/userRoute.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG Project with Mongoose 4 | ------------------------------------------------------- */ 5 | 6 | const router = require("express").Router(); 7 | 8 | const { User } = require("../../controllers/views/userController"); 9 | 10 | // ------------------------------------------ 11 | // User 12 | // ------------------------------------------ 13 | 14 | // Login/logout: 15 | router.all("/login", User.login); 16 | router.all("/logout", User.logout); 17 | 18 | router.all("/", User.list); 19 | router.all("/create", User.create); 20 | router.all("/:id", User.read); 21 | router.all("/:id/update", User.update); 22 | router.all("/:id/delete", User.delete); 23 | 24 | module.exports = router; 25 | -------------------------------------------------------------------------------- /32-template-todo2 /app/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - TODO Project with Sequelize 4 | ------------------------------------------------------- */ 5 | 6 | module.exports = (err, req, res, next) => { 7 | const errorStatusCode = res.errorStatusCode ?? 500; 8 | console.log("errorHandler worked."); 9 | // console.log(req.originalUrl); 10 | 11 | const data = { 12 | error: true, // special data 13 | message: err.message, // error string message 14 | cause: err.cause, // error option cause 15 | // stack: err.stack, // error details 16 | }; 17 | if (req.originalUrl.startsWith("/api")) { 18 | res.status(errorStatusCode).send(data); 19 | } else { 20 | // VIEW -> HTML 21 | res.render("errors", { data }); 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/middlewares/permissions.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | 6 | module.exports = { 7 | isLogin: (req, res, next) => { 8 | return next(); 9 | if (req.user && req.user.isActive) { 10 | next(); 11 | } else { 12 | res.errorStatusCode = 403; 13 | throw new Error("NoPermission: You must login."); 14 | } 15 | }, 16 | 17 | isAdmin: (req, res, next) => { 18 | return next(); 19 | if (req.user && req.user.isActive && req.user.isAdmin) { 20 | next(); 21 | } else { 22 | res.errorStatusCode = 403; 23 | throw new Error("NoPermission: You must login and must be admin."); 24 | } 25 | }, 26 | }; 27 | -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/routes/pizza.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/pizza: 8 | 9 | const pizza = require("../controllers/pizza"); 10 | const { isAdmin } = require("../middlewares/permissions"); 11 | 12 | // URL: /pizzas 13 | 14 | router.route("/").get(pizza.list).post(isAdmin, pizza.create); 15 | 16 | router 17 | .route("/:id") 18 | .get(pizza.read) 19 | .put(isAdmin, pizza.update) 20 | .patch(isAdmin, pizza.update) 21 | .delete(isAdmin, pizza.delete); 22 | 23 | /* ------------------------------------------------------- */ 24 | module.exports = router; 25 | -------------------------------------------------------------------------------- /25-RentACar/src/routes/reservation.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/reservation: 8 | 9 | const reservation = require("../controllers/reservation"); 10 | 11 | const permissions = require("../middlewares/permissions"); 12 | 13 | // URL: /reservations 14 | 15 | router.route("/").get(reservation.list).post(reservation.create); 16 | 17 | router 18 | .route("/:id") 19 | .get(reservation.read) 20 | .put(reservation.update) 21 | .patch(reservation.delete); 22 | 23 | /* ------------------------------------------------------- */ 24 | module.exports = router; 25 | -------------------------------------------------------------------------------- /26-RentACar_2/src/routes/reservation.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/reservation: 8 | 9 | const reservation = require("../controllers/reservation"); 10 | 11 | const permissions = require("../middlewares/permissions"); 12 | 13 | // URL: /reservations 14 | 15 | router.route("/").get(reservation.list).post(reservation.create); 16 | 17 | router 18 | .route("/:id") 19 | .get(reservation.read) 20 | .put(reservation.update) 21 | .patch(reservation.delete); 22 | 23 | /* ------------------------------------------------------- */ 24 | module.exports = router; 25 | -------------------------------------------------------------------------------- /33-Template_BlogApp/src/errorHandler.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - TODO Project with Sequelize 4 | ------------------------------------------------------- */ 5 | 6 | module.exports = (err, req, res, next) => { 7 | 8 | const errorStatusCode = res.errorStatusCode ?? 500 9 | 10 | const data = { 11 | error: true, // special data 12 | message: err.message, // error string message 13 | cause: err.cause, // error option cause 14 | // stack: err.stack, // error details 15 | body: req.body, 16 | } 17 | 18 | // console.log(req.url) 19 | 20 | if (req.url.startsWith('/api')) { 21 | 22 | res.status(errorStatusCode).send(data) 23 | 24 | } else { 25 | 26 | res.render('error', { data }) 27 | } 28 | } -------------------------------------------------------------------------------- /25-RentACar/src/routes/token.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | // routes/token: 8 | 9 | const token = require('../controllers/token') 10 | 11 | // URL: /tokens 12 | 13 | const { isAdmin } = require('../middlewares/permissions') 14 | 15 | router.use(isAdmin) 16 | 17 | router.route('/') 18 | .get(token.list) 19 | .post(token.create) 20 | 21 | router.route('/:id') 22 | .get(token.read) 23 | .put(token.update) 24 | .patch(token.update) 25 | .delete(token.delete) 26 | 27 | /* ------------------------------------------------------- */ 28 | module.exports = router -------------------------------------------------------------------------------- /26-RentACar_2/src/routes/token.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | // routes/token: 8 | 9 | const token = require('../controllers/token') 10 | 11 | // URL: /tokens 12 | 13 | const { isAdmin } = require('../middlewares/permissions') 14 | 15 | router.use(isAdmin) 16 | 17 | router.route('/') 18 | .get(token.list) 19 | .post(token.create) 20 | 21 | router.route('/:id') 22 | .get(token.read) 23 | .put(token.update) 24 | .patch(token.update) 25 | .delete(token.delete) 26 | 27 | /* ------------------------------------------------------- */ 28 | module.exports = router -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/routes/token.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/token: 8 | 9 | const token = require("../controllers/token"); 10 | const { isAdmin } = require("../middlewares/permissions"); 11 | 12 | // URL: /tokens -s adece admin 13 | 14 | router.use(isAdmin); 15 | 16 | router.route("/").get(token.list).post(token.create); 17 | 18 | router 19 | .route("/:id") 20 | .get(token.read) 21 | .put(token.update) 22 | .patch(token.update) 23 | .delete(token.delete); 24 | 25 | /* ------------------------------------------------------- */ 26 | module.exports = router; 27 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/routes/token.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/token: 8 | 9 | const token = require("../controllers/token"); 10 | const { isAdmin } = require("../middlewares/permissions"); 11 | 12 | // URL: /tokens -s adece admin 13 | 14 | router.use(isAdmin); 15 | 16 | router.route("/").get(token.list).post(token.create); 17 | 18 | router 19 | .route("/:id") 20 | .get(token.read) 21 | .put(token.update) 22 | .patch(token.update) 23 | .delete(token.delete); 24 | 25 | /* ------------------------------------------------------- */ 26 | module.exports = router; 27 | -------------------------------------------------------------------------------- /25-RentACar/src/routes/car.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/car: 8 | 9 | const car = require("../controllers/car"); 10 | 11 | const permissions = require("../middlewares/permissions"); 12 | 13 | // URL: /cars 14 | router.route("/").get(car.list).post(permissions.isStaff, car.create); 15 | 16 | router 17 | .route("/:id") 18 | .get(car.read) 19 | .put(permissions.isStaff, car.update) 20 | .patch(permissions.isStaff, car.update) 21 | .delete(permissions.isAdmin, car.delete); 22 | 23 | /* ------------------------------------------------------- */ 24 | module.exports = router; 25 | -------------------------------------------------------------------------------- /26-RentACar_2/src/routes/car.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/car: 8 | 9 | const car = require("../controllers/car"); 10 | 11 | const permissions = require("../middlewares/permissions"); 12 | 13 | // URL: /cars 14 | router.route("/").get(car.list).post(permissions.isStaff, car.create); 15 | 16 | router 17 | .route("/:id") 18 | .get(car.read) 19 | .put(permissions.isStaff, car.update) 20 | .patch(permissions.isStaff, car.update) 21 | .delete(permissions.isAdmin, car.delete); 22 | 23 | /* ------------------------------------------------------- */ 24 | module.exports = router; 25 | -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/src/routes/auth.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- * 7 | { 8 | "username": "testF0", 9 | "password": "1234" 10 | } 11 | /* ------------------------------------------------------- */ 12 | 13 | const auth = require("../controllers/auth.controller"); 14 | 15 | // URL: /auth 16 | 17 | // Login/logout: 18 | router.post("/login", auth.login); 19 | // router.all("/logout", auth.logout);// swagger all methodunu gormez. 20 | router.get("/logout", auth.logout); // swagger all methodunu gormez. 21 | 22 | /* ------------------------------------------------------- */ 23 | module.exports = router; 24 | -------------------------------------------------------------------------------- /25-RentACar/src/routes/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // ROUTER INDEX: 8 | 9 | // URL: / 10 | 11 | // auth: 12 | router.use("/auth", require("./auth")); 13 | // user: 14 | router.use("/users", require("./user")); 15 | // token: 16 | router.use("/tokens", require("./token")); 17 | 18 | // car: 19 | router.use("/cars", require("./car")); 20 | // reservation: 21 | router.use("/reservations", require("./reservation")); 22 | 23 | // document: 24 | router.use("/documents", require("./document")); 25 | 26 | /* ------------------------------------------------------- */ 27 | module.exports = router; 28 | -------------------------------------------------------------------------------- /19-PersonnelAPI/src/routes/personnel.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | 8 | const personnel = require("../controllers/personnel.controller"); 9 | // URL: /personnels 10 | 11 | // Login/logout: 12 | router.post("/login", personnel.login); 13 | router.all("/logout", personnel.logout); 14 | 15 | router.route("/").get(personnel.list).post(personnel.create); 16 | 17 | router 18 | .route("/:id") 19 | .get(personnel.read) 20 | .put(personnel.update) 21 | .patch(personnel.update) 22 | .delete(personnel.delete); 23 | 24 | /* ------------------------------------------------------- */ 25 | module.exports = router; 26 | -------------------------------------------------------------------------------- /26-RentACar_2/src/routes/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // ROUTER INDEX: 8 | 9 | // URL: / 10 | 11 | // auth: 12 | router.use("/auth", require("./auth")); 13 | // user: 14 | router.use("/users", require("./user")); 15 | // token: 16 | router.use("/tokens", require("./token")); 17 | 18 | // car: 19 | router.use("/cars", require("./car")); 20 | // reservation: 21 | router.use("/reservations", require("./reservation")); 22 | 23 | // document: 24 | router.use("/documents", require("./document")); 25 | 26 | /* ------------------------------------------------------- */ 27 | module.exports = router; 28 | -------------------------------------------------------------------------------- /31-template-toDo/app/routes/todo.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - TODO Project with Sequelize 4 | ------------------------------------------------------- */ 5 | // ROUTERS: 6 | 7 | const todo = require('../controllers/todo.controller') 8 | 9 | const router = require('express').Router() 10 | 11 | // // List: 12 | // router.get('/', todo.list) 13 | // // Create: 14 | // router.post('/', todo.create) 15 | // // Read: 16 | // router.get('/:id', todo.read) 17 | // // Update: 18 | // router.put('/:id', todo.update) 19 | // // Delete: 20 | // router.delete('/:id', todo.delete) 21 | 22 | router.route('/') 23 | .get(todo.list) 24 | .post(todo.create) 25 | 26 | router.route('/:id') 27 | .get(todo.read) 28 | .put(todo.update) 29 | .patch(todo.update) 30 | .delete(todo.delete) 31 | 32 | module.exports = router -------------------------------------------------------------------------------- /32-template-todo2 /app/routes/todo.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - TODO Project with Sequelize 4 | ------------------------------------------------------- */ 5 | // ROUTERS: 6 | 7 | const todo = require('../controllers/todo.controller') 8 | 9 | const router = require('express').Router() 10 | 11 | // // List: 12 | // router.get('/', todo.list) 13 | // // Create: 14 | // router.post('/', todo.create) 15 | // // Read: 16 | // router.get('/:id', todo.read) 17 | // // Update: 18 | // router.put('/:id', todo.update) 19 | // // Delete: 20 | // router.delete('/:id', todo.delete) 21 | 22 | router.route('/') 23 | .get(todo.list) 24 | .post(todo.create) 25 | 26 | router.route('/:id') 27 | .get(todo.read) 28 | .put(todo.update) 29 | .patch(todo.update) 30 | .delete(todo.delete) 31 | 32 | module.exports = router -------------------------------------------------------------------------------- /25-RentACar/src/routes/user.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/user: 8 | 9 | const permissions = require("../middlewares/permissions"); 10 | const user = require("../controllers/user"); 11 | 12 | // URL: /users 13 | 14 | router.route("/").get(permissions.isStaff, user.list).post(user.create); 15 | 16 | router 17 | .route("/:id") 18 | .get(permissions.isLogin, user.read) 19 | .put(permissions.isLogin, user.update) 20 | .patch(permissions.isLogin, user.update) 21 | .delete(permissions.isAdmin, user.delete); 22 | 23 | /* ------------------------------------------------------- */ 24 | module.exports = router; 25 | -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/routes/topping.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/topping: 8 | 9 | const topping = require("../controllers/topping"); 10 | const { isAdmin } = require("../middlewares/permissions"); 11 | 12 | // URL: /toppings - sadece admin islem yapar bu route ta. 13 | 14 | router.use(isAdmin); 15 | 16 | router.route("/").get(topping.list).post(topping.create); 17 | 18 | router 19 | .route("/:id") 20 | .get(topping.read) 21 | .put(topping.update) 22 | .patch(topping.update) 23 | .delete(topping.delete); 24 | 25 | /* ------------------------------------------------------- */ 26 | module.exports = router; 27 | -------------------------------------------------------------------------------- /26-RentACar_2/src/routes/user.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/user: 8 | 9 | const permissions = require("../middlewares/permissions"); 10 | const user = require("../controllers/user"); 11 | 12 | // URL: /users 13 | 14 | router.route("/").get(permissions.isStaff, user.list).post(user.create); 15 | 16 | router 17 | .route("/:id") 18 | .get(permissions.isLogin, user.read) 19 | .put(permissions.isLogin, user.update) 20 | .patch(permissions.isLogin, user.update) 21 | .delete(permissions.isAdmin, user.delete); 22 | 23 | /* ------------------------------------------------------- */ 24 | module.exports = router; 25 | -------------------------------------------------------------------------------- /19-PersonnelAPI/src/routes/department.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | const department = require("../controllers/department.controller"); 8 | 9 | // URL: /departments 10 | router.route("/").get(department.list).post(department.create); 11 | 12 | router 13 | .route("/:id") 14 | .get(department.read) 15 | .put(department.update) 16 | .patch(department.update) 17 | .delete(department.delete); 18 | 19 | //her department'in personellerini getirmek icin 20 | // /departmentId/personnels 21 | router.get("/:id/personnels", department.personnels); 22 | /* ------------------------------------------------------- */ 23 | module.exports = router; 24 | -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/src/middlewares/logging.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // app.use(logging): 6 | 7 | //* MORGAN LOGGING 8 | // https://expressjs.com/en/resources/middleware/morgan.html 9 | // https://github.com/expressjs/morgan 10 | //? $ npm i morgan 11 | 12 | const morgan = require("morgan"); 13 | const fs = require("node:fs"); 14 | 15 | const now = new Date(); 16 | // console.log(typeof now, now) 17 | const today = now.toISOString().split("T")[0]; 18 | // console.log(typeof today, today) 19 | // app.use(morgan('combined', { 20 | // stream: fs.createWriteStream(`./logs/${today}.log`, { flags: 'a+' }) 21 | // })) 22 | 23 | module.exports = morgan("combined", { 24 | stream: fs.createWriteStream(`./logs/${today}.log`, { flags: "a+" }), 25 | }); 26 | -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/routes/user.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/user: 8 | 9 | const user = require("../controllers/user"); 10 | const permissions = require("../middlewares/permissions"); 11 | 12 | // URL: /users 13 | 14 | router.route("/").get(permissions.isAdmin, user.list).post(user.create); // AllowAny 15 | 16 | router 17 | .route("/:id") 18 | .get(permissions.isLogin, user.read) 19 | .put(permissions.isLogin, user.update) 20 | .patch(permissions.isLogin, user.update) 21 | .delete(permissions.isAdmin, user.delete); 22 | 23 | /* ------------------------------------------------------- */ 24 | module.exports = router; 25 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/routes/topping.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/topping: 8 | 9 | const topping = require("../controllers/topping"); 10 | const { isAdmin } = require("../middlewares/permissions"); 11 | 12 | // URL: /toppings - sadece admin islem yapar bu route ta. 13 | 14 | router.use(isAdmin); 15 | 16 | router.route("/").get(topping.list).post(topping.create); 17 | 18 | router 19 | .route("/:id") 20 | .get(topping.read) 21 | .put(topping.update) 22 | .patch(topping.update) 23 | .delete(topping.delete); 24 | 25 | /* ------------------------------------------------------- */ 26 | module.exports = router; 27 | -------------------------------------------------------------------------------- /22-PizzaAPI/src/models/token.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require('../configs/dbConnection') 6 | /* ------------------------------------------------------- */ 7 | // Token Model: 8 | 9 | const TokenSchema = new mongoose.Schema({ 10 | 11 | userId: { 12 | type: mongoose.Schema.Types.ObjectId, 13 | ref: 'User', 14 | required: true, 15 | unique: true, 16 | index: true, 17 | }, 18 | 19 | token: { 20 | type: String, 21 | trim: true, 22 | required: true, 23 | unique: true, 24 | index: true 25 | } 26 | 27 | }, { 28 | collection: 'tokens', 29 | timestamps: true 30 | }) 31 | 32 | // Model: 33 | module.exports = mongoose.model('Token', TokenSchema) -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/routes/user.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/user: 8 | 9 | const user = require("../controllers/user"); 10 | const permissions = require("../middlewares/permissions"); 11 | 12 | // URL: /users 13 | 14 | router.route("/").get(permissions.isAdmin, user.list).post(user.create); // AllowAny 15 | 16 | router 17 | .route("/:id") 18 | .get(permissions.isLogin, user.read) 19 | .put(permissions.isLogin, user.update) 20 | .patch(permissions.isLogin, user.update) 21 | .delete(permissions.isAdmin, user.delete); 22 | 23 | /* ------------------------------------------------------- */ 24 | module.exports = router; 25 | -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/models/token.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require('../configs/dbConnection') 6 | /* ------------------------------------------------------- */ 7 | // Token Model: 8 | 9 | const TokenSchema = new mongoose.Schema({ 10 | 11 | userId: { 12 | type: mongoose.Schema.Types.ObjectId, 13 | ref: 'User', 14 | required: true, 15 | unique: true, 16 | index: true, 17 | }, 18 | 19 | token: { 20 | type: String, 21 | trim: true, 22 | required: true, 23 | unique: true, 24 | index: true 25 | } 26 | 27 | }, { 28 | collection: 'tokens', 29 | timestamps: true 30 | }) 31 | 32 | // Model: 33 | module.exports = mongoose.model('Token', TokenSchema) -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "workbench.colorCustomizations": { 3 | "activityBar.activeBackground": "#2f7c47", 4 | "activityBar.background": "#2f7c47", 5 | "activityBar.foreground": "#e7e7e7", 6 | "activityBar.inactiveForeground": "#e7e7e799", 7 | "activityBarBadge.background": "#422c74", 8 | "activityBarBadge.foreground": "#e7e7e7", 9 | "commandCenter.border": "#e7e7e799", 10 | "sash.hoverBorder": "#2f7c47", 11 | "statusBar.background": "#215732", 12 | "statusBar.foreground": "#e7e7e7", 13 | "statusBarItem.hoverBackground": "#2f7c47", 14 | "statusBarItem.remoteBackground": "#215732", 15 | "statusBarItem.remoteForeground": "#e7e7e7", 16 | "titleBar.activeBackground": "#215732", 17 | "titleBar.activeForeground": "#e7e7e7", 18 | "titleBar.inactiveBackground": "#21573299", 19 | "titleBar.inactiveForeground": "#e7e7e799" 20 | }, 21 | "peacock.color": "#215732" 22 | } 23 | -------------------------------------------------------------------------------- /22-PizzaAPI/src/routes/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // ROUTER INDEX: 8 | 9 | // URL: / 10 | 11 | // auth: 12 | router.use("/auth", require("./auth")); 13 | // user: 14 | router.use("/users", require("./user")); 15 | // token: 16 | router.use("/tokens", require("./token")); 17 | 18 | // order: 19 | router.use("/orders", require("./order")); 20 | // pizza: 21 | router.use("/pizzas", require("./pizza")); 22 | // topping: 23 | router.use("/toppings", require("./topping")); 24 | 25 | // document: 26 | router.use("/documents", require("./document")); 27 | 28 | /* ------------------------------------------------------- */ 29 | module.exports = router; 30 | -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/routes/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // ROUTER INDEX: 8 | 9 | // URL: / 10 | 11 | // auth: 12 | router.use("/auth", require("./auth")); 13 | // user: 14 | router.use("/users", require("./user")); 15 | // token: 16 | router.use("/tokens", require("./token")); 17 | 18 | // order: 19 | router.use("/orders", require("./order")); 20 | // pizza: 21 | router.use("/pizzas", require("./pizza")); 22 | // topping: 23 | router.use("/toppings", require("./topping")); 24 | 25 | // document: 26 | router.use("/documents", require("./document")); 27 | 28 | /* ------------------------------------------------------- */ 29 | module.exports = router; 30 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/models/token.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require('../configs/dbConnection') 6 | /* ------------------------------------------------------- */ 7 | // Token Model: 8 | 9 | const TokenSchema = new mongoose.Schema({ 10 | 11 | userId: { 12 | type: mongoose.Schema.Types.ObjectId, 13 | ref: 'User', 14 | required: true, 15 | unique: true, 16 | index: true, 17 | }, 18 | 19 | token: { 20 | type: String, 21 | trim: true, 22 | required: true, 23 | unique: true, 24 | index: true 25 | } 26 | 27 | }, { 28 | collection: 'tokens', 29 | timestamps: true 30 | }) 31 | 32 | // Model: 33 | module.exports = mongoose.model('Token', TokenSchema) -------------------------------------------------------------------------------- /18-BlogAPI_SearchSort/src/middlewares/userControl.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG API 4 | ------------------------------------------------------- */ 5 | // Burada session daki verilerin dogrularini kontrol eden bir middleware yazdik. 6 | // Session da kullanici versi var mi? 7 | //Eger sifremi silersem yada degistirirsem session'i siler. 8 | 9 | const User = require("../models/user.model"); 10 | 11 | module.exports = async (req, res, next) => { 12 | if (req?.session?.id) { 13 | const { id, password } = req.session; 14 | 15 | const user = await User.findOne({ _id: id }); 16 | //db de ki id ile girilen id 'yi kontrol eder 17 | if (user && user.password == password) { 18 | req.user = user; 19 | req.isLogin = true; 20 | } else { 21 | req.session = null; 22 | req.isLogin = false; 23 | } 24 | } 25 | next(); 26 | }; 27 | -------------------------------------------------------------------------------- /17-BlogAPI_SessionCookies l/src/middlewares/userControl.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG API 4 | ------------------------------------------------------- */ 5 | // Burada session daki verilerin dogrularini kontrol eden bir middleware yazdik. 6 | // Session da kullanici versi var mi? 7 | //Eger sifremi silersem yada degistirirsem session'i siler. 8 | 9 | const User = require("../models/user.model"); 10 | 11 | module.exports = async (req, res, next) => { 12 | if (req?.session?.id) { 13 | const { id, password } = req.session; 14 | 15 | const user = await User.findOne({ _id: id }); 16 | //db de ki id ile girilen id 'yi kontrol eder 17 | if (user && user.password == password) { 18 | req.user = user; 19 | req.isLogin = true; 20 | } else { 21 | req.session = null; 22 | req.isLogin = false; 23 | } 24 | } 25 | next(); 26 | }; 27 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/routes/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // ROUTER INDEX: 8 | 9 | // URL: / 10 | 11 | // auth: 12 | router.use("/auth", require("./auth")); 13 | // user: 14 | router.use("/users", require("./user")); 15 | // token: 16 | router.use("/tokens", require("./token")); 17 | 18 | // order: 19 | router.use("/orders", require("./order")); 20 | // pizza: 21 | router.use("/pizzas", require("./pizza")); 22 | // topping: 23 | router.use("/toppings", require("./topping")); 24 | 25 | // document: 26 | router.use("/documents", require("./document")); 27 | 28 | /* ------------------------------------------------------- */ 29 | module.exports = router; 30 | -------------------------------------------------------------------------------- /13-Models-Todo2/app/routes/todo.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - TODO Project with Sequelize 4 | ------------------------------------------------------- */ 5 | // ROUTERS: 6 | 7 | const todo = require("../controllers/todo.controller"); 8 | //controllers buraya import ediyorum. 9 | 10 | const router = require("express").Router(); 11 | 12 | // // List: 13 | // router.get('/', todo.list) 14 | // // Create: 15 | // router.post('/', todo.create) 16 | // // Read: 17 | // router.get('/:id', todo.read) 18 | // // Update: 19 | // router.put('/:id', todo.update) 20 | // // Delete: 21 | // router.delete('/:id', todo.delete) 22 | 23 | router.route("/").get(todo.list).post(todo.create); 24 | 25 | router 26 | .route("/:id") 27 | .get(todo.read) 28 | .put(todo.update) 29 | .patch(todo.update) 30 | .delete(todo.delete); 31 | 32 | module.exports = router; 33 | //export ediyorum. 34 | -------------------------------------------------------------------------------- /19-PersonnelAPI/_projectStarter/index.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | /* 6 | $ npm i express dotenv mongoose express-async-errors 7 | $ npm i cookie-session 8 | $ npm i jsonwebtoken 9 | */ 10 | 11 | const express = require('express') 12 | const app = express() 13 | 14 | /* ------------------------------------------------------- */ 15 | 16 | 17 | 18 | // continue from here... 19 | 20 | 21 | 22 | /* ------------------------------------------------------- */ 23 | 24 | // errorHandler: 25 | app.use(require('./src/middlewares/errorHandler')) 26 | 27 | // RUN SERVER: 28 | app.listen(PORT, () => console.log('http://127.0.0.1:' + PORT)) 29 | 30 | /* ------------------------------------------------------- */ 31 | // Syncronization (must be in commentLine): 32 | // require('./src/helpers/sync')() -------------------------------------------------------------------------------- /33-Template_BlogApp/public/assets/blog.css: -------------------------------------------------------------------------------- 1 | /* stylelint-disable stylistic/selector-list-comma-newline-after */ 2 | 3 | .blog-header-logo { 4 | font-family: "Playfair Display", Georgia, "Times New Roman", serif/*rtl:Amiri, Georgia, "Times New Roman", serif*/; 5 | font-size: 2.25rem; 6 | } 7 | 8 | .blog-header-logo:hover { 9 | text-decoration: none; 10 | } 11 | 12 | h1, h2, h3, h4, h5, h6 { 13 | font-family: "Playfair Display", Georgia, "Times New Roman", serif/*rtl:Amiri, Georgia, "Times New Roman", serif*/; 14 | } 15 | 16 | .flex-auto { 17 | flex: 0 0 auto; 18 | } 19 | 20 | .h-250 { height: 250px; } 21 | @media (min-width: 768px) { 22 | .h-md-250 { height: 250px; } 23 | } 24 | 25 | /* Pagination */ 26 | .blog-pagination { 27 | margin-bottom: 4rem; 28 | } 29 | 30 | /* 31 | * Blog posts 32 | */ 33 | .blog-post { 34 | margin-bottom: 4rem; 35 | } 36 | .blog-post-meta { 37 | margin-bottom: 1.25rem; 38 | color: #727272; 39 | } 40 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/middlewares/upload.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | 6 | //* UPLOAD 7 | //? $ npm i multer 8 | // https://expressjs.com/en/resources/middleware/multer.html 9 | // multer module ile "form-data" verileri kabul edebiliriz. Yani dosya yükleme yapılabilir. 10 | 11 | const multer = require("multer"); 12 | 13 | module.exports = multer({ 14 | // dest: './uploads', 15 | storage: multer.diskStorage({ 16 | destination: "./uploads", 17 | filename: function (req, file, returnCallback) { 18 | // returnCallback(error, filename) 19 | // returnCallback(null, 'qadir.jpg') 20 | // console.log(file) 21 | // returnCallback(null, file.originalname) 22 | returnCallback(null, Date.now() + "-" + file.originalname); 23 | }, 24 | }), 25 | }); 26 | -------------------------------------------------------------------------------- /31-template-toDo/app/routes/todo.view.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - TODO Project with Sequelize 4 | ------------------------------------------------------- */ 5 | // ROUTERS: 6 | 7 | const todo = require("../controllers/todo.view.controller"); 8 | 9 | const router = require("express").Router(); 10 | 11 | // router.route('/') 12 | // .get(todo.list) 13 | // .post(todo.create) 14 | 15 | // router.route('/:id') 16 | // .get(todo.read) 17 | // .put(todo.update) 18 | // .patch(todo.update) 19 | // .delete(todo.delete) 20 | 21 | router.get("/", todo.list); 22 | 23 | // router.get('/create', todo.create) // form view 24 | // router.post('/create', todo.create) // form send 25 | router.all("/create", todo.create); 26 | //formu gormek icin once get yapiyorum. 27 | //Burada hem get hemde post yaptigim icin all kullanirim. 28 | 29 | module.exports = router; 30 | -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/_projectStarter/index.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | /* 6 | $ npm i express dotenv mongoose express-async-errors 7 | $ npm i cookie-session 8 | $ npm i jsonwebtoken 9 | */ 10 | 11 | const express = require('express') 12 | const app = express() 13 | 14 | /* ------------------------------------------------------- */ 15 | 16 | 17 | 18 | // continue from here... 19 | 20 | 21 | 22 | /* ------------------------------------------------------- */ 23 | 24 | // errorHandler: 25 | app.use(require('./src/middlewares/errorHandler')) 26 | 27 | // RUN SERVER: 28 | app.listen(PORT, () => console.log('http://127.0.0.1:' + PORT)) 29 | 30 | /* ------------------------------------------------------- */ 31 | // Syncronization (must be in commentLine): 32 | // require('./src/helpers/sync')() -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/routes/order.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/order: 8 | 9 | const order = require("../controllers/order"); 10 | const permissions = require("../middlewares/permissions"); 11 | 12 | // URL: /orders 13 | 14 | router 15 | .route("/") 16 | .get(permissions.isLogin, order.list) 17 | .post(permissions.isLogin, order.create); 18 | 19 | router 20 | .route("/:id") 21 | .get(permissions.isLogin, order.read) 22 | .put(permissions.isAdmin, order.update) 23 | .patch(permissions.isAdmin, order.update) 24 | .delete(permissions.isAdmin, order.delete); 25 | 26 | /* ------------------------------------------------------- */ 27 | module.exports = router; 28 | -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/_projectStarter/index.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | /* 6 | $ npm i express dotenv mongoose express-async-errors 7 | $ npm i cookie-session 8 | $ npm i jsonwebtoken 9 | */ 10 | 11 | const express = require('express') 12 | const app = express() 13 | 14 | /* ------------------------------------------------------- */ 15 | 16 | 17 | 18 | // continue from here... 19 | 20 | 21 | 22 | /* ------------------------------------------------------- */ 23 | 24 | // errorHandler: 25 | app.use(require('./src/middlewares/errorHandler')) 26 | 27 | // RUN SERVER: 28 | app.listen(PORT, () => console.log('http://127.0.0.1:' + PORT)) 29 | 30 | /* ------------------------------------------------------- */ 31 | // Syncronization (must be in commentLine): 32 | // require('./src/helpers/sync')() -------------------------------------------------------------------------------- /10-Router&middlewres/routes/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - ROUTING 4 | ------------------------------------------------------- */ 5 | 6 | /* express.Router() */ 7 | 8 | // const express = require("express"); 9 | // const router = express.Router() 10 | 11 | const router = require("express").Router(); // tek satirlik kisa yazim. 12 | 13 | // router.get("/", (req, res) => res.send({ message: "Home Area" })); 14 | // router.get("/about", (req, res) => res.send({ message: "About Area" })); 15 | // router.get("/user/:id", (req, res) => res.send({ message: req.params.id })); 16 | 17 | //?router.route() 18 | router 19 | .route("/") 20 | .get((req, res) => res.send(' message: "get"')) 21 | .post((req, res) => res.send({ message: "post" })) 22 | .put((req, res) => res.send({ message: "put" })) 23 | .delete((req, res) => res.send({ message: "delete" })); 24 | 25 | module.exports = router; 26 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/routes/order.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/order: 8 | 9 | const order = require("../controllers/order"); 10 | const permissions = require("../middlewares/permissions"); 11 | 12 | // URL: /orders 13 | 14 | router 15 | .route("/") 16 | .get(permissions.isLogin, order.list) 17 | .post(permissions.isLogin, order.create); 18 | 19 | router 20 | .route("/:id") 21 | .get(permissions.isLogin, order.read) 22 | .put(permissions.isAdmin, order.update) 23 | .patch(permissions.isAdmin, order.update) 24 | .delete(permissions.isAdmin, order.delete); 25 | 26 | /* ------------------------------------------------------- */ 27 | module.exports = router; 28 | -------------------------------------------------------------------------------- /33-Template_BlogApp/public/error.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ERROR 8 | 10 | 11 | 12 | 13 |
14 |
15 |
16 |
17 |

Opps! ERROR!

18 |
{%= data.message %}
19 |
20 | errorData: {%= JSON.stringify(data, null, 4) %} 21 |
22 |

23 |
24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /13-Models-Todo2/app.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - TODO Project with Sequelize 4 | ------------------------------------------------------- */ 5 | 6 | const express = require("express"); 7 | const app = express(); 8 | 9 | require("dotenv").config(); 10 | const PORT = process.env.PORT || 8000; 11 | 12 | /* ------------------------------------------------------- */ 13 | // Accept json data and convert object: 14 | app.use(express.json()); 15 | 16 | // Catch async-errors: 17 | require("express-async-errors"); 18 | /* ------------------------------------------------------- */ 19 | // Routes: 20 | 21 | app.use(require("./app/routes/todo.router")); 22 | 23 | /* ------------------------------------------------------- */ 24 | // ErrorHandler: 25 | app.use(require("./app/errorHandler")); 26 | /* ------------------------------------------------------- */ 27 | app.listen(PORT, () => console.log("Running: http://127.0.0.1:" + PORT)); 28 | -------------------------------------------------------------------------------- /18-BlogAPI_SearchSort/src/routes/blog.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ====================================================== */ 3 | /* BLOG API ROUTES */ 4 | /* ====================================================== */ 5 | const router = require("express").Router(); 6 | 7 | const { BlogPost, BlogCategory } = require("../controllers/blog.controller"); 8 | 9 | // BlogCategory: 10 | router.route("/categories").get(BlogCategory.list).post(BlogCategory.create); 11 | router 12 | .route("/categories/:categoryId") 13 | .get(BlogCategory.read) 14 | .put(BlogCategory.update) // put patch aynı 15 | .patch(BlogCategory.update) 16 | .delete(BlogCategory.delete); 17 | 18 | // BlogPost: 19 | router.route("/posts").get(BlogPost.list).post(BlogPost.create); 20 | 21 | router 22 | .route("/posts/:postId") 23 | .get(BlogPost.read) 24 | .put(BlogPost.update) // put patch aynı 25 | .patch(BlogPost.update) 26 | .delete(BlogPost.delete); 27 | 28 | module.exports = router; 29 | -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/src/routes/personnel.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | 8 | const personnel = require("../controllers/personnel.controller"); 9 | const permissions = require("../middlewares/permissions"); 10 | 11 | // URL: /personnels 12 | 13 | router 14 | .route("/") 15 | .get(permissions.isAdmin, personnel.list) 16 | .post(permissions.isAdmin, personnel.create); 17 | 18 | router 19 | .route("/:id") 20 | .get(permissions.isAdminOrOwn, personnel.read) 21 | .put(permissions.isAdminOrOwn, personnel.update) 22 | .patch(permissions.isAdminOrOwn, personnel.update) 23 | .delete(permissions.isAdmin, personnel.delete); 24 | 25 | /* ------------------------------------------------------- */ 26 | module.exports = router; 27 | -------------------------------------------------------------------------------- /16-BlogAPI_Mongoose copy/src/routes/blog.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ====================================================== */ 3 | /* BLOG API ROUTES */ 4 | /* ====================================================== */ 5 | const router = require("express").Router(); 6 | 7 | const { BlogPost, BlogCategory } = require("../controllers/blog.controller"); 8 | 9 | // BlogCategory: 10 | router.route("/categories").get(BlogCategory.list).post(BlogCategory.create); 11 | router 12 | .route("/categories/:categoryId") 13 | .get(BlogCategory.read) 14 | .put(BlogCategory.update) // put patch aynı 15 | .patch(BlogCategory.update) 16 | .delete(BlogCategory.delete); 17 | 18 | // BlogPost: 19 | router.route("/posts").get(BlogPost.list).post(BlogPost.create); 20 | 21 | router 22 | .route("/posts/:postId") 23 | .get(BlogPost.read) 24 | .put(BlogPost.update) // put patch aynı 25 | .patch(BlogPost.update) 26 | .delete(BlogPost.delete); 27 | 28 | module.exports = router; 29 | -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/intro.md: -------------------------------------------------------------------------------- 1 | # PIZZA API 2 | 3 | ### ERD: 4 | 5 | ![ERD](./erdPizzaAPI.png) 6 | 7 | ### Folder/File Structure: 8 | 9 | ``` 10 | .env 11 | .gitignore 12 | index.js 13 | package.json 14 | readme.md 15 | logs/ 16 | src/ 17 | configs/ 18 | dbConnection.js 19 | controllers/ 20 | auth.js 21 | order.js 22 | pizza.js 23 | token.js 24 | topping.js 25 | user.js 26 | helpers/ 27 | passwordEncrypt.js 28 | sync.js 29 | middlewares/ 30 | authentication.js 31 | errorHandler.js 32 | queryHandler.js 33 | logger.js 34 | permissions.js 35 | models/ 36 | routes/ 37 | auth.js 38 | document.js 39 | index.js 40 | order.js 41 | pizza.js 42 | token.js 43 | topping.js 44 | user.js 45 | ``` -------------------------------------------------------------------------------- /31-template-toDo/views/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 8 | 9 |

Welcome to Home

10 |
11 |            
12 |            <%
13 |             
15 |         %>
16 | 
17 |          
18 |            <%= '

Text

' %> 19 | <%= 2+5 %> 20 | 21 | 22 | <%- '

Text

' %> 23 | 24 | 25 | <%# commment %> 26 | 27 | <%% no template %> 28 | 29 | 30 | <%- '

Text

' -%> 31 |
32 | 33 | 34 | -------------------------------------------------------------------------------- /32-template-todo2 /views/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 8 | 9 |

Welcome to Home

10 |
11 |            
12 |            <%
13 |             
15 |         %>
16 | 
17 |          
18 |            <%= '

Text

' %> 19 | <%= 2+5 %> 20 | 21 | 22 | <%- '

Text

' %> 23 | 24 | 25 | <%# commment %> 26 | 27 | <%% no template %> 28 | 29 | 30 | <%- '

Text

' -%> 31 |
32 | 33 | 34 | -------------------------------------------------------------------------------- /17-BlogAPI_SessionCookies l/src/routes/blog.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ====================================================== */ 3 | /* BLOG API ROUTES */ 4 | /* ====================================================== */ 5 | const router = require("express").Router(); 6 | 7 | const { BlogPost, BlogCategory } = require("../controllers/blog.controller"); 8 | 9 | // BlogCategory: 10 | router.route("/categories").get(BlogCategory.list).post(BlogCategory.create); 11 | router 12 | .route("/categories/:categoryId") 13 | .get(BlogCategory.read) 14 | .put(BlogCategory.update) // put patch aynı 15 | .patch(BlogCategory.update) 16 | .delete(BlogCategory.delete); 17 | 18 | // BlogPost: 19 | router.route("/posts").get(BlogPost.list).post(BlogPost.create); 20 | 21 | router 22 | .route("/posts/:postId") 23 | .get(BlogPost.read) 24 | .put(BlogPost.update) // put patch aynı 25 | .patch(BlogPost.update) 26 | .delete(BlogPost.delete); 27 | 28 | module.exports = router; 29 | -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/intro.md: -------------------------------------------------------------------------------- 1 | # PIZZA API 2 | 3 | ### ERD: 4 | 5 | ![ERD](./erdPizzaAPI.png) 6 | 7 | ### Folder/File Structure: 8 | 9 | ``` 10 | .env 11 | .gitignore 12 | index.js 13 | package.json 14 | readme.md 15 | logs/ 16 | src/ 17 | configs/ 18 | dbConnection.js 19 | controllers/ 20 | auth.js 21 | order.js 22 | pizza.js 23 | token.js 24 | topping.js 25 | user.js 26 | helpers/ 27 | passwordEncrypt.js 28 | sync.js 29 | middlewares/ 30 | authentication.js 31 | errorHandler.js 32 | queryHandler.js 33 | logger.js 34 | permissions.js 35 | models/ 36 | routes/ 37 | auth.js 38 | document.js 39 | index.js 40 | order.js 41 | pizza.js 42 | token.js 43 | topping.js 44 | user.js 45 | ``` -------------------------------------------------------------------------------- /31-template-toDo/public/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 8 | 9 |

Welcome to Home

10 |

Template

11 |

API

12 |
13 |         
14 |         <%
15 |             console.log('template running')
16 |             console.log('bla bla')
17 |         %>
18 |         
19 |         <%= '

Text

' %> 20 | <%= 2+5 %> 21 | 22 | <%- '

Text

' %> 23 | 24 | <%# commment %> 25 | 26 | <%% no template %> 27 | 28 | <%- '

Text

' -%> 29 |
30 | 31 | 32 | -------------------------------------------------------------------------------- /32-template-todo2 /public/todoRead.ejs: -------------------------------------------------------------------------------- 1 | <%- include('_header') -%> 2 | 3 |

TODO READ

4 |

5 | List Todos 6 | New Todo 7 |

8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |
ID# <%= todo.id %>
Title<%= todo.title %>
Description<%= todo.description %>
Priority<%= priority[todo.priority] %>
Is Done?<%= (todo.isDone ? 'YES' : 'NO') %>
Created<%= todo.createdAt.toLocaleDateString('tr') %>
38 | 39 | <%- include('_footer') -%> 40 | -------------------------------------------------------------------------------- /32-template-todo2 /public/errors.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ERROR 7 | 13 | 14 | 15 | 16 |
17 |
18 |
19 |
20 |

Opps! ERROR!

21 |

<%= data.message %>

22 |
23 |
<%= JSON.stringify(data, null, 4) %>
24 |
25 |

26 | 29 |

30 |
31 |
32 | 33 | 34 | -------------------------------------------------------------------------------- /32-template-todo2 /public/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 8 | 9 |

Welcome to Home

10 |

Template

11 |

API

12 |
13 |         
14 |         <%
15 |             console.log('template running')
16 |             console.log('bla bla')
17 |         %>
18 |         
19 |         <%= '

Text

' %> 20 | <%= 2+5 %> 21 | 22 | <%- '

Text

' %> 23 | 24 | <%# commment %> 25 | 26 | <%% no template %> 27 | 28 | <%- '

Text

' -%> 29 |
30 | 31 | 32 | -------------------------------------------------------------------------------- /25-RentACar/src/models/token.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require('../configs/dbConnection') 6 | /* ------------------------------------------------------- * 7 | { 8 | "userId": "65343222b67e9681f937f001", 9 | "token": "...tokenKey..." 10 | } 11 | /* ------------------------------------------------------- */ 12 | // Token Model: 13 | 14 | const TokenSchema = new mongoose.Schema({ 15 | 16 | userId: { 17 | type: mongoose.Schema.Types.ObjectId, 18 | ref: 'User', 19 | required: true, 20 | index: true, 21 | }, 22 | 23 | token: { 24 | type: String, 25 | trim: true, 26 | required: true, 27 | index: true, 28 | }, 29 | 30 | }, { collection: 'tokens', timestamps: true }) 31 | 32 | /* ------------------------------------------------------- */ 33 | module.exports = mongoose.model('Token', TokenSchema) -------------------------------------------------------------------------------- /26-RentACar_2/src/models/token.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require('../configs/dbConnection') 6 | /* ------------------------------------------------------- * 7 | { 8 | "userId": "65343222b67e9681f937f001", 9 | "token": "...tokenKey..." 10 | } 11 | /* ------------------------------------------------------- */ 12 | // Token Model: 13 | 14 | const TokenSchema = new mongoose.Schema({ 15 | 16 | userId: { 17 | type: mongoose.Schema.Types.ObjectId, 18 | ref: 'User', 19 | required: true, 20 | index: true, 21 | }, 22 | 23 | token: { 24 | type: String, 25 | trim: true, 26 | required: true, 27 | index: true, 28 | }, 29 | 30 | }, { collection: 'tokens', timestamps: true }) 31 | 32 | /* ------------------------------------------------------- */ 33 | module.exports = mongoose.model('Token', TokenSchema) -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/models/pizza.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require('../configs/dbConnection') 6 | /* ------------------------------------------------------- */ 7 | // Pizza Model: 8 | 9 | const PizzaSchema = new mongoose.Schema({ 10 | 11 | name: { 12 | type: String, 13 | trim: true, 14 | required: true, 15 | unique: true, 16 | }, 17 | 18 | // image: { 19 | // type: String, 20 | // trim: true, 21 | // }, 22 | image: String, 23 | 24 | price: { 25 | type: Number, 26 | required: true, 27 | }, 28 | 29 | toppingIds: [ 30 | { 31 | type: mongoose.Schema.Types.ObjectId, 32 | ref: 'Topping', 33 | } 34 | ] 35 | 36 | }, { 37 | collection: 'pizzas', 38 | timestamps: true 39 | }) 40 | 41 | // Model: 42 | module.exports = mongoose.model('Pizza', PizzaSchema) -------------------------------------------------------------------------------- /20-PersonnelAPI-Token_permission/src/routes/personnel.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | 8 | const personnel = require("../controllers/personnel.controller"); 9 | const permissions = require("../middlewares/permissions"); 10 | 11 | // URL: /personnels 12 | 13 | router 14 | .route("/") 15 | .get(personnel.list) 16 | // .get(permissions.isAdmin, personnel.list) 17 | .get(permissions.isAdmin, personnel.list) 18 | .post(permissions.isAdmin, personnel.create); 19 | 20 | router 21 | .route("/:id") 22 | .get(permissions.isAdminOrOwn, personnel.read) 23 | .put(permissions.isAdminOrOwn, personnel.update) 24 | .patch(permissions.isAdminOrOwn, personnel.update) 25 | .delete(permissions.isAdmin, personnel.delete); 26 | 27 | /* ------------------------------------------------------- */ 28 | module.exports = router; 29 | -------------------------------------------------------------------------------- /32-template-todo2 /app/routes/todo.view.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - TODO Project with Sequelize 4 | ------------------------------------------------------- */ 5 | // ROUTERS: 6 | 7 | const todo = require("../controllers/todo.view.controller"); 8 | 9 | const router = require("express").Router(); 10 | 11 | // router.route('/') 12 | // .get(todo.list) 13 | // .post(todo.create) 14 | 15 | // router.route('/:id') 16 | // .get(todo.read) 17 | // .put(todo.update) 18 | // .patch(todo.update) 19 | // .delete(todo.delete) 20 | 21 | router.get("/", todo.list); 22 | 23 | // router.get('/create', todo.create) // form view 24 | // router.post('/create', todo.create) // form send 25 | router.all("/create", todo.create); 26 | //formu gormek icin once get yapiyorum. 27 | //Burada hem get hemde post yaptigim icin all kullanirim. 28 | 29 | router.all("/:id", todo.read); 30 | 31 | router.all("/:id/update", todo.update); 32 | router.all("/:id/delete", todo.delete); 33 | 34 | module.exports = router; 35 | -------------------------------------------------------------------------------- /32-template-todo2 /public/todoCreate.ejs: -------------------------------------------------------------------------------- 1 | <%- include('_header') -%> 2 | 3 |

TODO CREATE

4 |

5 | List Todos 6 |

7 |
8 | 9 | 10 | 11 | 12 | 19 | 20 | 21 | 22 | 25 | 26 | 27 | 28 | 31 | 32 | 33 |
Priority 13 | 18 |
Title 23 | 24 |
Description 29 | 30 |
34 |

35 | 36 |

37 |
38 | 39 | <%- include('_footer') -%> 40 | -------------------------------------------------------------------------------- /33-Template_BlogApp/src/models/userModel.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG Project with Mongoose 4 | ------------------------------------------------------- */ 5 | 6 | const mongoose = require('mongoose') 7 | const passwordEncrypt = require('../helpers/passwordEncrypt') 8 | 9 | const UserSchema = new mongoose.Schema({ 10 | 11 | email: { 12 | type: String, 13 | trim: true, 14 | unique: true, 15 | required: [true, 'Email field must be required.'], 16 | validate: [ 17 | (email) => (email.includes('@') && email.includes('.')), // ValidationCheck 18 | 'Email type is incorrect.' // If false Message. 19 | ] 20 | }, 21 | 22 | password: { 23 | type: String, 24 | trim: true, 25 | required: true, 26 | set: (password) => passwordEncrypt(password) 27 | }, 28 | 29 | firstName: String, 30 | 31 | lastName: String, 32 | 33 | }, { 34 | collection: 'users', 35 | timestamps: true 36 | }) 37 | 38 | module.exports = mongoose.model('User', UserSchema) -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/models/pizza.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require("../configs/dbConnection"); 6 | /* ------------------------------------------------------- */ 7 | // Pizza Model: 8 | 9 | const PizzaSchema = new mongoose.Schema( 10 | { 11 | name: { 12 | type: String, 13 | trim: true, 14 | required: true, 15 | unique: true, 16 | }, 17 | 18 | // image: { 19 | // type: String, 20 | // trim: true, 21 | // }, 22 | // image: String, 23 | // images: Array, 24 | images: [], 25 | 26 | price: { 27 | type: Number, 28 | required: true, 29 | }, 30 | 31 | toppingIds: [ 32 | { 33 | type: mongoose.Schema.Types.ObjectId, 34 | ref: "Topping", 35 | }, 36 | ], 37 | }, 38 | { 39 | collection: "pizzas", 40 | timestamps: true, 41 | } 42 | ); 43 | 44 | // Model: 45 | module.exports = mongoose.model("Pizza", PizzaSchema); 46 | -------------------------------------------------------------------------------- /25-RentACar/src/middlewares/permissions.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // Middleware: permissions 6 | 7 | module.exports = { 8 | isLogin: (req, res, next) => { 9 | if (req.user && req.user.isActive) { 10 | next(); 11 | } else { 12 | res.errorStatusCode = 403; 13 | throw new Error("NoPermission: You must login."); 14 | } 15 | }, 16 | isStaff: (req, res, next) => { 17 | if ( 18 | req.user && 19 | req.user.isActive && 20 | (req.user.isAdmin || req.user.isStaff) 21 | ) { 22 | next(); 23 | } else { 24 | res.errorStatusCode = 403; 25 | throw new Error("NoPermission: You must login and to be Admin."); 26 | } 27 | }, 28 | 29 | isAdmin: (req, res, next) => { 30 | if (req.user && req.user.isActive && req.user.isAdmin) { 31 | next(); 32 | } else { 33 | res.errorStatusCode = 403; 34 | throw new Error("NoPermission: You must login and to be Admin."); 35 | } 36 | }, 37 | }; 38 | -------------------------------------------------------------------------------- /26-RentACar_2/src/middlewares/permissions.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // Middleware: permissions 6 | 7 | module.exports = { 8 | isLogin: (req, res, next) => { 9 | if (req.user && req.user.isActive) { 10 | next(); 11 | } else { 12 | res.errorStatusCode = 403; 13 | throw new Error("NoPermission: You must login."); 14 | } 15 | }, 16 | isStaff: (req, res, next) => { 17 | if ( 18 | req.user && 19 | req.user.isActive && 20 | (req.user.isAdmin || req.user.isStaff) 21 | ) { 22 | next(); 23 | } else { 24 | res.errorStatusCode = 403; 25 | throw new Error("NoPermission: You must login and to be Admin."); 26 | } 27 | }, 28 | 29 | isAdmin: (req, res, next) => { 30 | if (req.user && req.user.isActive && req.user.isAdmin) { 31 | next(); 32 | } else { 33 | res.errorStatusCode = 403; 34 | throw new Error("NoPermission: You must login and to be Admin."); 35 | } 36 | }, 37 | }; 38 | -------------------------------------------------------------------------------- /22-PizzaAPI/src/models/pizza.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const { mongoose } = require("../configs/dbConnection"); 6 | /* ------------------------------------------------------- */ 7 | // Pizza Model: 8 | 9 | const PizzaSchema = new mongoose.Schema( 10 | { 11 | name: { 12 | type: String, 13 | trim: true, 14 | required: true, 15 | unique: true, 16 | }, 17 | 18 | // image: { 19 | // type: String, 20 | // trim: true, 21 | // }, 22 | image: String, 23 | 24 | price: { 25 | type: Number, 26 | required: true, 27 | }, 28 | 29 | toppingIds: [ 30 | // bu sekilde array icinde yazinca many to many oldu. Yani birden fazla topping ekleyebiliyoruz. 31 | { 32 | type: mongoose.Schema.Types.ObjectId, 33 | ref: "Topping", 34 | }, 35 | ], 36 | }, 37 | { 38 | collection: "pizzas", 39 | timestamps: true, 40 | } 41 | ); 42 | 43 | // Model: 44 | module.exports = mongoose.model("Pizza", PizzaSchema); 45 | -------------------------------------------------------------------------------- /25-RentACar/src/middlewares/authentication.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // app.use(authentication) 6 | 7 | const Token = require('../models/token') 8 | const jwt = require('jsonwebtoken') 9 | 10 | module.exports = async (req, res, next) => { 11 | 12 | const auth = req.headers?.authorization || null // Token ...tokenKey... 13 | const tokenKey = auth ? auth.split(' ') : null // ['Token', '...tokenKey...'] 14 | 15 | if (tokenKey) { 16 | 17 | if (tokenKey[0] == 'Token') { 18 | // SimpleToken: 19 | 20 | const tokenData = await Token.findOne({ token: tokenKey[1] }).populate('userId') 21 | req.user = tokenData ? tokenData.userId : undefined 22 | 23 | } else if (tokenKey[0] == 'Bearer') { 24 | // JWT: 25 | 26 | jwt.verify(tokenKey[1], process.env.ACCESS_KEY, (error, data) => { 27 | // //? Hata gösterimi yok: 28 | req.user = data 29 | }) 30 | } 31 | } 32 | 33 | next() 34 | } -------------------------------------------------------------------------------- /25-RentACar/src/routes/document.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | // routes/document: 8 | 9 | // URL: /documents 10 | 11 | router.all('/', (req, res) => { 12 | res.send({ 13 | swagger: "/documents/swagger", 14 | redoc: "/documents/redoc", 15 | json: "/documents/json", 16 | }) 17 | }) 18 | 19 | // JSON: 20 | router.use('/json', (req, res) => { 21 | res.sendFile(`/src/configs/swagger.json`, { root: '.' }) 22 | }) 23 | 24 | // Redoc: 25 | const redoc = require('redoc-express') 26 | router.use('/redoc', redoc({ specUrl: '/documents/json', title: 'API Docs' })) 27 | 28 | // Swagger: 29 | const swaggerUi = require('swagger-ui-express') 30 | router.use('/swagger', swaggerUi.serve, swaggerUi.setup(require('../configs/swagger.json'), { swaggerOptions: { persistAuthorization: true } })) 31 | 32 | /* ------------------------------------------------------- */ 33 | module.exports = router -------------------------------------------------------------------------------- /26-RentACar_2/src/middlewares/authentication.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | // app.use(authentication) 6 | 7 | const Token = require('../models/token') 8 | const jwt = require('jsonwebtoken') 9 | 10 | module.exports = async (req, res, next) => { 11 | 12 | const auth = req.headers?.authorization || null // Token ...tokenKey... 13 | const tokenKey = auth ? auth.split(' ') : null // ['Token', '...tokenKey...'] 14 | 15 | if (tokenKey) { 16 | 17 | if (tokenKey[0] == 'Token') { 18 | // SimpleToken: 19 | 20 | const tokenData = await Token.findOne({ token: tokenKey[1] }).populate('userId') 21 | req.user = tokenData ? tokenData.userId : undefined 22 | 23 | } else if (tokenKey[0] == 'Bearer') { 24 | // JWT: 25 | 26 | jwt.verify(tokenKey[1], process.env.ACCESS_KEY, (error, data) => { 27 | // //? Hata gösterimi yok: 28 | req.user = data 29 | }) 30 | } 31 | } 32 | 33 | next() 34 | } -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/routes/document.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | // routes/document: 8 | 9 | // URL: /documents 10 | 11 | router.all('/', (req, res) => { 12 | res.send({ 13 | swagger: "/documents/swagger", 14 | redoc: "/documents/redoc", 15 | json: "/documents/json", 16 | }) 17 | }) 18 | 19 | // JSON: 20 | router.use('/json', (req, res) => { 21 | res.sendFile(`/src/configs/swagger.json`, { root: '.' }) 22 | }) 23 | 24 | // Redoc: 25 | const redoc = require('redoc-express') 26 | router.use('/redoc', redoc({ specUrl: '/documents/json', title: 'API Docs' })) 27 | 28 | // Swagger: 29 | const swaggerUi = require('swagger-ui-express') 30 | router.use('/swagger', swaggerUi.serve, swaggerUi.setup(require('../configs/swagger.json'), { swaggerOptions: { persistAuthorization: true } })) 31 | 32 | /* ------------------------------------------------------- */ 33 | module.exports = router -------------------------------------------------------------------------------- /26-RentACar_2/src/routes/document.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | // routes/document: 8 | 9 | // URL: /documents 10 | 11 | router.all('/', (req, res) => { 12 | res.send({ 13 | swagger: "/documents/swagger", 14 | redoc: "/documents/redoc", 15 | json: "/documents/json", 16 | }) 17 | }) 18 | 19 | // JSON: 20 | router.use('/json', (req, res) => { 21 | res.sendFile(`/src/configs/swagger.json`, { root: '.' }) 22 | }) 23 | 24 | // Redoc: 25 | const redoc = require('redoc-express') 26 | router.use('/redoc', redoc({ specUrl: '/documents/json', title: 'API Docs' })) 27 | 28 | // Swagger: 29 | const swaggerUi = require('swagger-ui-express') 30 | router.use('/swagger', swaggerUi.serve, swaggerUi.setup(require('../configs/swagger.json'), { swaggerOptions: { persistAuthorization: true } })) 31 | 32 | /* ------------------------------------------------------- */ 33 | module.exports = router -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/routes/document.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require('express').Router() 6 | /* ------------------------------------------------------- */ 7 | // routes/document: 8 | 9 | // URL: /documents 10 | 11 | router.all('/', (req, res) => { 12 | res.send({ 13 | swagger: "/documents/swagger", 14 | redoc: "/documents/redoc", 15 | json: "/documents/json", 16 | }) 17 | }) 18 | 19 | // JSON: 20 | router.use('/json', (req, res) => { 21 | res.sendFile(`/src/configs/swagger.json`, { root: '.' }) 22 | }) 23 | 24 | // Redoc: 25 | const redoc = require('redoc-express') 26 | router.use('/redoc', redoc({ specUrl: '/documents/json', title: 'API Docs' })) 27 | 28 | // Swagger: 29 | const swaggerUi = require('swagger-ui-express') 30 | router.use('/swagger', swaggerUi.serve, swaggerUi.setup(require('../configs/swagger.json'), { swaggerOptions: { persistAuthorization: true } })) 31 | 32 | /* ------------------------------------------------------- */ 33 | module.exports = router -------------------------------------------------------------------------------- /projects-details/intro.md: -------------------------------------------------------------------------------- 1 | ## How to deploy my project to render and vercel with sqlite db 2 | 3 | ```jsx 4 | 5 | 1-Make sure you install cors 6 | 2- Go to vercel Deploy your FE part 7 | 3-Deploy FE part 8 | 4- Go to app.js page and add 9 | const cors = require("cors"); 10 | app.use(cors("Add vercel link here after deploying.")); 11 | 5- Click Storage on Vercel to get storage. 12 | 6- Click Create data base /Postgres 13 | 7- Click show secret 14 | 8- Copy the link without psql 15 | 9-Go to book.js page to change our database name 16 | 10- new Sequilze(add the link here ) 17 | 11- Comment in this line sequelize.sync(); // CREATE TABLE 18 | 12-Comment out the line again 19 | 13-If you get error you add pg and pg-hstore manually to your package.json 20 | 14- Go to vercel and click data 21 | 15-Click chhose table 22 | 16-Check if there is your data 23 | 24 | 25 | ``` 26 | 27 | ## GO TO RENDER TO DEPLOY BE PART 28 | 29 | ```jsx 30 | 1- Go to render Deploy your BE part 31 | 2-Click New 32 | 3-Web services 33 | 4-Find the project 34 | 5-Build command npm install 35 | 6-Start command node app.js 36 | 7- Choose free 37 | 8- Add variables if you have any in your .env file 38 | 9- Create. 39 | 40 | 41 | ``` 42 | -------------------------------------------------------------------------------- /33-Template_BlogApp/src/routes/api/blogRoute.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESSJS - BLOG Project with Mongoose 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | 7 | // Call Controllers: 8 | const { 9 | BlogCategory, 10 | BlogPost, 11 | } = require("../../controllers/api/blogController"); 12 | 13 | // ------------------------------------------ 14 | // BlogCategory 15 | // ------------------------------------------ 16 | router.route("/category").get(BlogCategory.list).post(BlogCategory.create); 17 | 18 | router 19 | .route("/category/:categoryId") 20 | .get(BlogCategory.read) 21 | .put(BlogCategory.update) 22 | .delete(BlogCategory.delete); 23 | 24 | // ------------------------------------------ 25 | // BlogPost 26 | // ------------------------------------------ 27 | router.route("/post").get(BlogPost.list).post(BlogPost.create); 28 | 29 | router 30 | .route("/post/:postId") 31 | .get(BlogPost.read) 32 | .put(BlogPost.update) 33 | .delete(BlogPost.delete); 34 | 35 | router.get("/category/:categoryId/posts", BlogPost.listCategoryPosts); 36 | 37 | module.exports = router; 38 | -------------------------------------------------------------------------------- /22-PizzaAPI/src/routes/document.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | NODEJS EXPRESS | CLARUSWAY FullStack Team 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | // routes/document: 8 | 9 | // URL: /documents 10 | 11 | router.all("/", (req, res) => { 12 | res.send({ 13 | swagger: "/documents/swagger", 14 | redoc: "/documents/redoc", 15 | json: "/documents/json", 16 | }); 17 | }); 18 | 19 | // JSON: 20 | router.use("/json", (req, res) => { 21 | res.sendFile(`/src/configs/swagger.json`, { root: "." }); 22 | }); 23 | 24 | // Redoc: 25 | const redoc = require("redoc-express"); 26 | router.use("/redoc", redoc({ specUrl: "/documents/json", title: "API Docs" })); 27 | 28 | // Swagger: 29 | const swaggerUi = require("swagger-ui-express"); 30 | router.use( 31 | "/swagger", 32 | swaggerUi.serve, 33 | swaggerUi.setup(require("../configs/swagger.json"), { 34 | swaggerOptions: { persistAuthorization: true }, 35 | }) 36 | ); 37 | 38 | /* ------------------------------------------------------- */ 39 | module.exports = router; 40 | -------------------------------------------------------------------------------- /15-BlogAPI_Mongoose/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | BLOG API with Mongoose 4 | ------------------------------------------------------- */ 5 | const express = require("express"); 6 | const app = express(); 7 | 8 | require("dotenv").config(); 9 | const PORT = process.env.PORT || 8000; 10 | const HOST = process.env.HOST; 11 | 12 | /* ------------------------------------------------------- */ 13 | 14 | /* ------------------------------------------------------- */ 15 | app.use(express.json()); //yukarida kalmali. 16 | 17 | //!DB Connection 18 | require("./src/dbConnection"); // app use demedik. Bir defa calisacak ve bitecek. 19 | /* ------------------------------------------------------- */ 20 | /* ------------------------------------------------------- */ 21 | 22 | app.all("/", (req, res) => { 23 | res.send("Welcome to blog Api"); 24 | }); 25 | app.use("/blog", require("./src/routes/blog.route.js")); 26 | //blog path'ine istek atildigi zaman seklinde yaziyoruz. 27 | app.use(require("./src/errorHandler.js")); // aşağıda kalsın 28 | /* ------------------------------------------------------- */ 29 | app.listen(PORT, () => console.log(`Running: http://${HOST}:${PORT}`)); 30 | -------------------------------------------------------------------------------- /23-PizzaAPI_JWT/src/configs/swagger.json: -------------------------------------------------------------------------------- 1 | { 2 | "swagger": "2.0", 3 | "info": { 4 | "version": "1.0.0", 5 | "title": "REST API", 6 | "description": "### ERD:", 7 | "termsOfService": "http://www.clarusway.com/#", 8 | "contact": { 9 | "name": "", 10 | "email": "qadir@clarusway.com" 11 | }, 12 | "license": { 13 | "name": "ISC" 14 | } 15 | }, 16 | "host": "127.0.0.1:8000", 17 | "basePath": "/", 18 | "schemes": [ 19 | "http", 20 | "https" 21 | ], 22 | "securityDefinitions": { 23 | "Token": { 24 | "type": "apiKey", 25 | "in": "header", 26 | "name": "Authorization", 27 | "description": "Simple Token Authentication * Example: Token ...tokenKey..." 28 | }, 29 | "Bearer": { 30 | "type": "apiKey", 31 | "in": "header", 32 | "name": "Authorization", 33 | "description": "JWT Authentication * Example: Bearer ...accessToken..." 34 | } 35 | }, 36 | "consumes": [ 37 | "application/json" 38 | ], 39 | "produces": [ 40 | "application/json" 41 | ], 42 | "paths": {}, 43 | "security": [ 44 | { 45 | "Token": [] 46 | }, 47 | { 48 | "Bearer": [] 49 | } 50 | ] 51 | } -------------------------------------------------------------------------------- /24-PizzaAPI_Email_Upload/src/configs/swagger.json: -------------------------------------------------------------------------------- 1 | { 2 | "swagger": "2.0", 3 | "info": { 4 | "version": "1.0.0", 5 | "title": "REST API", 6 | "description": "### ERD:", 7 | "termsOfService": "http://www.clarusway.com/#", 8 | "contact": { 9 | "name": "", 10 | "email": "qadir@clarusway.com" 11 | }, 12 | "license": { 13 | "name": "ISC" 14 | } 15 | }, 16 | "host": "127.0.0.1:8000", 17 | "basePath": "/", 18 | "schemes": [ 19 | "http", 20 | "https" 21 | ], 22 | "securityDefinitions": { 23 | "Token": { 24 | "type": "apiKey", 25 | "in": "header", 26 | "name": "Authorization", 27 | "description": "Simple Token Authentication * Example: Token ...tokenKey..." 28 | }, 29 | "Bearer": { 30 | "type": "apiKey", 31 | "in": "header", 32 | "name": "Authorization", 33 | "description": "JWT Authentication * Example: Bearer ...accessToken..." 34 | } 35 | }, 36 | "consumes": [ 37 | "application/json" 38 | ], 39 | "produces": [ 40 | "application/json" 41 | ], 42 | "paths": {}, 43 | "security": [ 44 | { 45 | "Token": [] 46 | }, 47 | { 48 | "Bearer": [] 49 | } 50 | ] 51 | } -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/src/routes/department.router.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | const router = require("express").Router(); 6 | /* ------------------------------------------------------- */ 7 | const department = require("../controllers/department.controller"); 8 | const permissions = require("../middlewares/permissions"); 9 | 10 | // URL: /departments 11 | router 12 | .route("/") 13 | .get(permissions.isLogin, department.list) 14 | //login olduk mu?,middleware calisir ve eger login isek next der. 15 | .post(permissions.isAdmin, department.create); 16 | //admin kontrolu. Eger admin ise next 17 | 18 | router 19 | .route("/:id") 20 | .get(permissions.isLogin, department.read) 21 | .put(permissions.isAdmin, department.update) 22 | .patch(permissions.isAdmin, department.update) 23 | .delete(permissions.isAdmin, department.delete); 24 | 25 | //her department'in personellerini getirmek icin 26 | // /departmentId/personnels 27 | router.get("/:id/personnels", permissions.isAdminOrLead, department.personnels); 28 | /* ------------------------------------------------------- */ 29 | module.exports = router; 30 | -------------------------------------------------------------------------------- /21-PersonnelAPI_LogDocument/src/middlewares/authentication.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* ------------------------------------------------------- 3 | EXPRESS - Personnel API 4 | ------------------------------------------------------- */ 5 | // app.use(authentication): 6 | 7 | const Token = require("../models/token.model"); 8 | 9 | module.exports = async (req, res, next) => { 10 | // Authorization: Token ... 11 | // Authorization: ApiKey ... 12 | // Authorization: X-API-KEY ... 13 | // Authorization: x-auth-token ... 14 | // Authorization: Bearer ... 15 | 16 | const auth = req.headers?.authorization || null; // Token ...tokenKey... 17 | const tokenKey = auth ? auth.split(" ") : null; // ['Token', '...tokenKey...'] 18 | 19 | if (tokenKey && tokenKey[0] == "Token") { 20 | const tokenData = await Token.findOne({ token: tokenKey[1] }).populate( 21 | "userId" 22 | ); // personnel data ile birlestiriyoruz. Ve personnel verilerine ulasiyoruz. 23 | // console.log(tokenData) 24 | if (tokenData) req.user = tokenData.userId; // Personnel Data 25 | // console.log(req.user) // req.user 'a tokenData.userId ata ve req.user basinda 26 | //req oldugu icin artik global oldu ve index.js dosyasinda da main path'ta onu kullandim. 27 | } 28 | next(); 29 | }; 30 | --------------------------------------------------------------------------------