Welcome to Yelp Camp
To get the Node server running locally:
- Clone this repo
npm install
to install all required dependencies- Install MongoDB Community Edition (instructions) and run it by executing
mongod
npm run dev
to start the local server
- Built on Stack: MongoDB, Express and NodeJS
- Implements CRUD:
Create
,Write
,Update
andDelete
Operations - Implementss REST (Representational state transfer) API
- Authentication: Users can create an account, then add posts, can comment on posts, update and delete comments and posts.
- Authorization: Only users created the cooment and/or the post has the right to access the
update
route, and hence can modify it. - Flash messages for success or an error message to user so the user can know what's happened
- expressjs - The server for handling and routing HTTP requests
- body-parser - Node.js body parsing middleware.
- connect-flash - The flash is a special area of the session used for storing messages. Messages are written to the flash and cleared after being displayed to the user. The flash is typically used in combination with redirects, ensuring that the message is available to the next page that is to be rendered.
- ejs - Embedded JavaScript templates: USed here for automatic detection for ejs templates for a cleaner code.
- express-session - For creating and handling data through sessions
- method-override - Lets you use HTTP verbs such as PUT or DELETE in places where the client doesn't support it.
- mongodb - The official MongoDB driver for Node.js. Provides a high-level API on top of mongodb-core that is meant for end users.
- mongoose - For modeling and mapping MongoDB data to javascript
- passport - For handling user authentication
- passport-local - Passport strategy for authenticating with a username and password.
- passport-local-mongoose - Passport-Local Mongoose is a Mongoose plugin that simplifies building username and password login with Passport.
app.js
- The entry point to our application. This file defines our express server and connects it to MongoDB using mongoose. It also requires the routes and models we'll be using in the application.middleware/
- This folder contains middleware logic for Authentication and Authorization.routes/
- This folder contains the route definitions for our API.Associations/models/
- This folder contains the schema definitions for our Mongoose models.views/
- This folder containing embedded HTML codes for our views used in the Project./seed.js
- This file contains sample posts for seeding the Database, in case the used is too lazy to add themselves. Just uncomment the appropriate line in app.js