NOTE: Please add your config.env
in the main directory using your own respective services' keys and configurations.
This is a backend app with a custom RESTful API that serves requests regarding a tour booking agency. Using the Postman collection you can interact with the various endpoints, which in their turn communicate with the database. There's also a frontend access to the API, which is more like a Proof of Concept for the backend, and does some basic requests using the UI. You can find it On Render. As it is hosted in a free tier give it some time to load ;). I built it to put in action all the best practices I learned for NodeJS, ExpressJS, MongoDB, Mongoose and other fundamental concepts.
- NodeJS
- ExpressJS
- MongoDB
- Mongoose
- Pug
- Stripe
- Parcel
- DotEnv
- JsonWebToken
- Morgan
- slugify
- multer
- cookie-parser
- validator
- nodemailer
- express-rate-limit
- helmet
- express-mongo-sanitize
- xss-clean
- hpp
- cors
- Node.js Architecture: Dived into the internals of Node.js, exploring the event loop, thread pool, and how asynchronous operations are handled.
- Asynchronous JavaScript: Implemented the fundamentals of promises and modern async/await syntax for handling asynchronous code.
- Express Framework: Built robust API routes with Express, handling HTTP verbs, parsing URL parameters, created custom middleware, and more.
- MongoDB: Get hands-on with MongoDB. Create databases and collections, perform CRUD operations, and connect to MongoDB Atlas for cloud-hosted databases.
- Mongoose: Implemented Mongoose's schema-driven data modeling, CRUD operations, nested routes, geospatial queries, advanced query filtering, query middleware (e.g.filtering, sorting, pagination, aliasing), aggregation pipeline, virtual properties etc.
- Express Error Handling: Implemented error handling strategies including handling undefined routes, creating global error middleware, catching errors in async functions, and managing uncaught exceptions.
- Authorization and Authentication with JWT and user roles
- Send email upon registation for verification and authorization
- Payments through Stripe
- Server Side Rendering with Pug
- File uploads
- Map rendering and interaction by Leaflet
- Security best practices



