TL;DR / Executive Summary

To gain practical experience in collaborative development, our team of six built a fully functional car rental website. The project, a clone of an existing site, was developed with a Ruby on Rails backend and a modern frontend. The system captures rental applications via a detailed form and, in its final version, integrates directly with the administrator’s management software through a shared database, creating a seamless booking workflow.

The Goal: Learning Through Collaboration

The primary objective of this project wasn’t to launch a new business, but to simulate a real-world development environment and gain hands-on experience working as a team. We chose to replicate an existing car rental website, which gave us a clear set of requirements and allowed us to focus on the technical implementation, architecture, and collaborative workflow.

Our team, including myself as one of the backend developers, consisted of six members: three backend developers, two frontend developers, and one designer. We used Telegram for communication, Google Drive for documentation, and a Scrum-like methodology with Favro for task management.

The Solution: An Iterative Walkthrough

We approached the project in two main phases, starting with a Minimum Viable Product (MVP) and later adding more advanced features.

Version 1: The Core Application

The first version focused on the essential functionality: allowing a user to book a car.

  1. Architecture: The application was hosted on a free-tier AWS instance. We used Nginx as our web server, which served a client-side frontend and communicated with a backend built on Ruby on Rails with a Puma application server.

  2. User Experience: A user visits the site, browses the list of available cars, and selects one to see more details, including a full grid of rental tariffs. They can then fill out an application form that includes a date picker, personal information fields, and form validation.

  3. The Workflow: Once the form is submitted, the Rails backend processes the data and sends a formatted email to the site administrator with the application details. The user also receives a confirmation email with their application number.

Version 2: Advanced Features and Integration

With the core functionality in place, we expanded the project to add features that would make it a more robust and professional tool.

  1. The Admin Panel: We built a dedicated admin interface where the site owner could manage the fleet of vehicles. This includes adding new cars, uploading images, and, most importantly, editing the complex rental tariffs and managing optional add-on services like child seats or a personal driver.

  2. Mobile-Responsive Design: Our designer created mockups for various screen sizes, which the frontend team used to implement a fully responsive layout for tablets and phones.

  3. Direct Software Integration: The most significant upgrade was creating a direct link to the car rental management software used by the administrator. Instead of relying on email, our Rails application now writes the application data directly into a MySQL database. The management software is configured to read from this database, allowing new applications to appear automatically in the administrator’s workflow. This was a major step up from the simple email-based system.

Final Architecture

The final system is a powerful and efficient solution. The client-side frontend interacts with the Ruby on Rails backend. The backend manages the core logic, serves data to the frontend, and writes new applications to a dedicated MySQL database. The administrator can use the custom-built admin panel to manage site content, while the rental management software syncs with the database to process bookings.

graph LR subgraph "User Interaction" User[" User"]:::actor Frontend[" Client-Side Frontend"]:::frontend end subgraph "Cloud Infrastructure (AWS)" Backend[" Ruby on Rails Backend"]:::backend AdminDB[" Admin DB"]:::database RentalDB[" Rental MySQL DB"]:::database end subgraph "Administrator's Workflow" Admin[" Administrator"]:::actor AdminPanel[" Admin Panel"]:::adminTool RentalSoftware[" Management Software"]:::adminTool end %% Define Connections User --> Frontend Frontend -->|API Calls| Backend Backend -->|Manages Cars| AdminDB Backend -->|Writes Bookings| RentalDB Admin --> AdminPanel AdminPanel -->|Manages Data| Backend Admin -->|Processes Bookings| RentalSoftware RentalSoftware -->|Syncs| RentalDB %% Define Styles classDef actor fill:#A9A9A9,stroke:#333,stroke-width:2px,color:#fff classDef frontend fill:#4A90E2,stroke:#333,stroke-width:2px,color:#fff classDef backend fill:#50E3C2,stroke:#333,stroke-width:2px,color:#fff classDef database fill:#F5A623,stroke:#333,stroke-width:2px,color:#fff classDef adminTool fill:#9013FE,stroke:#333,stroke-width:2px,color:#fff

This project was a success. It achieved its primary goal of providing our team with invaluable collaborative experience and resulted in a polished, real-world application that is ready for use.