Romain Mallard 770c174555
All checks were successful
Deploy API / build-and-deploy (push) Successful in 2m33s
README + Clean up
2026-05-01 12:12:55 +02:00
2026-03-11 14:51:54 +01:00
2026-03-11 14:51:54 +01:00
2026-05-01 12:12:55 +02:00
2025-11-04 12:54:22 +01:00
2026-03-11 14:30:12 +01:00
2025-12-29 17:23:05 +01:00
2025-12-29 17:23:05 +01:00
2026-03-11 14:30:12 +01:00
2026-05-01 12:12:55 +02:00

hotel-api-rs

##Description

Ce projet est un proof of concept servant de terrain d'expérimentation pour un outil interne destiné à des hotels.

Objectif: -Petite échelle: ~50 hôtels maximum, ~5 utilisateurs par hôtel -Facilité de maintenance, y compris pour des utilisateurs peu à l'aise avec Linux

Ce projet m'a persmis de découvrir et mettre en pratique :

-Rust (API backend) -Authentification JWT -Hash de mots de passe(Argon2) -WebSockets (temps réel) -Docker -GitActions -SQlite

##Fonctionalités

-CRUD (rooms, inventory, chat) -Authentification : -Refresh token -Session token -Notifications en temps réel(WebSocket) -Chat en temps réel

##Démo

Une interface de démonstration est disponible ici: https://mallardromain.com/hotel-demo/

##Installation

###Local

cargo run

-Les bases SQLite sont présentes par défaut dans /db -Port par défaut : 7080(configuré dans main.rs)

###Docker

docker run -d \
-e JWT_SECRET=secret_JWT \
-v "/votre/chemin/:/app/db" \

Notes: -Il est nécessaire de copier les bases de donner par défaut dans le volume -Le scret doit obligatoirement être préciser a la création du container -Valeur de JWT_SECRET pour les utilisateur présent sur les bases de donnée par défault: your_jwt_secret_key

##Architecture

###Routing

-Point d'entrée: ./src/routes/mod.rs (utilié dans le ./main.rs) -Organisation par domaine: -chaque module posséde son propre routes.rs

###Modules principaux

-.src/rooms,.src/inventory et .src/chat sont principalement de la logique CRUD

###Utils

-src/utils/db_pools.rs Getsion des connexions aux bases SQLite de chaque hôtels -.src/utils/websocket.rs Implémentation des WebSockets: -Notification temps réel -chat (émission/reception) -.src/utils/auth.rs -Hash/vérification des mots de passe(Argon2) -Génération et validation des JWT -Pré-traitement des tokens

##Authentification

Flow:

1. Obtenir un "refresh token"

    `GET /auth/get_refresh`

2. Obtenir un session token

    `POST /auth/login_refresh_token`

3. Ouvrir une connexion WebSocket

    `/auth/ws/YourToken`

##Ce que j'ai appris

-Utilisation du framework "Axum" -Gestion de payload des requète explicite et stricte -Gestion des websocket plus complexe -Dockerisation simple -CD simple (déploiment automatique sur un VPS linux)

Description
No description provided
Readme 66 MiB
Languages
Rust 99.4%
Dockerfile 0.6%