Compare commits

..

6 Commits

Author SHA1 Message Date
421e40e4a2 FIX: readme formating
All checks were successful
Deploy API / build-and-deploy (push) Successful in 2m30s
2026-05-01 12:33:15 +02:00
083b5559c9 FIX: readme formating 2026-05-01 12:31:41 +02:00
801b9e9066 FIX: readme formating
All checks were successful
Deploy API / build-and-deploy (push) Successful in 2m30s
2026-05-01 12:20:24 +02:00
4043f9d032 README + Clean up
All checks were successful
Deploy API / build-and-deploy (push) Successful in 23s
2026-05-01 12:17:25 +02:00
e8b6a392a1 FIX: docker file cleanup 2026-05-01 12:17:25 +02:00
Rominou
659121c71c Merge pull request 'multi-hotel-refactor' (#3) from multi-hotel-refactor into master
Some checks failed
Deploy API / build-and-deploy (push) Failing after 3m4s
Reviewed-on: http://79.137.75.155:3000/Rominou/hotel_api/pulls/3
2026-03-11 13:32:42 +00:00

117
README.md
View File

@@ -1,49 +1,49 @@
# hotel-api-rs # hotel-api-rs
##Description ## Description
Ce projet est un proof of concept servant de terrain d'expérimentation pour un outil interne destiné à des hotels. Ce projet est un proof of concept servant de terrain d'expérimentation pour un outil interne destiné à des hotels.
Objectif: ### Objectif:
-Petite échelle: ~50 hôtels maximum, ~5 utilisateurs par hôtel - Petite échelle: ~50 hôtels maximum, ~5 utilisateurs par hôtel
-Facilité de maintenance, y compris pour des utilisateurs peu à l'aise avec Linux - 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 : Ce projet m'a persmis de découvrir et mettre en pratique :
-Rust (API backend) - Rust (API backend)
-Authentification JWT - Authentification JWT
-Hash de mots de passe(Argon2) - Hash de mots de passe(Argon2)
-WebSockets (temps réel) - WebSockets (temps réel)
-Docker - Docker
-GitActions - GitActions
-SQlite - SQlite
##Fonctionalités ## Fonctionalités
-CRUD (rooms, inventory, chat) - CRUD (rooms, inventory, chat)
-Authentification : - Authentification :
-Refresh token - Refresh token
-Session token - Session token
-Notifications en temps réel(WebSocket) - Notifications en temps réel(WebSocket)
-Chat en temps réel - Chat en temps réel
##Démo ## Démo
Une interface de démonstration est disponible ici: Une interface de démonstration est disponible ici:
https://mallardromain.com/hotel-demo/ https://mallardromain.com/hotel-demo/
##Installation ## Installation
###Local ### Local
``` ```
cargo run cargo run
``` ```
-Les bases SQLite sont présentes par défaut dans `/db` - Les bases SQLite sont présentes par défaut dans `/db`
-Port par défaut : 7080(configuré dans `main.rs`) - Port par défaut : 7080(configuré dans `main.rs`)
###Docker ### Docker
``` ```
docker run -d \ docker run -d \
@@ -52,56 +52,51 @@ docker run -d \
``` ```
Notes: Notes:
-Il est nécessaire de copier les bases de donner par défaut dans le volume - 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 - 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: - Valeur de JWT_SECRET pour les utilisateur présent sur les bases de donnée par défault:
`your_jwt_secret_key` - `your_jwt_secret_key`
##Architecture ## Architecture
###Routing ### Routing
-Point d'entrée: `./src/routes/mod.rs` (utilié dans le `./main.rs`) - Point d'entrée: `./src/routes/mod.rs` (utilié dans le `./main.rs`)
-Organisation par domaine: - Organisation par domaine:
-chaque module posséde son propre `routes.rs` - chaque module posséde son propre `routes.rs`
###Modules principaux ### Modules principaux
-`.src/rooms`,`.src/inventory` et `.src/chat` sont principalement de la logique CRUD - `.src/rooms`,`.src/inventory` et `.src/chat` sont principalement de la logique CRUD
###Utils ### Utils
-`src/utils/db_pools.rs` - `src/utils/db_pools.rs`
Getsion des connexions aux bases SQLite de chaque hôtels - Getsion des connexions aux bases SQLite de chaque hôtels
-`.src/utils/websocket.rs` - `.src/utils/websocket.rs`
Implémentation des WebSockets: - Implémentation des WebSockets:
-Notification temps réel - Notification temps réel
-chat (émission/reception) - chat (émission/reception)
-`.src/utils/auth.rs` - `.src/utils/auth.rs`
-Hash/vérification des mots de passe(Argon2) - Hash/vérification des mots de passe(Argon2)
-Génération et validation des JWT - Génération et validation des JWT
-Pré-traitement des tokens - Pré-traitement des tokens
##Authentification ## Authentification
Flow: Flow:
1. Obtenir un "refresh token" - 1. Obtenir un "refresh token"
`GET /auth/get_refresh` `GET /auth/get_refresh`
- 2. Obtenir un session token
2. Obtenir un session token
`POST /auth/login_refresh_token` `POST /auth/login_refresh_token`
- 3. Ouvrir une connexion WebSocket
3. Ouvrir une connexion WebSocket
`/auth/ws/YourToken` `/auth/ws/YourToken`
##Ce que j'ai appris ## Ce que j'ai appris
-Utilisation du framework "Axum" - Utilisation du framework "Axum"
-Gestion de payload des requète explicite et stricte - Gestion de payload des requète explicite et stricte
-Gestion des websocket plus complexe - Gestion des websocket plus complexe
-Dockerisation simple - Dockerisation simple
-CD simple (déploiment automatique sur un VPS linux) - CD simple (déploiment automatique sur un VPS linux)