Makers Academy - Week 6 Team programming challenge

MakersBnB 🏠

Technologies: Javascript, Jasmine, Ruby, Rspec, Capybara, Sinatra, ActiveRecord, SQL, HTML, CSS, RuboCop, ESLint

Task | Collaborators | Installation Instructions | Headline Specifications | | User Stories | Domain Model | Mockup | Further improvements

space-pic

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

This challenge is the first weekly team programming challenge at Makers Academy.

Elena Beccaro Liz Daly Barri Faryad Ellie Jones David McGregor

  1. Fork this repository, clone to your local machine then change into the directory:
$ git clone git@github.com:davmcgregor/Makersbnb.git
$ cd Makersbnb
  1. Load dependencies with bundle:
$ gem install bundle
$ bundle
  1. Access to the database is controlled by an ORM, ActiveRecord. ActiveRecord rake tasks will are used to migrate the development and test databases.

To migrate the development and test databases, please run the following command:

$ rake db:create
  1. To poplulate the databases with the appropriate tables, run the following migrations:
$ rake db:migrate
$ rake db:migrate RACK_ENV=test
  1. Run the app on a local server:
$ rackup

To view the app navigate to: http://localhost:9292/

  1. Tests were written with RSpec and Capybara. To run the tests in terminal:
$ cd Makersbnb
$ rspec
  • 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.

MVP

As a user,
So I can list my space,
I would like to be able to sign up
As a user,
So I can manage my spaces,
I would like to be able to sign in
As a user,
So I can finish managing my spaces,
I would like to be able to sign out
As a user,
So I can rent my property,
I would like to list a space
As a user,
So I can manage my properties,
I would like my properties to be linked to my account

More features

As a user,
So I can manage my property,
I would like to be able to add a name, price and description
As a user,
So I can manage my properties,
I would like to be able to list multiple spaces   
As a user,
To show my space is available,
I would like to be able to specify a range of dates
As a renter,
To rent a space,
I would like to be able to see a list of spaces
As a renter,
To rent a space,
I would like to see a space's available dates
As a renter,
To rent a space,
I would like to request to book a space
As a user,
To manage my spaces,
I would like to view booking requests
As a user,
To confirm a rental,
I would like to approve a booking
As a user,
To prevent double-bookings,
I would like a space to be unavailable during booked dates 

Domain model

Mockup

  • 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.