diff --git a/README.md b/README.md index 3e5bc2b..2ea1e6f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,208 @@ -# pc_builder +# 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 + +```bash +git clone http://192.168.1.39:3000/Stude12/pc_builder +cd pc_builder +``` + +### 2. Installer les dépendances + +```bash +npm install +``` + +### 3. Configuration de l'environnement + +Copier le fichier `.env.example` en `.env` et configurer vos variables : + +```bash +cp .env.example .env +``` + +Éditer `.env` et configurer : +- `DB_CONNECTION` : Type de base de données +- `DB_HOST`, `DB_PORT`, `DB_USER`, `DB_PASSWORD`, `DB_DATABASE` : Connexion à la base +- `APP_KEY` : Clé de chiffrement (générer avec `node ace generate:key`) + +### 4. Générer la clé d'application + +```bash +node ace generate:key +``` + +### 5. Exécuter les migrations + +```bash +node ace migration:run +``` + +### 6. Démarrer le serveur de développement + +```bash +npm run dev +``` + +L'application sera disponible à `http://localhost:3333` + +## 🛠️ Scripts disponibles + +```bash +# 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 + +```bash +# Exécuter les tests +npm run test + +# Tests avec couverture +npm run test:coverage +``` + +## 📦 Déploiement + +### Avec Docker + +```bash +# Construire l'image +docker-compose build + +# Lancer les services +docker-compose up -d +``` + +### Manuel + +1. Compiler le projet : `npm run build` +2. Installer les dépendances de production : `npm ci --omit=dev` +3. Démarrer l'application : `npm start` + +## 🤝 Contribution + +Les contributions sont bienvenues ! Voici le workflow : + +1. Créer une nouvelle branche : `git checkout -b feature/ma-feature` +2. Faire vos modifications +3. Commiter vos changements : `git commit -m "Add: description"` +4. Pousser vers la branche : `git push origin feature/ma-feature` +5. Ouvrir une Pull Request + +## 📝 Convention de commits + +- `feat:` Nouvelle fonctionnalité +- `fix:` Correction de bug +- `docs:` Documentation +- `style:` Formatage, sans changement logique +- `refactor:` Refactorisation de code +- `test:` Ajout ou modification de tests +- `chore:` 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