Skip to content

A node.js, yelp inspired, community website for campgrounds.

Notifications You must be signed in to change notification settings

NikelausM/yelp-camp

Repository files navigation

Yelp Camp

Table of contents

Introduction

This is a repository of my (Jose Nicolas Mora) YelpCamp project for the Udemy course, The Web Developer Bootcamp.

Check out my Github

Check out my LinkedIn

Features

YelpCamp is a yelp style, campground themed website. It allows for users to browse and search campgrounds that the community adds. The campgrounds are rated using a "like" system, and the users are able to talk about the campgrounds through a campground comment system.

Key Features

  • RESTful routes
  • Campground Search (Fuzzy)/Show/Edit/Delete
  • User Show/Edit
  • Liking Campgrounds
  • Comments on Campgrounds
  • Notifications
  • Authentication
  • Password reset with real emails
  • Admin role
  • Visible Campground location with Google mini-map and marker
  • Image uploading to the cloud

Added Features

  • General
    • Object Oriented Javascript Refactor
      • My YelpCamp project is heavily refactored to take advantage of ES6 syntax, including:
        • Classes (to make application more Object-Oriented)
        • Async/Await (to significantly reduce callbacks and ease asynchronous programming)
        • let and const (for increased control of scope)
        • etc
    • Nested comments
    • Pagination
    • Flash messages for showing helpful information to users
    • Meaningful error messages
    • Dynamic price feature
  • Back-end
  • Front-end
    • Mobile responsive front end design
    • Landing page animations
    • Wrapper class for wrapping models used in View files to de-couple Model (database) from View
      • This allows a developer to use the same wrapper class in the views for any model, regardless of complexity
      • This increases encapsulation of models used in views
    • Modals for seeing who likes a Campground
    • Modals for enlarging images
    • Revamped profile page
    • Increased modularity of view layouts and partials, best exemplified by the comments views
    • Even more meaningful dynamic error messages

Launch

Setup

To install, first fork this repository, then in the command line type and enter:

npm install

To run:

node ./lib/app.js

To run and preserve asynchronous stack traces:

node ./lib/app.js --async-stack-trace

Deployment

This application is deployed as a read-only version to the following link: https://yelp-camp-nikelausm.herokuapp.com/

You may use the following account to login:

  • username: jackofhearts
  • password: PNuYtb!2E!UZG&ryQ8*zse&$76eoFf

(note: it's read only, so you won't be able to edit/delete things)

Deployment Diagram

Technologies

Database

Back-end

  • Node.js: 14.4.0
    • JavaScript runtime built on Chrome's V8 JavaScript engine.
  • npm 6.14.5
    • Node Package Manager (like a Javascript dependency manager).
    • It allows you to easily install 3rd party Javascript Node.js libraries.

NPM packages

Front-end

  • EJS ^3.1.3
    • Javascript templating engine used for building html pages.
  • Bootstrap 4.5.0
    • Open source CSS framework used for creating responsive mobile-first web pages.
  • Font Awesome
    • For icons.

Other NPM packages used for Front-end

Documentation

Check out this project's documentation website.

Certificate