Trek-King

A full stack web application to review and create treks with basic user authentication.

Stars
0
Committers
1

Trek-King

My first full-stack web application. Essentially, it is a review website for Treks in India. The core features included are login and sign-up for user authentication, Maptiler Maps API for implementing a cluster map to make it more user-friendly and intuitive , and (CRUD) functionality for creating a new trek and/or reviewing treks made by other authors. The basic foundation of this project was built from the web course 'The Web Developer Bootcamp' by Colt Steele.

Features

  • Users can sign-up/login to use various features like creating, editing, and deleting treks
  • Users can leave rating and reviews treks, and edit/delete their reviews
  • Authors can only delete treks and reviews created by them.
  • Users can use cluster map to pinpoint and view a particular trek

Demo

Landing/Home page and using cluster map to pinpoint a particular trek and view detailed data of that trek
User authentication via login page to create or comment on a trek
Creating a new trek
Editing an already created trek
Ability to add new images and delete existing uploaded images
Unable to delete a trek if the user is not the author (even if logged in)
Ability to leave a review with rating and edit it

Learnings

  • First full-stack application to help me understand the integration of front-end with back-end
  • Introduction to Express.js in Node.js runtime environment
  • Introduction to MongoDB and the basic CRUD functionality. Basic introduction of pre and post hooks, and mongoose middleware
  • Introduction to EJS to render dynamic content with HTML and javascript
  • A very basic understanding of Error handling(Express error handling and handling async errors)
  • Introduction to session, cookies, and flash
  • Introduction to authentication and authorization using PassportJS
  • Gaining exposure to Cloudinary, Maptiler maps API, and Mongo Atlas
  • Optimizing app by learning about various security issues and implementing Helmet to mitigate some of those issues
  • Hosting app on Render to learn about deploying and environment variables during development and production