Gulp is a soft clone of Yelp. Gulp allows users to create businesses, review the businesses of other users, reply as a business owner to user reviews of your business and favorite individual businesses.
Check out Gulp
Contact me on LinkedIn
- Users can create businesses.
- Users can view all of the businesses on the site with multiple sort options.
- Users can update their business.
- Users can delete their business.
- Users can review businesses.
- Users can view all of the reviews of a business with multiple sort options.
- Users can update their reviews.
- Users can delete their reviews.
- Business owners can reply to individual reviews.
- Users can view the replies of business owners.
- Business owners can update their replies.
- Business owners an delete their replies.
- Users can favorite individual businesses.
- Users can their favorites on their user profiles and on the individual pages of favorites.
- Users can unfavorite businesses that they have favorited.
- All images are submitted as files and those files are stored in an S3 bucket.
- Users can search for businesses by name.
- Users can filter businesses by tag(s) by searching for particular tags(s).
-
GET /api/users/
-
Returns a list of individual users as dictionaries.
[ { id: integer, username: string, email: string, hashed_password: string, url: string, created_at: string } ]
-
-
GET /api/users/:userId
-
Returns the specified user as a dictionary.
{ id: integer, username: string, email: string, hashed_password: string, url: string, created_at: string }
-
-
PATCH /api/users/image
-
Updates the logged in user's url (image) and returns the logged in user as a dictionary.
{ id: integer, username: string, email: string, hashed_password: string, url: string, created_at: string }
-
-
DELETE /api/users/image
-
Changes the logged in user's url to the default user avatar and returns the logged in user as a dictionary.
{ id: integer, username: string, email: string, hashed_password: string, url: string, created_at: string }
-
-
GET /api/auth/
-
If the user is logged in, a dictionary representing the user is returned.
{ id: integer, username: string, email: string, hashed_password: string, url: string, created_at: string, numBusinesses: integer, numReviews: integer, favorites: [ {} ] }
-
-
POST /api/auth/login
-
A logged out user is logged in and a dictionary representing the user is returned.
{ id: integer, username: string, email: string, hashed_password: string, url: string, created_at: string, numBusinesses: integer, numReviews: integer, favorites: [ {} ] }
-
-
GET /api/auth/logout
-
The logged in user is logged out and a dictionary representing a successful logout.
{ message: 'User logged out' }
-
-
POST /api/auth/signup
-
An account is created for the logged out user, the user is logged in and a dictionary representing the new user is returned.
{ id: integer, username: string, email: string, hashed_password: string, url: string, created_at: string, numBusinesses: integer, numReviews: integer, favorites: [ {} ] }
-
-
GET /api/auth/unauthorized
-
Returns a dictionary with an errors key when flask-login authentication fails.
{ errors: ['Unauthorized'] }
-
-
GET /api/businesses/
(optional query)-
Returns a list of all the individual businesses as dictionaries on the site.
[ { id: integer, name: string, description: string, tag_one: string, tag_two: string, tag_three: string, address: string, city: string, state, string owner_id: integer, preview_image: string, created_at: string, updated_at: string, images: [ {} ], owner: {}, average: integer, numReviews: integer } ]
-
-
GET /api/businesses/recent/:count
-
Returns a list of the most recently added individual business dictionaries to the site with the route parameter specifying the count.
[ { id: integer, name: string, description: string, tag_one: string, tag_two: string, tag_three: string, address: string, city: string, state, string owner_id: integer, preview_image: string, created_at: string, updated_at: string, images: [ {} ], owner: {}, average: integer, numReviews: integer } ]
-
-
GET /api/businesses/current
-
Returns a list of individual business dictionaries which are owned by the logged in user.
[ { id: integer, name: string, description: string, tag_one: string, tag_two: string, tag_three: string, address: string, city: string, state, string owner_id: integer, preview_image: string, created_at: string, updated_at: string, images: [ {} ], owner: {}, average: integer, numReviews: integer } ]
-
-
GET /api/businesses/:id
-
Returns a dictionary of the businesses with the specified id.
{ id: integer, name: string, description: string, address: string, city: string, state: string, owner_id: integer, preview_image: string, average: integer, numReviews: integer, tag_one: string, tag_two: string, tag_three: string, created_at: string, updated_at: string, owner: {}, images: [ {} ], reviewers: [], reviews: [ {} ] }
-
-
DELETE /api/businesses/:id
-
Deletes the business with the specified id if it exists and returns a dictionary confirming the deletion.
{ message: "Successfully deleted the business" }
-
-
POST /api/businesses/
-
Creates a new business and returns a dictionary of the new business.
{ id: integer, name: string, description: string, address: string, city: string, state: string, owner_id: integer, preview_image: string, average: integer, numReviews: integer, tag_one: string, tag_two: string, tag_three: string, created_at: string, updated_at: string, owner: {}, images: [ {} ], reviews: [] }
-
-
PUT /api/businesses/:id
-
Edits an existing business and returns a dictionary of the updated business.
{ id: integer, name: string, description: string, address: string, city: string, state: string, preview_image: string, tag_one: string, tag_two: string, tag_three: string, created_at: string, updated_at: string, owner: {}, images: [ {} ], }
-
-
DELETE /api/businesses/images/:id
-
Deletes the optional business image with the specified id if it exists and returns a dictionary confirming the deletion.
{ message: "Successfully deleted the business image" }
-
-
GET /api/reviews/current
-
Returns a list of individual review dictionaries associated with the logged in user.
[ { id: integer, review: string, rating: integer, reviewer_id: integer, business_id: string created_at: string, updated_at: string, business: {}, images: [], reviewer: {} } ]
-
-
GET /api/reviews/:reviewId
-
Returns a dictionary of the specified review.
{ id: integer, review: string, rating: integer, reviewer_id: integer, business_id: string created_at: string, updated_at: string, business: {}, images: [], reviewer: {} }
-
-
POST /api/businesses/:businessId/reviews
-
Creates a new review for the specified business and returns a dictionary of the new review.
{ id: integer, review: string, rating: integer, reviewer_id: integer, business_id: string created_at: string, updated_at: string, images: [], reviewer: {} }
-
-
PUT /api/reviews/:reviewId
-
Edits a specified review and returns a dictionary of the review.
{ id: integer, review: string, rating: integer, reviewer_id: integer, business_id: string created_at: string, updated_at: string, images: [] }
-
-
DELETE /api/reviews/:id
-
Deletes the review with the specified id if it exists and returns a dictionary confirming the deletion.
{ message: "Successfully deleted the review" }
-
-
DELETE /api/reviews/images/:id
-
Deletes the optional review image with the specified id if it exists and returns a dictionary confirming the deletion.
{ message: "Successfully deleted the review image" }
-
-
POST /api/reviews/:reviewId/replies
-
Creates a new reply for the specified business and returns a dictionary of the new reply.
{ id: integer, reply: string review_id: intger, created_at: string, updated_at: string }
-
-
PUT /api/replies/:replyId
-
Edits a specified reply and returns a dictionary of the reply.
{ id: integer, reply: string, review_id: integer, created_at: string, updated_at: string }
-
-
DELETE /api/replies/:id
-
Deletes the reply with the specified id if it exists and returns a dictionary confirming the deletion.
{ message: "Successfully deleted the reply" }
-
-
GET /api/businesses/current/favorites
-
Returns a list of individual business dictionaries which are favorites of the logged in the user.
[ { id: integer, name: string, description: string, tag_one: string, tag_two: string, tag_three: string, address: string, city: string, state, string owner_id: integer, preview_image: string, created_at: string, updated_at: string, images: [ {} ], owner: {}, average: integer, numReviews: integer } ]
-
-
POST /api/businesses/:businessId/favorites
-
Creates a new favorite between the specified business and the logged in user and returns a dictionary of the new favorite.
{ id: integer, user_id: integer, business_id: string, super: boolean created_at: string, updated_at: string }
-
-
DELETE /api/favorites/:favoriteId
-
Deletes the favorite with the specified id if it exists and returns a dictionary confirming the deletion.
{ message: "Successfully deleted the favorite" }
-