94f89be605d6009a48fb3e122d4cc5dbcf4ea9c4
Security config (3.1): - config/session.ts: cookie.secure now follows app.inProduction instead of being hardcoded to false - config/shield.ts: enable CSP with baseline directives compatible with Vite dev server and Inertia (self + @viteDevUrl/@viteHmrUrl) Frontend typing (3.2): - Replace 'any' props with concrete types (Computer, Component, ComponentType, ComputerState) across computers/*.vue and components/*.vue, using the existing inertia/pages/types/UITypes.ts definitions - Fix UITypes.ts: export ComponentType/ComputerState, switch from interface to type (interfaces are never assignable to Inertia's ComponentProps index signature), drop the stale componentTypeId/componentStateId fields that didn't match the actual Lucid schema (real field is typeId, no component state exists) - Add an asPageProp() boundary cast in the two controllers: Lucid's serialize() returns a loosely typed ModelObject that isn't structurally assignable to the concrete page prop shapes (and the inertia/** tree is excluded from the backend tsconfig, so real types can't be imported directly across that boundary) UTF-8 mojibake fixes (3.3): - Repair broken accented characters (├®/├á/├┤ -> é/à/ô, Ôé¼ -> €) left over from a bad encoding during the GWT->Inertia migration, across ComponentEditor.vue, ComputerComponentsTable.vue, SimpleGallery.vue, TableComponent.vue, isAdminMode.ts and the custom directives Misc cleanup (3.5): - computer.ts: replace console.warn with the app logger (includes computerId) when .cost is accessed without preloading components
PC Builder
Une application web moderne pour construire et gérer des configurations PC personnalisées. Construite avec AdonisJS et Vue.js (Inertia).
🎯 Fonctionnalités
- Gestion des composants : Cataloguer et gérer les composants informatiques (CPU, GPU, RAM, etc.)
- Construction de PC : Créer et configurer des ordinateurs personnalisés
- Galerie de photos : Ajouter et gérer des images de vos configurations
- Authentification utilisateur : Système d'inscription et de connexion sécurisé
- Interface réactive : Interface utilisateur moderne avec Vue.js et Tailwind CSS
📋 Prérequis
- Node.js >= 18.0.0
- npm ou yarn
- PostgreSQL (ou autre base de données supportée)
- Docker (optionnel, pour l'environnement de développement)
🚀 Installation
1. Cloner le repository
git clone http://192.168.1.39:3000/Stude12/pc_builder
cd pc_builder
2. Installer les dépendances
npm install
3. Configuration de l'environnement
Copier le fichier .env.example en .env et configurer vos variables :
cp .env.example .env
Éditer .env et configurer :
DB_CONNECTION: Type de base de donnéesDB_HOST,DB_PORT,DB_USER,DB_PASSWORD,DB_DATABASE: Connexion à la baseAPP_KEY: Clé de chiffrement (générer avecnode ace generate:key)
4. Générer la clé d'application
node ace generate:key
5. Exécuter les migrations
node ace migration:run
6. Démarrer le serveur de développement
npm run dev
L'application sera disponible à http://localhost:3333
🛠️ Scripts disponibles
# Développement avec hot reload
npm run dev
# Compilation pour la production
npm run build
# Serveur de production
npm run start
# Linter (ESLint)
npm run lint
# Tests
npm run test
# Vérifier les types TypeScript
npm run typecheck
📁 Structure du projet
pc_builder/
├── app/ # Code métier
│ ├── controllers/ # Contrôleurs des routes
│ ├── models/ # Modèles Lucid (ORM)
│ ├── middleware/ # Middlewares
│ ├── validators/ # Validateurs
│ ├── services/ # Logique métier
│ ├── exceptions/ # Exceptions personnalisées
│ └── transformers/ # Transformeurs de données
├── inertia/ # Code frontend Vue.js
│ ├── pages/ # Pages Vue.js
│ ├── components/ # Composants Vue.js réutilisables
│ ├── layouts/ # Layouts de pages
│ ├── composables/ # Composables Vue.js
│ ├── assets/ # Images, icônes, CSS
│ └── directives/ # Directives Vue.js personnalisées
├── config/ # Fichiers de configuration
├── database/ # Migrations et schema
│ ├── migrations/ # Fichiers de migration
│ └── schema.ts # Schéma de la base de données
├── start/ # Points d'entrée de l'application
├── public/ # Fichiers publics statiques
├── resources/ # Templates Edge
├── tests/ # Tests unitaires et fonctionnels
└── node_modules/ # Dépendances (ignorées par git)
🗄️ Modèles de données
User
- Utilisateurs de l'application
- Authentification et autorisation
Computer
- Configurations PC
- Associations avec les composants
- Galerie de photos
Component
- Composants informatiques
- Classés par type (CPU, GPU, RAM, etc.)
ComputerState
- État et historique des configurations
ComputerPicture
- Images des configurations PC
🔐 Sécurité
- Validation CSRF sur tous les formulaires
- Hachage sécurisé des mots de passe
- Middleware d'authentification
- Protection CORS configurée
- Échappement des données XSS
🧪 Tests
# Exécuter les tests
npm run test
# Tests avec couverture
npm run test:coverage
📦 Déploiement
Avec Docker
# Construire l'image
docker-compose build
# Lancer les services
docker-compose up -d
Manuel
- Compiler le projet :
npm run build - Installer les dépendances de production :
npm ci --omit=dev - Démarrer l'application :
npm start
🤝 Contribution
Les contributions sont bienvenues ! Voici le workflow :
- Créer une nouvelle branche :
git checkout -b feature/ma-feature - Faire vos modifications
- Commiter vos changements :
git commit -m "Add: description" - Pousser vers la branche :
git push origin feature/ma-feature - Ouvrir une Pull Request
📝 Convention de commits
feat:Nouvelle fonctionnalitéfix:Correction de bugdocs:Documentationstyle:Formatage, sans changement logiquerefactor:Refactorisation de codetest:Ajout ou modification de testschore:Maintenance, dépendances
📄 Licence
Ce projet est sous licence MIT.
📧 Support
Pour toute question ou problème, veuillez ouvrir une issue sur le repository.
Repository : http://192.168.1.39:3000/Stude12/pc_builder
Branche principale : main
Languages
TypeScript
65.8%
Vue
32.8%
JavaScript
0.4%
Shell
0.4%
Edge
0.3%
Other
0.3%