- CSS 34.1%
- Rust 32.2%
- SCSS 17.8%
- Shell 9.5%
- Fluent 3.4%
- Other 3%
| .cargo | ||
| assets | ||
| docs/frontend/css | ||
| packages | ||
| scripts | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .stylelintrc.json | ||
| AGENTS.md | ||
| ARCHITECTURE.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| clippy.toml | ||
| default.conf.template | ||
| Dioxus.toml | ||
| Dockerfile | ||
| LICENSE | ||
| README.md | ||
| STRUCTURE.md | ||
my_rusty_dioxus_boilerplate_static
Boilerplate Dioxus 0.7 fullstack (SSR + WASM) avec architecture hexagonale (crates domain / application / infrastructure), backend Postgres 17 et Valkey.
🚀 Démarrage rapide
# Installer dx CLI (si pas déjà fait)
curl -sSL http://dioxus.dev/install.sh | sh
# Servir en dev (fullstack)
dx serve --package web
# Build de production (sortie : backend/bin/web/)
scripts/cross-build.sh
# Ou manuellement :
dx bundle --package web --release --out-dir backend/bin/web
# Build de l'image Docker
docker build -t my-rusty-app:latest .
Voir docs/README.md pour l'index complet et docs/PROJECT_AUDIT_2026.md pour l'historique des fixes de sécurité.
📂 Structure
my_rusty_dioxus_boilerplate_static/
├── Cargo.toml # Workspace
├── dx.toml # Config Dioxus CLI
├── packages/
│ ├── web/ # Cible fullstack (SSR + WASM)
│ ├── ui/ # Composants partagés (i18n, routes, etc.)
│ └── api/ # Server functions (#[post] / #[get])
├── crates/
│ ├── domain/ # Cœur métier (pur, zéro dépendance externe)
│ ├── application/ # Use cases + services
│ ├── infrastructure/ # Adapters (DB, SMTP, etc.)
│ ├── entity/ # Schémas SeaORM
│ ├── migration/ # Migrations SeaORM
│ └── backend/ # Binaires (create_admin, seed, etc.)
├── config/ # config-rs settings.toml
├── scripts/ # dev-runner.sh, generate-sitemap, etc.
├── docs/ # Documentation centralisée
├── Dockerfile # Image Docker fullstack (multi-stage)
│ # Note: dioxus-builder:latest vit sur le serveur
│ # (/opt/Dockerfile.builder), pas dans ce repo.
└── docker-compose.yml # Prod : postgres + valkey (Dokploy Compose Stack)
🛠 Stack
- Frontend : Dioxus 0.7.9, Rust/WASM, SCSS
- Backend : Tokio 1.52, Axum 0.8, sqlx 0.8, lettre (SMTP), mailgen (emails)
- DB : PostgreSQL 17 + SeaORM 2.0
- Cache : Valkey 8 (Redis-compatible)
- Architecture : Hexagonale (ports & adapters)
🔐 Sécurité
Voir docs/backend/security-audit-2026.md pour le détail des 18 fixes de sécurité appliqués.
📜 Licence
MIT — voir LICENSE.
Le tout s'est fait en Rust, wasm et SCSS/css. Admin : admin@localhost / Admin123! — Demo : user@localhost / Demo123!
- Bootstrap production Nécessaire une seule fois après le premier déploiement :
Migrations DB
docker exec /usr/local/app/migration
Création du premier admin (CLI only — pas d'endpoint web)
docker exec /usr/local/app/create_admin docker exec -it dokploy_db psql -U dokploy -d dokploy -c "UPDATE compose SET "appName" =
Admin : admin@localhost / Admin123! — Demo : user@localhost / Demo123!
cargo run -p backend --bin seed --features server
Tu vas faire un audit systématique complet de l'application Dioxus 0.7
Méthodologie :
- Tu utilises Chrome DevTools (playwright_browser ou chrome-devtools) pour naviguer sur http://localhost:8080
- Tu ne redémarres JAMAIS le serveur (dx serve tourne déjà dans un autre terminal)
- Tu documentes TOUT dans deux fichiers : TEST_BOARD.md — roadmap des bugs priorisés (High/Medium/Low) TEST_LOG.md — entrée détaillée par bug : contexte, steps pour reproduire, ce qui se passe vs ce qui devrait, cause probable, correctif proposé
- Tu ne fixes RIEN pendant la phase d'audit, tu documentes seulement
- Après audit complet, tu fixes tout en un seul batch (sans recompilation entre chaque fix)
- Puis tu refais un passage de vérification pour chaque bug corrigé
Ce que tu dois tester (dans cet ordre) :
- ✅ La page se charge sans erreur console ?
- ✅ Chaque lien/bouton est cliquable ?
- ✅ Les formulaires (contact, login, register) postent sans crash WASM ?
- ✅ Les messages d'erreur sont clairs et traduits (i18n) ?
- ✅ Le rendu visuel est cohérent (espacement, alignement, responsive) ?
- ✅ Le code rfrfont end et backend est bien lié? et et le frontend lié à sa soiurce de vérité ?
-
Dead code / non-câblé :
- Y a-t-il des composants importés mais jamais utilisés ?
- Des fonctions API (server functions) qui ne sont jamais appelées depuis le frontend ?
- Des routes définies dans Route enum qui n'ont pas de page correspondante ?
- Des imports CSS/SCSS inutilisés ?
- Des props de composants qui ne sont jamais passées ?
-
Messages d'erreur : Tous les messages visibles par l'utilisateur doivent être :
- cle i18n puis traduits comme dans Personal_Projects/my_rusty_dioxus_boilerplate/packages/ui/src/i18n
- Précis (pas "une erreur est survenue")
- Traduits via i18n FTL keys
Tous les messages d'erreur/validation qui contiennent une valeur numérique codée en dur (30, 8, 1024, 3, 20, etc.) doivent être paramétrisés : la valeur lue depuis une constante centralisée dans le code, et le message FTL/API utilise une variable ({$n}, {$min}, {$max}) pour s'adapter automatiquement si la constante change
tu ne compile pas durant les tests puisque tu va Rapportes dans TEST_BOARD.md la liste priorisée, et dans TEST_LOG.md le détail complet avec les pbs et correctifs proposés que l'on fera une fois les tests finis, tu diras s'il y a des codes orphelin qui n'on pas été cablé et ceux qui vraiment sont mot et qui ne peuvent en aucun cas etre cablés ; regarde aussi si le frot et le backend sotn cablés ou non et aussi vérifié que "/Users/toto/Desktop/Code/Personal_Projects/paarroo_mcp" a été respecté
pour les outils Chrome DevTools MCP : take_snapshot (arbre a11y), list_console_messages, click, fill, evaluate_script, navigate_page, take_screenshot WASM analysis : wasm-objdump, wasm2wat, wasm-tools, dwarfdump, rg pour analyser le binaire WASM compilé Binary analysis : strings, xxd, readelf-like sur le WASM (wasm-objdump -x, -d, -s) Dependency analysis : cargo metadata, Cargo.lock inspection, rust-mcp-server (cargo-tree, cargo-info, workspace-info) DWARF debugging : dwarfdump sur le WASM pour tracer les call sites de panique Source analysis : grep, read, glob, rust-mcp-server (cargo-check, cargo-clippy)