Relive is a clone of Airbnb, a complete web application where users can create, review and book spots.
Check out Relive.
Technologies Used
HTML5
JavaScript
CSS3
Sequelize
React
Redux
PostgreSQL
Spots Page

Spot Details Page
Create a Spot Page
Getting started
Clone this repository:
https://github.com/ExcuseMeImJack/Relive.git 2. Install dependencies into the Backed and the Frontend by making a terminal for each one and then run the following:
npm install3. Create a .env file using the .envexample provided
4. Set up your database with information from your .env and then run the following to create your database, migrate, and seed:
npx dotenv sequelize db:createnpx dotenv sequelize db:migratenpx dotenv sequelize db:seed:all5. Start the app for both backend and frontend using:
npm start6. Now you can use the Demo User or Create an account
Amazon Web Services S3
For setting up your AWS refer to this guide.
Features
Spots
Users can create a Spot
Users can read/view other Spot
Users can update their Spot
Users can delete their Spot
Reviews
Users can create Reviews on Spots
Users can read/view all of the Reviews on a Spot
Users can delete their Review(s) on a Spot
Bookings
Logged in users can can create a booking at a spot
Logged in users can read all of their bookings
Logged in users can update their booking at a spot
Logged in users can delete/cancel their booking
API Routes
This web app uses the following API routes to dynamically update the page to create a single-page-app-like feel for the user for specific features.
SPOTS
POST /api/spots/:spotId/bookingsPurpose: Create a booking from a Spot based on the Spot's ID
Return:
{"id": 1,"spotId": 1,"userId": 2,"startDate": "2021-11-19","endDate": "2021-11-20","createdAt": "2021-11-19 20:39:36","updatedAt": "2021-11-19 20:39:36"}GET /api/spots/:spotId/bookingsPurpose: Get all the Bookings for a Spot based on the Spot's ID
Return:
{"Bookings": [{"spotId": 1,"startDate": "2021-11-19","endDate": "2021-11-20"}]}POST /api/spots/:spotId/reviewsPurpose: Create a Review for a Spot based on the Spot's ID
Return:
{"review": "This was an awesome spot!","stars": 5,}GET /api/spots/:spotId/reviewsPurpose: Get all Reviews by a Spot's ID
Return:
{"Reviews": [{"id": 1,"userId": 1,"spotId": 1,"review": "This was an awesome spot!", . . . }]}GET /api/spots/currentPurpose: Get all Spots owned by the Current User
Return:
{"Spots": [{"id": 1, "ownerId": 1, "address": "123 Disney Lane" . . . }]}POST /api/spots/:spotId/imagesPurpose: Create an Image for a Spot based on the Spot's ID
Return:
{"url": "image url", "preview": true}GET /api/spots/:spotIdPurpose: Get details of a Spot based on the Spot's ID
Return:
{"id": 1, "ownerId": 1, "address": "123 Disney Lane" . . . }DELETE /api/spots/:spotIdPurpose: Delete a Spot based on the Spot's ID
Return:
{"message": "Successfully deleted"}PUT /api/spots/:spotIdPurpose: Edit a Spot based on the Spot's ID
Return:
{"id": 1, "ownerId": 1, "address": "123 Disney Lane" . . . }POST /api/spotsPurpose: Create a Spot
Return:
{"address": "123 Disney Lane", "city": "San Francisco", . . . }GET /api/spotsPurpose: Get all Spots
Return:
{"Spots": [{"id": 1, "ownerId": 1, "address": "123 Disney Lane" . . . }]}REVIEWS
POST /api/reviews/:reviewId/imagesPurpose: Create an Image for a Review based on the Review's ID
Return:
{"id": 1,"url": "image url"}GET /api/reviews/currentPurpose: Get all the Reviews of a Current User
Return:
{"Reviews": [{"id": 1,"userId": 1,"spotId": 1,"review": "This was an awesome spot!", . . . }]}PUT /api/reviews/:reviewIdPurpose: Edit a Review based on the Review's ID
Return:
{"id": 1,"userId": 1,"spotId": 1,"review": "This was an awesome spot!", . . . }]}DELETE /api/reviews/:reviewIdPurpose: Delete a Review based on the Review's ID
Return:
{"message": "Successfully deleted"}BOOKINGS
DELETE /api/bookings/:bookingIdPurpose: Delete a Booking based on the Booking ID
Return:
{"message": "Successfully deleted"}PUT /api/bookings/:bookingIdPurpose: Edit a Booking based on the Booking ID
Return:
{"id": 1,"spotId": 1,"userId": 2,"startDate": "2021-11-19", . . . }GET /api/bookings/currentPurpose: Get all of the Current User's Bookings
Return:
{"Bookings": [{"id": 1,"spotId": 1,"Spot": { . . . } . . . }]}SPOT IMAGES
DELETE /api/spot-images/:imageIdPurpose: Delete a Spot Image based on the Spot Image ID
Return:
{"message": "Successfully deleted"}REVIEW IMAGES
DELETE /api/review-images/:imageIdPurpose: Delete a Review Image based on the Review Image ID
Return:
{"message": "Successfully deleted"}USERS
POST /api/usersPurpose: Create/Sign up a User
Return:
{"id": 1,"firstName": "John","lastName": "Smith", . . . }SESSION
POST /api/sessionPurpose: Login a User
Return:
{"user": {"id": 1,"firstName": "John", . . . }}GET /api/sessionPurpose: Returns the information about the current user that is logged in.
Return:
{"user": {"id": 1,"firstName": "John", . . . }}0 likes · 9 views · Nov 9, 2024
A full-stack web application built using Express which provides users with an immersive experience inspired by Airbnb.