52 lines
2.3 KiB
Markdown
52 lines
2.3 KiB
Markdown
# Projet Web Rust — Axum + Leptos
|
|
|
|
## Stack technique
|
|
- Backend : Axum (serveur HTTP)
|
|
- Frontend : Leptos (SSR/WASM)
|
|
- Langage : Rust (édition 2021)
|
|
- Build : cargo + trunk (pour Leptos)
|
|
|
|
## Niveau développeur
|
|
- Débutant en Rust — toujours expliquer les concepts Rust utilisés
|
|
- Préférer du code commenté avec les raisons des choix
|
|
|
|
## Conventions
|
|
- Utiliser `thiserror` pour la gestion d'erreurs
|
|
- Utiliser `tracing` pour les logs (pas `println!`)
|
|
- Séparer backend (`src/server/`) et frontend (`src/client/`)
|
|
- Nommer les composants Leptos en PascalCase
|
|
|
|
## Commandes utiles
|
|
- Build backend : `cargo build`
|
|
- Dev frontend : `trunk serve`
|
|
- Tests : `cargo test`
|
|
- Lint : `cargo clippy`
|
|
|
|
## Règles importantes
|
|
- Ne jamais utiliser `unwrap()` en production — toujours `?` ou `.expect("message clair")`
|
|
- Toujours expliquer les lifetimes si elles apparaissent
|
|
- Préférer les types idiomatiques Rust (`Option`, `Result`)
|
|
- Le code généré devra suivre le conventions standard, le code et les commentaires sont rédigés en anglais.
|
|
|
|
## Git & Commits
|
|
- Committer chaque changement fonctionnel terminé (ne pas accumuler)
|
|
- Format du message : `type(scope): description courte en anglais`
|
|
- Types autorisés : `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`
|
|
- Exemples :
|
|
- `feat(auth): add JWT middleware`
|
|
- `fix(api): handle missing user gracefully`
|
|
- `chore(deps): update axum to 0.8`
|
|
- Ne jamais committer du code qui ne compile pas (`cargo check` avant)
|
|
- Une fonctionnalité = une branche = une PR
|
|
- Branches : `feature/<nom>`, `fix/<nom>`, `chore/<nom>`
|
|
|
|
## Architecture
|
|
- Deux databases possible, postgresql ou sqlite. Le choix dois se faire par la configuration de l'application.
|
|
- Un hote possede un nom, une IP, des ports ouverts
|
|
- Les ports peuvent avoir une description pour indiquer quel est le protocole le plus probable d'être utiliser sur ce port (ex: 22 - SSH, 53 - DNS, 80 - HTTP, 443 - HTTPS)
|
|
- Un port peut être associé à une application, l'association n'est pas strict car un port peut être utilisé par plusieurs applications.
|
|
- Une application possede un nom, un ou plusieurs ports.
|
|
- Un réseaux est définit par son nom et son CIDR (ex: 192.168.1.0/24)
|
|
- L'application peut gérer plusieurs réseaux distinct.
|
|
- Chaques hôtes doit appartenir au réseaux dans lequel il est définit.
|