Check out the live app here.
For design documentation, see wiki here.
Quick Links:
Introduction
Functionality and Features
Running the Project
Terra l'Hotel is a pixel perfect full stack clone of the Tablet Hotels website from 2022. It is created for educational purposes only. Please do not enter any sensitive data while exploring Terra l'Hotel.
Note as of Nov. 2024: Ruby and Ruby on Rails versions used in this project are deprecated and no longer compatible with the Heroku platform, preventing updates to build on their platform. Some images/reservations/reviews are no longer functional until the Ruby/Rails versions are updated or I've completed migration to a different backend. In the meantime, the demo animation above demonstrates the functionality and notes have been added to run the project for those who would like to interact with the full project.
Edit: Ruby and Rails versions have been updated. Heroku deployment now fully functional. [Nov. 23.2024]
- Frontend:
React and Redux
react-redux
redux-thunk
react hooks
- Backend:
Ruby on Rails
bcrypt
- user authentication
- Database:
PostgreSQL
- Languages
Javascript
Ruby
HTML and CSS
- Bundlers and Compilers
webpack
- module bundlerbabel
- JavaScript ES6 compliler
- Additional APIs:
Google Maps API
- Hosting:
Heroku
There are completed features for Terra l'Hotel:
User
authenticationHotel
listing and detailsReservation
creation, lists, editing and cancellationReview
creation, lists, editing and deletion
Key features for the completed project, including 2 full CRUD
cycles:
Users are able to register for an account, login, and logout as needed on the website. The user authentication on the backend uses Ruby on Rails with BCrypt to secure password information.
- User authentication - register, signin, logout
- Ability to:
- View
hotels and hotel details
- Create
, Read
, Update
and Destroy
reservations
- Create
, Read
, Update
and Destroy
reviews
- Favorite
hotels
Users are able to search, view listings and details.
Searchable
by hotel name, city, state, or country- Listings can be further filtered
Show
hotel details- Basic information: name, location, description
- Accomadation informtion: amentities, total number of rooms at the property, room occupancy and size
- Media: hotel and room images, location on Google Maps
Users are able to create, read, update and destroy reservation entries.
- Reservation dates are
selectable
in the hotel details page to book a hotel room - Reservations can be edited and cancelled from the reservation listing page
- To create a reservation, a user must be logged in
- User is redirected to reservation listings after booking
- Hotel information for booking is dervived from the hotel details page, not the user input
Users are able to create, read, update and destroy review entries. Users can view all reviews for any hotel, and only edit and delete their own reviews.
- Reviews for a hotel are shown on the hotel's details page
- Reviews for a hotel can be written from the user's reservation page
- Reviews are shown and can be edited or deleted from the user's reviews listing page
- To create a reservation, a user must be logged in and the dates of the stay must be before the current date
On the home page, there is a search form where users are able to search for hotels by name or location (city, state, and country). If the search returns zero entries, the web application will return all listings available in the database.
If the project is cloned and you want to run it locally, a PostgreSQL server must be set up and seeded using:
bundle exec rails db:create db:migrate
bundle exec rails db:seed
Two terminals are needed to run the Rails server and to start npm:
rails s
and
npm run watch
The project can then be viewed at localhost:3000
.