{"id":15548308,"url":"https://github.com/prangonghose/earthbnb-backend","last_synced_at":"2025-04-23T18:27:40.872Z","repository":{"id":161759609,"uuid":"636328100","full_name":"PrangonGhose/Earthbnb-backend","owner":"PrangonGhose","description":"This web application is built to enable users browser through different houses which they can reserve on choice basis. The users can add their own houses to let other users reserve that for extra income. Users can register an account to use the website with full access with a unique username.","archived":false,"fork":false,"pushed_at":"2023-07-28T17:25:27.000Z","size":114,"stargazers_count":2,"open_issues_count":2,"forks_count":4,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-03-30T02:22:36.719Z","etag":null,"topics":["postgresql","rails-api","ruby","ruby-on-rails"],"latest_commit_sha":null,"homepage":"https://prangonghose.github.io/Earthbnb-frontend/","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PrangonGhose.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-04T15:41:36.000Z","updated_at":"2023-07-17T14:26:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"4948abcb-b4df-4a0f-9e82-2ce56f9224b3","html_url":"https://github.com/PrangonGhose/Earthbnb-backend","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrangonGhose%2FEarthbnb-backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrangonGhose%2FEarthbnb-backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrangonGhose%2FEarthbnb-backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrangonGhose%2FEarthbnb-backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PrangonGhose","download_url":"https://codeload.github.com/PrangonGhose/Earthbnb-backend/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250489296,"owners_count":21438941,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["postgresql","rails-api","ruby","ruby-on-rails"],"created_at":"2024-10-02T13:21:02.021Z","updated_at":"2025-04-23T18:27:40.852Z","avatar_url":"https://github.com/PrangonGhose.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src='./logo-w-background.svg' style=\"border-radius: 200px;\" /\u003e\n\n\u003c/div\u003e\n\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\n# 📗 Table of Contents\n\n- [📖 About the Project](#about-project)\n- [🛠 Built With](#built-with)\n  - [Key Features](#key-features)\n  - [Live Demo](#live-demo)\n- [💻 Getting Started](#getting-started)\n- [Setup](#setup)\n- [Prerequisites](#prerequisites)\n- [Install](#install)\n- [Usage](#usage)\n- [Run tests](#run-tests)\n- [📃 Kanban Board](#kanban-board)\n- [👥 Authors](#authors)\n- [🔭 Future Features](#future-features)\n- [🤝 Contributing](#contributing)\n- [⭐️ Show your support](#support)\n- [🙏 Acknowledgements](#acknowledgements)\n- [📝 License](#license)\n\n\u003c!-- PROJECT DESCRIPTION --\u003e\n\n# 📖 Project Name\n\n## EarthBnb Backend API\n\n## About this project\n\nThis web application is built to enable users browser through different houses which they can reserve on choice basis. The users can add their own houses to let other users reserve that for extra income. Users can register an account to use the website with full access with a unique username. The whole application is built in two major parts. The [Earthbnb_backend](https://github.com/PrangonGhose/Earthbnb-backend) holds code for the API backend that returns and handles the database on API request from the frontend of this website. The database working behind the screen is a relational database developed with `PostgreSQL`. The [Earthbnb_frontend](https://github.com/PrangonGhose/Earthbnb-frontend) contains the user interface of the website where the users can interact with the database. The backend of the website is created with `Ruby on Rails API` and the frontend is created with `ReactJS` and `Redux`.\n\n## 🛠 Built With \u003ca name=\"built-with\"\u003e\u003c/a\u003e\n\n![Ruby](https://img.shields.io/badge/ruby-%23CC342D.svg?style=for-the-badge\u0026logo=ruby\u0026logoColor=white) ![Rails](https://img.shields.io/badge/rails-%23CC0000.svg?style=for-the-badge\u0026logo=ruby-on-rails\u0026logoColor=white) ![Postgres](https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white)\n\n\u003c!-- Features --\u003e\n\n### Key Features \u003ca name=\"key-features\"\u003e\u003c/a\u003e\n\n\u003e Key features of the application.\n\n- A full stack webapp where users can register and sign in using a unique username.\n- Users can add, delete and browse through the reigstered houses and reserve any house on choice.\n- API endpoints `/houses` and `/houses/:id` are available publicly whereas API endpoints `/reservations` and `/reservations/:username` is private only to registered and logged in users.\n- Users will be able to reserve a house in an available date. It is made sure by the developers that a user cannot reserve a house within a date range if any other user has already reserved it.\n- Users reservation data is private to every user and none can access each others data.\n- The API returns different type of organized errors for bad requests. \n- The UI of the website is built following this [design guidelines](https://www.behance.net/gallery/26425031/Vespa-Responsive-Redesign).\n- The API is documented using `rswag` [here](./swagger/v1/swagger.yaml).\n- The databse tables are generated using this [ER diagram](./erdiagram.png).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- LIVE DEMO --\u003e\n\n## 🚀 Live Demo \u003ca name=\"live-demo\"\u003e\u003c/a\u003e\n\n Live demo is available [here](https://prangonghose.github.io/Earthbnb-frontend/).\n\n **N.B: The backend API is not available due to the restriction on the free account on Render for hosting PostgreSQl databases. As a result new account registration and viewing of the inner UI is not available in the live demo. Take a look at the UI images below.**\n\n\u003c!-- GETTING STARTED --\u003e\n\n## 💻 Getting Started\nTo clone the repository in local environment try following steps.\n\n### Prerequisites\n\n- [x] A code editor like Visual Studio Code with Git, Ruby, and Gem.\n\nYou can check if Git is installed by running the following command in the terminal.\n```\n$ git --version\n```\nLikewise for `Ruby` and `gem` for package installation.\n```\n$ ruby --version \u0026\u0026 gem --version\n```\n**Note: This project is built with `Ruby` version 3.1.3**\n### Setup\n\nClone the repository using [this link](https://github.com/PrangonGhose/Earthbnb_backend).\n\n### Install\n\nIn the terminal, go to your file directory and run this command.\n```\n$ git clone https://github.com/PrangonGhose/Earthbnb_backend\n```\n### Get into development\n\nIn the terminal, run these commands to get into development.\n```\n$ cd Earthbnb_backend\n\n$ bundle init\n\n$ bundle install (install dependencies)\n```\n**Note: You might need to update [database.yml](./config/database.yml) for development and testing environments with necessary username and password for your database in their respective positions. Also make sure to comment out _pidfile_ and _workers_ at config/puma.rb to run the server without error.**\n```\n$ rails db:create\n\n$ rails db:migrate\n\n$ rails db:seed\n\n$ rails server\n```\n### Usage \u003ca href=\"usage\" name=\"usage\"\u003e\u003c/a\u003e\n\nThis website is applicable for both mobile and desktop version.\n\n### Run Test \u003ca href=\"run-test\" name=\"run-tests\"\u003e\u003c/a\u003e\n```\n$ rails db:create RAILS_ENV=test\n\n$ rails db:migrate RAILS_ENV=test\n\n$ rails rswag\n```\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n \u003c!-- Kanban Board --\u003e\n \n ## 📃 Kanban Board \u003ca name=\"kanban-board\"\u003e\u003c/a\u003e\n\n The Kanban Board made for this project can be found [here](https://github.com/users/PrangonGhose/projects/2/views/2). The initial state of the Kanban Board can be found [here](https://user-images.githubusercontent.com/64170307/236311639-7e0ff546-f4e3-4308-ad24-4dc9de96e98c.png). There are four members in our team. Their details can be found in the [authors section](#authors).\n \u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- AUTHORS --\u003e\n\n## 👥 Authors \u003ca name=\"authors\"\u003e\u003c/a\u003e\n\n👤 **Prangon Ghose**\n\n- GitHub: [@PrangonGhose](https://github.com/PrangonGhose)\n- LinkedIn: [Prangon Ghose](https://www.linkedin.com/in/prangon-ghose/)\n\n👤 **Shinhyo Belliard**\n\n- GitHub: [@ShinhyoBelok](https://github.com/ShinhyoBelok)\n- Twitter: [@Bell_iraki](https://twitter.com/Bell_iraki)\n- LinkedIn: [LinkedIn](https://www.linkedin.com/in/shinhyo-belliard-okazaki-807a38249/)\n\n👤 **Glenda Diaz**\n\n- GitHub: [@gjuliao](https://github.com/Gdiazdiaz)\n- LinkedIn: [Glenda Diaz](www.linkedin.com/in/glendadiazz)\n\n👤 **Victor Gonzalez**\n\n- GitHub: [@Vgonma](https://github.com/Vgonma)\n- LinkedIn: [Victor Gonzalez](https://www.linkedin.com/in/victor-manuel-gonzalez-massimi-a77265124/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## 🔭 Future Features \u003ca name=\"future-features\"\u003e\u003c/a\u003e\n\n- [ ] **Add animation to create smooth user experience.**\n- [ ] **Enable only admin users to add or delete houses.**\n- [ ] **Implement proper user authentication from the front-end to the server.**\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTRIBUTING --\u003e\n\n## 🤝 Contributing \u003ca name=\"contributing\"\u003e\u003c/a\u003e\n\nContributions, issues, and feature requests are welcome! Add suggestions by opening new issues.\n\nFeel free to check the [issues page](https://github.com/PrangonGhose/Earthbnb_backend/issues).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- SUPPORT --\u003e\n\n## ⭐️ Show your support \u003ca name=\"support\"\u003e\u003c/a\u003e\n\nGive a ⭐️ if you like this project!\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- ACKNOWLEDGEMENTS --\u003e\n\n## 🙏 Acknowledgments \u003ca name=\"acknowledgements\"\u003e\u003c/a\u003e\n\nAuthors would like to thank:\n- [Murat Korkmaz](https://www.behance.net/muratk)\n- [Microverse](https://www.microverse.org/)\n- Code Reviewers\n- Coding Partners\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- LICENSE --\u003e\n\n## 📝 License \u003ca name=\"license\"\u003e\u003c/a\u003e\n\nThis project is [MIT](./LICENSE) licensed.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprangonghose%2Fearthbnb-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprangonghose%2Fearthbnb-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprangonghose%2Fearthbnb-backend/lists"}