Skip to content

A tour booking custom backend app (with a basic frontend) written in Node.js and Express using MongoDB as database in an effort to master all the best practices in these technologies

Notifications You must be signed in to change notification settings

marios-codes/nasty-tours

Repository files navigation

Nasty Tours

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.

Run In Postman

Used Frameworks/ Libraries

What Does This Project Contain?

  • 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

Screenshots

Tours Overview Tour's details Stripe checkout User Profile

About

A tour booking custom backend app (with a basic frontend) written in Node.js and Express using MongoDB as database in an effort to master all the best practices in these technologies

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published