{"id":14955302,"url":"https://github.com/fmanimashaun/book-car-api","last_synced_at":"2026-02-13T04:17:22.376Z","repository":{"id":222136597,"uuid":"756287895","full_name":"fmanimashaun/book-car-api","owner":"fmanimashaun","description":"BookCar RESTful API for the BookACar reservation application, enabling car data management, reservations, and user authentication. Developed as the Microverse Full-Stack Web Development Capstone Project, demonstrating Ruby on Rails, React, database design, API development, and collaboration skills.","archived":false,"fork":false,"pushed_at":"2024-03-01T17:01:35.000Z","size":5964,"stargazers_count":1,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-05-13T14:46:35.069Z","etag":null,"topics":["api","cancancan","devise","devise-jwt","postgersql","rails-api-backend","rails7","rspec-testing","rswag-api"],"latest_commit_sha":null,"homepage":"","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/fmanimashaun.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":"2024-02-12T11:17:20.000Z","updated_at":"2024-07-24T11:17:41.000Z","dependencies_parsed_at":"2024-09-29T06:17:47.021Z","dependency_job_id":null,"html_url":"https://github.com/fmanimashaun/book-car-api","commit_stats":{"total_commits":169,"total_committers":4,"mean_commits":42.25,"dds":0.5976331360946745,"last_synced_commit":"a78b808c39b1b2bd25b714821bd2f0d5cec344ad"},"previous_names":["fmanimashaun/book-a-car-api","fmanimashaun/book-car-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fmanimashaun/book-car-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmanimashaun%2Fbook-car-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmanimashaun%2Fbook-car-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmanimashaun%2Fbook-car-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmanimashaun%2Fbook-car-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fmanimashaun","download_url":"https://codeload.github.com/fmanimashaun/book-car-api/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmanimashaun%2Fbook-car-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272922272,"owners_count":25015766,"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","status":"online","status_checked_at":"2025-08-30T02:00:09.474Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["api","cancancan","devise","devise-jwt","postgersql","rails-api-backend","rails7","rspec-testing","rswag-api"],"created_at":"2024-09-24T13:10:57.251Z","updated_at":"2026-02-13T04:17:22.290Z","avatar_url":"https://github.com/fmanimashaun.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"screenshots/cover-invert.png\" alt=\"\" width=\"200\"  height=\"auto\" /\u003e\n\u003c/div\u003e\n\n# 📗 Table of Contents\n\n- [📗 Table of Contents](#-table-of-contents)\n- [📖 final_capstone_back_end ](#-final_capstone_back_end-)\n  - [🛠 ER Diagram ](#-er-diagram-)\n  - [💻 link to front end ](#-link-to-front-end-)\n  - [💻 link to Kanban board information ](#-link-to-kanban-board-information-)\n  - [🛠 Built With ](#-built-with-)\n    - [Tech Stack ](#tech-stack-)\n    - [Key Features ](#key-features-)\n  - [💻 Getting Started ](#-getting-started-)\n    - [Prerequisites](#prerequisites)\n    - [Setup](#setup)\n    - [Install](#install)\n    - [Database Setup](#database-setup)\n    - [Usage](#usage)\n  - [💻 Tests ](#tests-)\n  - [👥 Authors ](#-authors-)\n  - [🔭 Future Features ](#-future-features-)\n  - [🤝 Contributing ](#-contributing-)\n  - [⭐️ Show your support ](#️-show-your-support-)\n  - [🙏 Acknowledgments ](#-acknowledgments-)\n  - [❓ FAQ (OPTIONAL) ](#-faq-optional-)\n  - [📝 License ](#-license-)\n\n# 📖 BookCar Api \u003ca name=\"about-project\"\u003e\u003c/a\u003e\n\n**BookCar RESTful API** for the [BookCar](https://github.com/fmanimashaun/book-car) reservation application, enabling car data management, reservations, and user authentication. Developed as the Microverse Full-Stack Web Development Capstone Project, demonstrating Ruby on Rails, React, database design, API development, and collaboration skills.\n\n- [BookCar (Frontend) Kanban Board](https://github.com/users/fmanimashaun/projects/16)\n- [BookCar Api (Backend) Kanban Board](https://github.com/users/fmanimashaun/projects/16/views/1)\n\n**Team Members**\n\n- [Anwar Hussaini](https://github.com/M-Anwar-Hussaini)\n- [Esteban Palacios](https://github.com/Estete9)\n- [Timothy Njoroge](https://github.com/simplegoose)\n- [Tomas Esquivel](https://github.com/tomasesquivelgc)\n- [Animashaun Fisayo Micahel](https://github.com/fmanimashaun)\n\n**ER Diagram**\nThe API is designed as per the ER Diagram shown below which dictates the association of models and their relationships.\n\n\u003cimg src=\"./screenshots/ERD.png\"\u003e\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## 🛠 Built With \u003ca name=\"built-with\"\u003e\u003c/a\u003e\n\n### Tech Stack \u003ca name=\"tech-stack\"\u003e\u003c/a\u003e\n\n\u003cdetails\u003e \u003csummary\u003eProgramming Language\u003c/summary\u003e \u003cul\u003e \u003cli\u003eRuby 3.2.2\u003c/li\u003e \u003c/ul\u003e \u003c/details\u003e\n\n\u003cdetails\u003e \u003csummary\u003eWeb Application Framework\u003c/summary\u003e \u003cul\u003e \u003cli\u003eRails 7.1.2\u003c/li\u003e \u003c/ul\u003e \u003c/details\u003e\n\n\u003cdetails\u003e \u003csummary\u003eDatabase\u003c/summary\u003e \u003cul\u003e \u003cli\u003ePostgreSQL (pg gem)\u003c/li\u003e \u003c/ul\u003e \u003c/details\u003e\n\n\u003cdetails\u003e \u003csummary\u003eWeb Server\u003c/summary\u003e \u003cul\u003e \u003cli\u003ePuma\u003c/li\u003e \u003c/ul\u003e \u003c/details\u003e\n\n\u003cdetails\u003e \u003csummary\u003ePerformance Optimization\u003c/summary\u003e \u003cul\u003e \u003cli\u003eBootsnap\u003c/li\u003e \u003c/ul\u003e \u003c/details\u003e\n\n\u003cdetails\u003e \u003csummary\u003eTesting\u003c/summary\u003e \u003cul\u003e \u003cli\u003eDebug\u003c/li\u003e \u003cli\u003eFactory Bot (factory_bot_rails gem)\u003c/li\u003e \u003cli\u003eRSpec (rspec-rails gem)\u003c/li\u003e \u003cli\u003eCapybara\u003c/li\u003e \u003cli\u003eSelenium Webdriver\u003c/li\u003e \u003c/ul\u003e \u003c/details\u003e\n\n\u003cdetails\u003e \u003csummary\u003eCode Quality\u003c/summary\u003e \u003cul\u003e \u003cli\u003eRubocop\u003c/li\u003e \u003c/ul\u003e \u003c/details\u003e\n\n\u003cdetails\u003e \u003csummary\u003eDevelopment Tools\u003c/summary\u003e \u003cul\u003e \u003cli\u003eWeb Console (web-console gem)\u003c/li\u003e \u003c/ul\u003e \u003c/details\u003e\n\n\u003cdetails\u003e \u003csummary\u003eAuthentication\u003c/summary\u003e \u003cul\u003e \u003cli\u003eDevise (devise gem)\u003c/li\u003e \u003cli\u003eDevise-jwt (devise-jwt gem)\u003c/li\u003e \u003c/ul\u003e \u003c/details\u003e\n\n\u003cdetails\u003e \u003csummary\u003eAuthorization\u003c/summary\u003e \u003cul\u003e \u003cli\u003eCanCanCan (cancancan gem)\u003c/li\u003e \u003c/ul\u003e \u003c/details\u003e\n\n### Key Features \u003ca name=\"key-features\"\u003e\u003c/a\u003e\n\n- **Database Design:**\n  - Schema: Design the entities (cars, reservations, users, roles) and their relationships.\n  - Migrations: Create/modify database schema changes.\n- **Models \u0026 Associations:**\n  - Rails Models: Build Car, Reservation, User, and associated models.\n  - Image Storage: Ensure robust integration with Active Storage for car image handling.\n- **API Endpoints:**\n  - CRUD for Cars: GET (fetch car lists, details), POST (admin adds car), DELETE (admin removes car).\n  - Reservations: GET (user's reservations), POST (book a car).\n  - Authentication: Login, signup (if supported), session management.\n  - Authorization (CanCanCan): Define rules for admin-only actions.\n- **API Documentation:** Maintain concise yet informative documentation\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## 💻 Getting Started \u003ca name=\"getting-started\"\u003e\u003c/a\u003e\n\nTo get a local copy up and running, follow these steps:\n\n### Prerequisites\n\nBefore you begin, ensure you have the following prerequisites installed on your system:\n\n- Ruby: You need Ruby to run the Ruby on Rails application.\n- Bundler: Bundler is used to manage gem dependencies for your Ruby project.\n\n### Setup\n\nIn your terminal, navigate to the folder of your choice and clone the repository with the following commands:\n\n```sh\ngit clone https://github.com/fmanimashaun/book-car-api.git\n\n```\n\n### Install\n\nAfter cloning the project, change into the project directory:\n\n```sh\ncd cd book-car-api\n\nbundle install\n\n```\n\n### Credentials setup\n\nIn order to create databases and run the tests, you need to follow this steps:\n\n1. Remove `config/credentials.yml.enc` if they exist.\n2. If you use Windows run: `$env:EDITOR=\"code --wait\"; rails credentials:edit` If you use Linux run: `EDITOR=\"code --wait\" bin/rails credentials:edit`\n3. Close the editor. New master.key, credentials.yml.enc files will be generated.\n\n### Database Setup\n\nThis application uses PostgreSQL as the database. Here are the steps to set it up:\n\n1. Ensure PostgreSQL is installed on your machine and running.\n\n2. Update the config/database.yml file with your PostgreSQL username and password in the default section.\n\n3. Create the database:\n\n```bash\nrails db:create\n```\n\n4. Run migrations to set up the database schema:\n\n```bash\nrails db:migrate\n```\n \n5. Load default date to database:\n\n```bash\nrails db:seed\n```\n\nThis should start your local server on http://localhost:4000/ using `rails s`. Now, you can use the REST API client of your choice to interact with the API.\n\n__For guide on how to setup the database, refer to the [video recording](https://www.loom.com/share/b9872f0da1e8491080b5b2a54a798abd?sid=6441add3-18a9-41e8-bfb8-38e308f2287d)__\n\n__For deployment on render, you need to add your AWS credentials to the setup, see [Rails guides](https://edgeguides.rubyonrails.org/active_storage_overview.html#s3-service-amazon-s3-and-s3-compatible-apis) for assistance and additional [video guide](https://gorails.com/episodes/blog-posts-with-file-uploads-using-activestorage-and-amazon-s3)__\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Tests \u003ca name=\"tests\"\u003e\u003c/a\u003e\n\nTo run tests, navigate to the directory where the project is located on your machine, open your terminal, and follow these steps:\n\nTest Suite\nThis project contains a suite of unit tests which you can run to ensure everything is functioning as expected. To run these tests, you need RSpec installed.\n\n`bundle exec rspec ./spec/requests`\n`bundle exec rspec ./spec/models`\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## 👥 Authors \u003ca name=\"authors\"\u003e\u003c/a\u003e\n\n👤 **Fisayo Michael Animashaun**\n\n- GitHub: [@fmanimashaun](https://github.com/fmanimashaun)\n- Twitter: [@fmanimashaun](https://twitter.com/fmanimashaun)\n- LinkedIn: [Fisayo Michael Animashaun ](https://linkedin.com/in/fmanimashaun)\n\n👤 **Tomás Matías Esquivel**\n- GitHub: [@tomasesquivelgc](https://github.com/tomasesquivelgc)\n- Twitter: [@EsquivelTomas](https://twitter.com/EsquivelTomas)\n- LinkedIn: [Tomas Esquivel](https://www.linkedin.com/in/tomás-esquivel-b2160568/)\n\n👤 **Timothy Njoroge**\n- GitHub: [@simplegoose](https://github.com/simplegoose)\n- LinkedIn: [@Timothy Njoroge](https://linkedin.com/in/timothy-njoroge-mwangi)\n\n👤 *Anwar Hussaini*\n\n- GitHub: [Anwar Hussaini](https://github.com/M-Anwar-Hussaini)\n- LinkedIn: [Anwar Hussaini](https://www.linkedin.com/in/anwar-hussaini/)\n\n👤 **Esteban Palacios**\n\n- GitHub: [@Estete9](https://github.com/Estete9)\n- Twitter: [@NaughTban](https://twitter.com/NaughTban)\n- LinkedIn: [Esteban Palacios](https://www.linkedin.com/in/dev-esteban-palacios/)\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- [ ] Advanced Filtering/Search: Allow users to search/filter by:\n  - [ ]Car make and model.\n  - [ ]Specific dates with a visual calendar/picker.\n  - [ ]Features/amenities (e.g., transmission type, seating capacity).\n- [ ] User Profiles: Allow users to save preferences, view past reservations, and perhaps offer loyalty points/rewards.\n- [ ] Reviews and Ratings: A simple system for users to rate cars or provide feedback on experiences.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## 🤝 Contributing \u003ca name=\"contributing\"\u003e\u003c/a\u003e\n\nContributions, issues, and feature requests are welcome!\n\nFeel free to check the [issues page](https://github.com/fmanimashaun/book-a-car-api/issues).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## ⭐️ Show your support \u003ca name=\"support\"\u003e\u003c/a\u003e\n\nIf you like this project please feel free to send us corrections for make it better we would feel glad to read your comments.\nAnd think If you enjoy it gift us a star.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## 🙏 Acknowledgments \u003ca name=\"acknowledgements\"\u003e\u003c/a\u003e\n\n- Behance and Murat Korkmaz for the [original design](https://www.behance.net/gallery/26425031/Vespa-Responsive-Redesign)\n- [Microverse](https://www.microverse.org/) for providing the opportunity to learn in a collaborative environment.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## ❓ FAQ (OPTIONAL) \u003ca name=\"faq\"\u003e\u003c/a\u003e\n\n- **Can I use with a templeate your project?**\n\n  - Of course we would feel honored.\n\n- **Your project is free license?**\n\n  - Yeah, you can use it completely.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## 📝 License \u003ca name=\"license\"\u003e\u003c/a\u003e\n\nThis project is licensed under the MIT License - you can click here to have more details [MIT](./LICENSE).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffmanimashaun%2Fbook-car-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffmanimashaun%2Fbook-car-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffmanimashaun%2Fbook-car-api/lists"}