Skip to content

🏠 full-stack web-application built with Ruby's Sinatra framework. The project was built in a team of four to user story specifications provided by Makers.

Notifications You must be signed in to change notification settings

MattDawson2020/in_the_airbnb_tonight

Repository files navigation

MakersBnB

Challenge:

Build a web application clone of AirBnB that allows users to list spaces they have available, and to hire spaces for the night.

By the end of the week, the goal is to be able to answer "yes" to the week's primary question:

  • Can you, with only a specification to guide you, work as part of a team to build a web app?

 

Completed Features:

  • Sign up / Log in / Log out
  • Add a property
  • View a property
  • Book a property - see pending and confirmed booking requests
  • Message sent to owner account upon rental request
  • Message sent to renter after rental request approval

 

Tech Stack

Frontend

  • HTML
  • CSS

Backend

  • Ruby
  • Sinatra web framework
  • PostgreSQL

Testing

  • RSpec
  • Capybara

 

How to install and run

 

Project Setup

git clone https://github.com/MattDawson2020/in_the_airbnb_tonight.git

bundle

Database Setup

rake setup

Run App

App is hosted on localhost:9292

rackup

Run Tests

rspec

Run Linting

rubocop

 

User Interface Flow

Sign up
Flash error if email used is not unique

Sign in

Listings homepage
List a new property
View a property
Request to rent a property
Booking status set to pending review

Dates in past trigger error

Property request message received Property owner messages view

Property request approved Renter messages view

Booking status updated
Logout

 

Planning

Project Management

Trello board

 

Specification

Headline
  • Any signed-up user can list a new space.
  • Users can list multiple spaces.
  • Users should be able to name their space, provide a short description of the
  • space, and a price per night.
  • Users should be able to offer a range of dates where their space is available.
  • Any signed-up user can request to hire any space for one night, and this should be approved by the user that owns that space.
  • Nights for which a space has already been booked should not be available for users to book that space.
  • Until a user has confirmed a booking request, that space can still be booked for that night.
Nice-to-haves
    Users should receive an email whenever one of the following happens:
  • They sign up
  • They create a space
  • They update a space
  • A user requests to book their space
  • They confirm a request
  • They request to book a space
  • Their request to book a space is confirmed
  • Their request to book a space is denied

  • Users should receive a text message to a provided number whenever one of the following happens:
  • A user requests to book their space
  • Their request to book a space is confirmed
  • Their request to book a space is denied

  • A ‘chat’ functionality once a space has been booked, allowing users whose space-booking request has been confirmed to chat with the user that owns that space
  • Basic payment implementation though Stripe.

 

Outline of MVP

  • Users can sign up/in/out
  • Signed up user can list a space
  • Signed up user can request to rent a space
  • Signed up user can approve or deny a booking request on their listing
  • Signed up user can see their booking confirmed
  • Basic styling

 

User Stories

CREATE ACCOUNT

As a user 
so I can manage my bookings
I can sign up to MBNB
 
As a user 
so I can manage my account
I can sign in and out of MBNB
LISTING
 
As an owner 
So I can advertise my property
I can add a property listing to MBNB
 
As an owner 
So I can make my property listing distinctive
I can add descriptive attributes to a property listing
 
As an owner 
So I can advertise all my properties
I can add multiple property listings to MBNB
RENTING
 
As a renter
So I can plan my accommodation
I can look at properties to hire
 
As a renter
So I can get accomodation
I can submit a request to hire a property
 
As an owner
So I can rent my property
I can view and approve rental requests
 
As a renter
So I know that my request has been approved
I can see a confirmation that I have been approved to book
CALENDAR / AVAILABILITY
 
As an owner 
So I can display the availability of my property
I can display a range of dates for when the property is available 
 
As a user
So that I can book available spaces
I can see when a property is already booked/unavailable
 
As an owner
So that my property isn’t double booked
Once a booking is confirmed my property becomes unavailable for those dates
 
As an owner
So that I can maximise my business opportunities
I can continue to advertise my property as available until booking is confirmed

 

Domain Model

Create an account user stories
Create a listing user stories
Rent a property user stories

 

Reflections

 

Built by:

 

About

🏠 full-stack web-application built with Ruby's Sinatra framework. The project was built in a team of four to user story specifications provided by Makers.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •