Kevin L'Hereec 62ec796e05
Build & Deploy / build (push) Failing after 4s
Build & Deploy / docker (push) Skipped
fix: repair broken CSP and compare live merchant prices for new parts
CSP fix:
- The previous shield.ts config used '@viteDevUrl'/'@viteHmrUrl' CSP
  keywords that don't exist in this version of @adonisjs/shield (only
  '@viteUrl' is registered by @adonisjs/vite, and it resolves to an empty
  string here since Vite assets are proxied through AdonisJS on the same
  origin). Both placeholders were sent to the browser literally, breaking
  Google Fonts, the Vite HMR websocket, and pc-builder.io/favicon images.
- Replaced with concrete directives: 'self' covers same-origin Vite
  assets, ws://localhost:{VITE_HMR_PORT|24678} is added only in dev for
  the HMR socket, and explicit allowlists for Google Fonts
  (fonts.googleapis.com/fonts.gstatic.com), pc-builder.io product images,
  and Google's favicon service (www.google.com) used by the merchant
  comparison UI

Real purchase links + live price comparison:
- part_scraper_service.ts: ScrapedPart.sourceUrl now stores the actual
  Amazon.fr purchase link scraped from pc-builder.io's category pages
  (https://www.amazon.fr/dp/{ASIN}?tag=... or a search fallback), instead
  of the pc-builder.io product page, which isn't a place anyone can buy
  anything from
- New merchant_price_service.ts: on-demand live price lookup across
  Amazon, LDLC, Grosbill and TopAchat. Of 6 requested merchants,
  Materiel.net (search requires JS/Turbo, no results via plain GET) and
  Cdiscount/PCComponentes (empty body / 403) were dropped as not scrapable
  without a headless browser or paid API
- Matching strategy: pc-builder.io's full product names (e.g. "AMD Ryzen 3
  3200G 3.6 GHz Quad-Core Processor") return zero results on every
  merchant's search engine, so we search on a short brand+series query
  and then pick the specific result whose label contains the extracted
  model token (e.g. "3200G"). No token match means no offer returned,
  rather than risk quoting the price of a different, unrelated product
- Fixed price parsing for LDLC/Grosbill, which render prices as nested
  price/sup elements for whole euros vs cents (and LDLC additionally
  wraps that in a duplicate outer .price div) - naive text concatenation
  was misreading "64,95" as "6495"
- New GET /scraped-parts/compare endpoint (authenticated), called on
  demand per search result rather than for every row, since it makes
  several outbound requests and can take a few seconds
- NewPartSearch.vue: "Compare prices" button per result shows the
  cheapest merchant with its favicon and links to the actual offer;
  importing a part now prefers the live cheapest price/link over
  pc-builder.io's potentially stale catalog price (confirmed stale in
  practice: pc-builder.io listed a Ryzen 3 3200G at 128 euros while
  Amazon sells it for 66.89 euros)
- 3 new functional tests for the compare endpoint (auth required, 404 on
  unknown part, 422 on invalid id)
2026-07-23 14:58:33 +02:00
2026-06-28 13:26:22 +02:00
2026-06-29 22:48:59 +02:00
fix
2026-06-28 11:37:12 +02:00
2026-06-28 12:06:48 +02:00
2026-06-28 13:26:09 +02:00
2026-06-28 12:06:48 +02:00
2026-06-28 13:36:44 +02:00
2026-06-28 12:06:48 +02:00
2026-06-29 22:48:59 +02:00
fix
2026-06-28 11:37:12 +02:00

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é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

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

  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

S
Description
No description provided
Readme
754 KiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 65.8%
Vue 32.8%
JavaScript 0.4%
Shell 0.4%
Edge 0.3%
Other 0.3%