Application web personnelle de gestion de liste d'achats avec priorités, filtres avancés, et récupération automatique d'images. Fonctionne 100% hors-ligne.
Une application moderne pour gérer vos achats futurs avec :
- ✅ Priorités visuelles (Haute/Moyenne/Basse)
- ✅ Images produits automatiques via Microlink API
- ✅ Filtrage et tri avancés
- ✅ 100% offline - Aucune donnée envoyée en ligne
- ✅ PWA installable sur PC et mobile
- ✅ Export CSV et JSON
- Champs complets : Titre, URL, Prix, Priorité, Catégorie, Date cible, Notes
- Attributs personnalisés : Ajouter des champs clé-valeur personnalisés
- Images produits : Récupération automatique depuis les URLs
- États : Marquer comme "Acheté" ou "À acheter"
- Actions : Éditer, Supprimer, Copier le lien
- Recherche textuelle : Chercher dans titre, catégorie, notes, URL, attributs
- Filtres :
- Par priorité (Haute/Moyenne/Basse/Toutes)
- Par état (Tous/À acheter/Achetés)
- Par catégorie (générées dynamiquement)
- Tri :
- Par priorité, prix, date cible, date d'ajout, ou titre
- Ordre ascendant ou descendant
- Budget total : Somme de tous les articles
- Budget restant : Somme des articles non achetés
- Affichage en EUR avec 2 décimales
- Export CSV : Tous les champs avec date dans le nom (
liste_achats_YYYY-MM-DD.csv) - Export JSON : Sauvegarde complète
- Import JSON : Restauration avec validation des données
- Installable : Sur desktop (Chrome, Edge) et mobile (iOS, Android)
- Offline-first : Fonctionne sans connexion internet
- Auto-update : Service Worker avec mise à jour automatique
- Icônes : 192x192 et 512x512 pour tous les écrans
- Design épuré : CSS pur avec variables pour theming
- Responsive : Fonctionne sur tous les écrans
- Badges colorés : Identification visuelle rapide des priorités
- Grid layout : Organisation claire et moderne
- Node.js : Version 18+ (télécharger)
- npm : Version 9+ (inclus avec Node.js)
git clone https://github.com/dexteee-r/AchatLIST-WebAPP.git
cd Perso-WEB_APP-LISTE_ACHATnpm installnpm run devL'application sera accessible sur : http://localhost:5173
npm run buildLes fichiers de production seront dans le dossier dist/
npm run previewPerso-WEB_APP-LISTE_ACHAT/
├── public/ # Assets statiques
│ ├── pwa-192.png # Icône PWA 192x192
│ ├── pwa-512.png # Icône PWA 512x512
│ └── vite.svg
│
├── src/
│ ├── components/ # Composants React
│ │ ├── ItemForm.jsx # Formulaire d'ajout/édition (169 lignes)
│ │ ├── ItemCard.jsx # Carte d'article (94 lignes)
│ │ ├── ItemList.jsx # Liste d'articles (28 lignes)
│ │ ├── FilterBar.jsx # Filtres et tri (89 lignes)
│ │ ├── BudgetSummary.jsx # Résumé budgétaire (8 lignes)
│ │ ├── AchatForm.jsx # Re-export legacy
│ │ └── AchatList.jsx # Re-export legacy
│ │
│ ├── utils/ # Utilitaires
│ │ ├── constants.js # Constantes (PRIORITIES, STORAGE_KEY)
│ │ ├── helpers.js # Fonctions utilitaires
│ │ └── storages.js # Gestion JSON
│ │
│ ├── App.jsx # Composant racine (163 lignes)
│ ├── main.jsx # Point d'entrée + PWA
│ └── styles.css # Styles globaux
│
├── docs/ # 📚 Documentation complète
│ ├── ARCHITECTURE.md # Architecture technique
│ ├── CHANGELOG.md # Historique des modifications
│ ├── GUIDE_DEVELOPPEMENT.md # Guide développeur
│ ├── COMPOSANTS.md # Documentation des composants
│ └── ROADMAP.md # Feuille de route
│
├── index.html # HTML racine
├── vite.config.js # Configuration Vite + PWA
├── package.json # Dépendances
├── eslint.config.js # Configuration ESLint
└── README.md # Ce fichier
| Technologie | Version | Usage |
|---|---|---|
| React | 19.1.1 | Framework UI |
| Vite | 7.2.2 | Build tool ultra-rapide |
| vite-plugin-pwa | 1.1.0 | Support PWA |
| Workbox | 7.3.0 | Service Worker |
| ESLint | 9.33.0 | Linter |
| Microlink API | - | Récupération images Open Graph |
Toute la documentation est disponible dans le dossier docs/ :
| Document | Description |
|---|---|
| ARCHITECTURE.md | Architecture technique détaillée, flux de données, modèles |
| GUIDE_DEVELOPPEMENT.md | Guide pour développeurs, ajout de features, debugging |
| COMPOSANTS.md | Documentation complète de chaque composant |
| CHANGELOG.md | Historique des modifications |
| ROADMAP.md | Fonctionnalités futures prévues |
- Remplir le champ Titre (requis)
- Coller l'URL du produit (optionnel) - L'image sera récupérée automatiquement
- Ajouter le prix en EUR
- Choisir la priorité (Haute/Moyenne/Basse)
- Cliquer sur Ajouter
- Utiliser la barre de recherche pour chercher par mots-clés
- Sélectionner un filtre de priorité
- Choisir l'état (Tous/À acheter/Achetés)
- Sélectionner une catégorie
- Choisir un tri (Priorité, Prix, Date, Titre)
- CSV : Cliquer sur "Exporter CSV" dans le header
- JSON : Cliquer sur "Sauvegarder la liste (load a JSON)"
Les fichiers seront téléchargés avec la date : liste_achats_2025-11-20.csv
- Cliquer sur Import JSON dans le header
- Sélectionner votre fichier
.json - Les données seront validées et chargées
Modifier les variables CSS dans src/styles.css :
:root {
--primary: #3b82f6; /* Couleur primaire */
--border: #e5e7eb; /* Couleur des bordures */
--muted: #6b7280; /* Texte secondaire */
--background: #f9fafb; /* Fond de page */
}- Modifier
src/utils/constants.js:
export const PRIORITIES = [
{ id: 'critical', label: 'Critique', weight: 4, cls: 'badge purple' },
{ id: 'high', label: 'Haute', weight: 3, cls: 'badge red' },
// ... autres priorités
];- Ajouter le style dans
src/styles.css:
.badge.purple {
background: #ede9fe;
color: #6d28d9;
border-color: #ddd6fe;
}Modifier dans :
package.json:"name"index.html:<title>vite.config.js:manifest.namesrc/App.jsx:<div className="title">
npm install -g vercel
npm run build
vercel --prod- Connecter votre repo GitHub à Netlify
- Build command :
npm run build - Publish directory :
dist
Voir note_a_moi_meme.md pour le guide complet.
Résumé :
# Sur votre VM Linux
npm run build
# Copier dans nginx
sudo cp -r dist/* /var/www/html/
sudo systemctl restart nginxAccès via l'IP locale : http://192.168.x.x
- ✅ Toutes les données sont stockées localement dans votre navigateur (localStorage)
- ✅ Aucun serveur ne reçoit vos informations
- ✅ Pas de tracking, pas d'analytics
- ✅ Pas de compte requis
L'application utilise Microlink API (https://api.microlink.io) pour récupérer les images Open Graph des produits. Seule l'URL du produit est envoyée à cette API.
Vos données sont dans localStorage. Pour éviter toute perte :
- Exporter régulièrement en JSON
- Sauvegarder le fichier sur un cloud (Google Drive, Dropbox)
- Ou utiliser la synchronisation (feature future)
Causes possibles :
- L'API Microlink est lente ou down
- Le site cible n'a pas d'image Open Graph
- Problème de connexion internet
Solution :
- Cliquer sur le bouton 🔍 pour forcer la recherche
- Attendre quelques secondes
- Vérifier que l'URL est correcte
Causes possibles :
- localStorage effacé par le navigateur
- Navigation privée utilisée
Solution :
- Importer votre dernier backup JSON
- Éviter le mode navigation privée
- Exporter régulièrement
Causes possibles :
- Navigateur non compatible
- Pas en HTTPS (sauf localhost)
Solution :
- Utiliser Chrome, Edge, ou Safari (iOS)
- S'assurer que le site est en HTTPS en production
- ✅ useMemo pour calculs coûteux (filtrage, tri, budgets)
- ✅ localStorage pour persistance rapide
- ✅ Service Worker pour cache offline
- ✅ Vite pour build ultra-rapide
- React.memo sur ItemCard
- Virtualisation pour listes longues (react-window)
- Lazy loading des images
- Code splitting
Consultez ROADMAP.md pour la liste complète des fonctionnalités prévues.
v1.2.0 (fin novembre 2025)
- Notifications modernes (react-toastify)
- Cache d'images
- Export JSON avec date
v1.3.0 (décembre 2025)
- Système de tags multiples
- Tutoriel interactif
- Scraping amélioré
v2.0.0 (Q1 2026)
- Listes multiples
- Extension navigateur
- Mode "Plus envie"
Ce projet est actuellement personnel et privé. Si vous souhaitez contribuer :
- Forker le projet
- Créer une branche (
git checkout -b feature/AmazingFeature) - Commit vos changements (
git commit -m 'feat: Add AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request
Utiliser Conventional Commits :
feat:Nouvelle fonctionnalitéfix:Correction de bugdocs:Documentationstyle:Changements CSS/visuelsrefactor:Refactorisationtest:Testschore:Maintenance
Voir CHANGELOG.md pour l'historique détaillé des versions.
Refactorisation majeure :
- Extraction de 5 composants depuis App.jsx
- Création du dossier
utils/avec helpers - Réduction de App.jsx de 430 à 163 lignes
- Documentation complète dans
docs/
Ce projet est un projet personnel privé. Tous droits réservés.
Pour toute question sur l'utilisation, contactez l'auteur.
momoe
- GitHub : @dexteee-r
- Projet : AchatLIST-WebAPP
- Microlink API pour la récupération d'images
- Vite pour le build ultra-rapide
- React Team pour React 19
- Workbox pour le Service Worker
- Claude (Anthropic) pour l'assistance à la refactorisation v1.1.0
- React DevTools
- Lighthouse (audit PWA)
- Can I Use (compatibilité)
- Consultez la documentation complète
- Cherchez dans les issues GitHub
- Créez une nouvelle issue si nécessaire
Voir GUIDE_DEVELOPPEMENT.md - FAQ
Fait avec ❤️ et beaucoup de ☕
Dernière mise à jour : 20 novembre 2025 Version : 1.1.0