Arc - Réservation de Chambres

vues ​

Introduction

Le projet "Arc" a été développé dans le cadre d'un challenge de 24 heures. L'objectif était de créer une plateforme permettant aux utilisateurs de rechercher et de réserver des chambres d'hôtel en fonction de la ville et de la date de séjour. Ce projet met en œuvre des technologies telles que Rails, JavaScript, Stimulus, Bootstrap, flatpickr, et Swal.

Objectifs du Projet

L'objectif principal de ce projet était de démontrer ma maîtrise du développement web en un temps limité. En mettant en place une solution fonctionnelle pour la recherche et la réservation de chambres d'hôtel, j'ai pu mettre en pratique mes compétences en JS et Rails.

Technologies Utilisées

  • Ruby on Rails : Utilisé pour le backend et l'interaction avec la base de données.
  • JavaScript & Stimulus : Rendre l'interface utilisateur interactive et dynamique.
  • Bootstrap : Utilisé pour la mise en page et le style de l'application.
  • flatpickr : Intégré pour la sélection des dates de séjour.
  • Swal : Utilisé pour afficher des messages d'alerte et de confirmation agréable visuellement.

Configuration et Structure du Projet

Le projet est configuré de manière à fournir une expérience utilisateur fluide et intuitive. Les fonctionnalités de recherche et de réservation sont facilement accessibles depuis l'interface principale de l'application.

Défis et Solutions

Le principal défi de ce projet était de respecter le délai de 24 heures tout en assurant la qualité du code et la fonctionnalité de l'application. En concentrant mes efforts sur les fonctionnalités essentielles et en utilisant des outils et des bibliothèques prédéfinis, j'ai pu relever ce défi avec succès.

Gestion Dynamique des Paramètres de Recherche

Dans ce code, j'ai utilisé les params pour récupérer les paramètres de recherche spécifiés par l'utilisateur. En fonction de ces paramètres, j'ai effectué une requête SQL pour récupérer les hôtels correspondants dans la base de données. Cette approche permet d'optimiser les performances en ne récupérant que les données nécessaires à l'affichage, ce qui garantit une expérience utilisateur réactive et agréable.

hotel_controller.rb
def index
  if params[:search] && params[:search][:city].present?
    @search_params = search_params.to_h
    @search_params[:start_date], @search_params[:end_date] = @search_params[:start_date].split(' au ')
    @hotels = Hotel.joins(:rooms).where(city: @search_params[:city]).where('rooms.capacity >= ?', @search_params[:capacity]).distinct
  else
    @hotels = Hotel.all
  end
end

Réflexions

Ce projet m'a permis de mettre en pratique mes compétences en développement web dans un environnement contraint. J'ai appris à travailler efficacement sous pression tout en maintenant la qualité du code et des fonctionnalités de l'application. Cela m'a également permis de découvrir de nouveaux outils et bibliothèques pour améliorer mes compétences techniques.

Project image