Rental - Plateforme de location de voitures

vues ​

Introduction

Rental est née de la nécessité de créer une solution pratique et efficace pour la location de voitures, répondant à un exercice de diplôme pour développeurs full stack. Conçue en seulement 24 heures, cette plateforme permet une recherche facile de véhicules par ville, modèle et marque, offrant une réponse rapide aux besoins de mobilité urbaine.

Objectifs du Projet

L'objectif principal de Rental était de développer une interface intuitive permettant aux utilisateurs de louer des voitures facilement. Le challenge de le faire en 24 heures a ajouté une dimension de rapidité et d'efficacité à la mission, tout en intégrant des fonctionnalités essentielles pour une expérience utilisateur optimale.

Technologies Utilisées

  • Ruby on Rails : Pour la gestion du backend et la logique métier.
  • JavaScript : Pour dynamiser l'interface utilisateur.
  • Bootstrap : Pour le design et la mise en page.
  • PostgreSQL : Base de données pour stocker les données des utilisateurs et des réservations.

Défis et Solutions

Le principal défi était le délai de 24 heures imposé pour le développement, qui exigeait une grande efficacité et une priorisation stricte des fonctionnalités. De plus, l'intégration d'options avancées comme la prise de photo pour lister une voiture était complexe mais essentielle. Pour surmonter ces défis, j'adopté une approche modulaire, permettant d'ajouter rapidement des fonctionnalités sans compromettre la qualité globale de l'application.

Configuration et Structure du Projet

Rental est structurée pour faciliter la navigation et l'utilisation. Les utilisateurs peuvent créer des comptes, rechercher des véhicules, et réserver directement sur la plateforme. L'interface est simple mais complète, avec des fonctionnalités claires pour la gestion des réservations et la visualisation des détails des véhicules.

Extrait de Code: Seed Script

seed.rb
# Ce script popule la base de données avec des voitures et des réservations de manière dynamique
CITIES.each do |city|
  selected_brands.each do |brand|
    selected_models.each do |model|
      car = Car.new({
        brand: brand,
        model: model,
        year_of_production: Faker::Vehicle.year,
        address: "#{Faker::Address.street_address}, #{city}",
        city: city,
        price_per_day: rand(50..350)
      })
      user = users.sample
      car.user = user
      if ENV["CLOUDINARY_URL"]
        file = URI.open(IMAGES_URL.shuffle.pop)
        car.photo.attach(io: file, filename: "#{rand(1000)}.png", content_type: "image/png")
      end
      car.save!
      puts "Créé #{car_counter} voitures"
    end
  end
end
puts "----- Fin de la création des voitures -----"
 
puts "----- Création de 25 réservations -----"
10.times do
  duration = rand(1..5).to_i
  car = Car.all.sample
  existing_bookings = car.bookings.order(:starts_at)
  start_date = Date.today
  existing_bookings.each do |booking|
    break unless start_date >= booking.starts_at && start_date < booking.ends_at
    start_date = booking.ends_at + 1
  end
  end_date = start_date + duration.days
  new_booking = Booking.new({
    car: car,
    starts_at: start_date,
    ends_at: end_date
  })
  new_booking.user = users.sample
  new_booking.save!
end
puts "----- Fin de la création de 25 réservations -----"

Réflexions

Le développement de Rental a été une expérience extrêmement enrichissante, mettant à l'épreuve mes compétences en développement rapide et mes capacités à intégrer des fonctionnalités complexes dans un laps de temps très court. Ce projet a non seulement affirmé mes compétences en tant que développeur full stack mais a également souligné l'importance de la planification et de l'adaptabilité dans le développement de logiciels.

Project image