Skip to content

JoshHil97/makersbnb-case-study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

🏡 MakersBnB — Accommodation Booking Platform

A full-stack Sinatra, Ruby & PostgreSQL project built at Makers Academy

MakersBnB is an Airbnb-style accommodation booking platform that allows users to list spaces, view available properties, request bookings, and manage reservations.
It was built over a week in a team of 4 using pair programming, TDD, and Agile principles.

Repository:
👉 https://github.com/JoshHil97/makersbnb-jh


🚀 Overview

Users can:

  • Register an account
  • Log in securely
  • Create and publish property listings
  • Browse all available listings
  • Request to book a space
  • Manage booking requests

Built using:

  • Ruby
  • Sinatra
  • PostgreSQL
  • ERB templates
  • RSpec (TDD)
  • Capybara (feature tests)

📸 Screenshots

🔐 Login Page

Login

🏙️ Listings Page

Listings

📅 Booking Modal

Booking Modal

📊 Bookings Dashboard

Bookings Dashboard


🎯 My Contributions

🔹 Database & Schema Design

  • Designed the full PostgreSQL relational schema
  • Created tables for users, listings, and bookings
  • Implemented foreign keys + referential integrity
  • Normalised tables for cleaner queries
  • Wrote SQL queries for:
    • availability checks
    • retrieving user listings
    • booking clash prevention

🔹 Backend (Ruby + Sinatra)

  • Implemented core routes:
    • view listings
    • create listings
    • create bookings
    • view booking requests
  • Built repository classes for clean DB access
  • Added parameter validation & error handling
  • Ensured MVC pattern throughout the project

🔹 Authentication & Sessions

  • Built sign-up + login flows
  • Added hashed passwords
  • Session-based authentication
  • Protected routes for logged-in users
  • Redirects + flash messages for errors

🔹 Booking Logic

  • Users select availability dates
  • Booking request created and linked to listing
  • Listing owner can approve or reject the request
  • SQL used to detect date conflicts

🔹 Testing (RSpec + Capybara)

  • Wrote:
    • unit tests (repositories, models)
    • integration tests (routes/controllers)
    • feature tests (full user flows)
  • Practised red-green-refactor
  • Pair programmed test-first features

🔹 Agile & Collaboration

  • Daily standups
  • Pair rotations
  • Git branching workflow
  • PR reviews
  • Kanban task management

🧠 Key Technical Skills Demonstrated

  • Full CRUD development
  • MVC architecture with Sinatra
  • SQL schema design & migrations
  • Secure authentication with sessions
  • Writing clean, reusable Ruby code
  • Test-driven development with RSpec
  • Handling cross-team merge conflicts
  • Building a real product under time pressure

🏗️ Features

1. User Accounts

  • Create account
  • Secure login
  • Persistent session
  • Private dashboard

2. Property Listings

  • Add new listing
  • View all listings
  • Price, description, availability fields
  • Listings tied to the current user

3. Booking Requests

  • Send booking request for any listing
  • Select date range
  • Owner receives booking request
  • Owner can accept or decline
  • Availability enforced by SQL rules

4. Database Logic

  • Listing belongs to a user
  • Booking belongs to listing + requester
  • Availability determined by DB
  • Everything persists in PostgreSQL

🔧 Running Locally

1️⃣ Install dependencies

bundle install

About

Case study of a MakersBnB group project (Python, Flask, PostgreSQL)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors