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.
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.
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.
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.
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.
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.
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.
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.