# TODO - Site Web Leifo

## Configuration & Infrastructure
- [x] Configurer les couleurs de la charte graphique dans index.css
- [x] Ajouter les polices Google Fonts (Inter) dans index.html
- [x] Copier le logo Leifo dans le projet

## Base de données & Backend
- [x] Créer le schéma de base de données (projets portfolio, articles blog, contacts)
- [x] Implémenter les requêtes database dans server/db.ts
- [x] Créer les procédures tRPC pour portfolio, blog et contact
- [x] Configurer l'envoi d'emails pour le formulaire de contact (via notification owner)

## Composants UI réutilisables
- [x] Créer le composant Header avec navigation responsive
- [x] Créer le composant Footer avec liens et réseaux sociaux
- [x] Créer le composant Button personnalisé selon la charte (utilise shadcn/ui)
- [x] Créer le composant Card pour services et projets (utilise shadcn/ui)
- [x] Créer le composant ContactForm avec validation

## Pages principales
- [x] Page Accueil (/) avec toutes les sections
- [x] Page À propos (/a-propos)
- [x] Page Services principale (/services)
- [ ] Page Services - Sites Vitrine (/services/sites-vitrine)
- [ ] Page Services - E-commerce (/services/e-commerce)
- [ ] Page Services - Web App (/services/web-app)
- [x] Page Portfolio (/portfolio)
- [x] Page détail projet (/portfolio/[slug])
- [x] Page Blog (/blog)
- [x] Page article de blog (/blog/[slug])
- [x] Page Contact (/contact)

## Pages légales
- [x] Page Mentions légales (/mentions-legales)
- [x] Page Politique de confidentialité (/politique-confidentialite)
- [x] Page Conditions générales (/cgu)

## Fonctionnalités
- [ ] Système de filtrage portfolio par catégorie
- [ ] Système de recherche et filtrage blog
- [x] Formulaire de contact avec validation et envoi email
- [ ] Formulaire newsletter (optionnel)
- [ ] Carousel de témoignages clients
- [ ] Section FAQ avec accordéon

## Contenu & Assets
- [x] Générer les images hero pour les différentes pages
- [x] Générer des mockups de projets portfolio
- [x] Créer des icônes pour les services (utilise lucide-react)
- [x] Rédiger le contenu des pages statiques
- [x] Créer des images pour articles de blog

## Tests & Optimisation
- [x] Tester la navigation responsive
- [x] Tester le formulaire de contact (tests vitest)
- [ ] Vérifier l'accessibilité (contraste, navigation clavier)
- [ ] Optimiser les performances (images, lazy loading)
- [ ] Tester sur mobile et desktop

## Déploiement
- [ ] Créer le checkpoint final
- [x] Vérifier tous les liens et routes
- [ ] Tester le site en production

## API Blog Sécurisée (Nouvelle demande)
- [x] Créer une procédure adminProcedure pour vérifier le rôle admin (utilise protectedProcedure + vérification role)
- [x] Implémenter blog.create pour créer un nouvel article
- [x] Implémenter blog.update pour modifier un article existant
- [x] Implémenter blog.delete pour supprimer un article
- [x] Implémenter blog.publish pour publier/dépublier un article
- [x] Créer une page d'administration /admin/blog pour gérer les articles
- [x] Créer un formulaire de création/édition d'article
- [x] Ajouter la gestion des images pour les articles (via URL)
- [x] Tester toutes les opérations CRUD avec vitest
- [x] Documenter l'utilisation de l'API

## Tableau de Bord Analytique Blog (Nouvelle demande)
- [x] Créer une table article_views pour tracker les vues
- [x] Ajouter une procédure pour enregistrer une vue d'article
- [x] Implémenter blog.getStats pour récupérer les statistiques globales
- [x] Implémenter blog.getTopArticles pour les articles les plus vus
- [x] Implémenter blog.getViewsByDate pour les graphiques de tendances
- [x] Implémenter blog.getStatsByCategory pour les stats par catégorie
- [x] Créer la page /admin/analytics pour le tableau de bord
- [x] Intégrer des graphiques avec recharts (ligne, barres, camembert)
- [x] Ajouter des cartes de statistiques (total vues, articles publiés, etc.)
- [x] Implémenter le tracking automatique des vues sur les pages d'articles
- [x] Tester toutes les fonctionnalités analytics avec vitest

## Correction Bug (Nouvelle demande)
- [x] Corriger l'erreur de balises <a> imbriquées dans /admin/blog
