Skip to content

rpp33-boc-atlantic/garager

Repository files navigation

G A R A G E R

Garager is an application based on the peer-to-peer economy like Airbnb. Users can list items from their garage for rent (like tools, equipment, camping gear, decorations, etc.). Users can also search for items they need and rent them when they become available.

Table of Contents

  1. Installation

  2. Dependencies

  3. Production Deployment

  4. Contributors

  5. Features

  1. Tech Stack

Installation (Local Development)

  1. Download Github repo:
git clone https://github.com/rpp33-boc-atlantic/garager.git
  1. Install packages:
npm install

Dependencies

  • In addition to running a server, a PostgreSQL database will have to be deployed and accessible to the server.

  • The address and coordinates are sourced via API service with Google Maps. To get API key: ...

  • To get Firebase API:...

  • To get Stripe keys:

    1. Create an account or Sign into your account
    2. Locate the For developers section in appropriate dashboard for publishable and secret keys. Live mode dasboard | Test mode dashboard

Running Locally

  • The following are the scripts that are relevent for local development and deployment
  1. Set up .env file with all keys in the root directory
touch .env
  1. Run the webpack build script
npm run build-dev
  1. Start the server script
npm start
  1. Set up a local PostgreSQL database
psql postgres
\i <path to server/database/schema.sql>
  • Update user, host and password to localhost when running on the local database
  1. Run the Jest test script
npm test

Production Deployment

CI/CD recommendations:

Continuous Integration:

We used Github's Actions to set up Continuous Integration. The ci.yml instructions are triggered on Pull Requests before approval is allowed.

Continuous Deployment:

We used Github's Actions to trigger a new Docker image built on any merge to Main branch.

To Run on AWS EC2 Instance:

AWS RDS Database:

Contributors

Members of the Atlantic Team:


Chloe Meinshausen

(Project Manager)

Joe Mitzman

(Architecture Owner)

Nick Gerrard

(UI Owner)

Joann Whang

(Software Engineer)

Rudy Sarmiento

(Software Engineer)

Wen Dai

(Software Engineer)

Thao Nguyen

(Software Engineer)

Features

Authentication

  • Sign up/ Log in with email and password
SignUpLogIn.mp4
  • Link Facebook account with a registered email account. Prevent user from creating multiple accounts with the same email.
LinkAccount.mp4

Search / Browse

Post an Item

  • Post an item through multiple steps instruction with data validation and suggestion.

Item View

  • The renter is able to view images, details, and availability of an item to book it for a range of dates. The renter may also suggest a price in case the item owner has enabled the Name Your Own Price feature.

Item View and Choosing a Range of Dates

  • Proper error handling in case an item post has been deleted by its owner. The button to delete a listing is visible only to the owner.

Proper Error Handling

Messages

Accounts

  • List all items owned by a user.

  • View earnings and statistics about item transactions ListingsEarnings

  • View all current and upcoming rentals booked in the site and also review past transactions

  • Rentals

Payments: Stripe Integration

  • Checkout Session - Rent an Item: Users are able to rent an item or return to the app to cancel the checkout process.

checkoutSession-faster-GIF

  • Setup a Connected Account: Users are able to create a Stripe connected account to be paid directly when an item of theirs is rented out through the checkout process. They can return to the app at different stages of creating the account without having to start from the beginning each time.

setupStripeAccount

  • Refund: Users are able to cancel a rented out item before the start date and recieve an immediate refund.

refundGIF


Tech Stack

Languages

Frontend

Backend!

Database

Testing

DevTools

Deployment

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages