Module SCSS.9 – Projet SCSS
Objectif
Créer un design system structuré avec SCSS pour valider toutes les compétences SCSS acquises : architecture, mixins, fonctions, organisation.
Théorie
Spécifications du projet
Application : Design System SCSS complet
Créer un design system professionnel avec toutes les fonctionnalités SCSS apprises.
Spécifications du projet
Fonctionnalités requises
1. Architecture 7-1
- Structure complète (abstracts, base, components, layout, etc.)
- Partials organisés
- Main.scss avec imports ordonnés
2. Variables et configuration
- Variables pour couleurs, espacements, typographie
- Maps pour thèmes, breakpoints
- Configuration centralisée
3. Mixins et fonctions
- Bibliothèque de mixins réutilisables
- Fonctions helper (rem, color, etc.)
- Mixins responsive
4. Composants stylisés
- Boutons avec variantes
- Cards avec modificateurs
- Formulaires stylisés
- Navigation
5. Système de grille
- Grille responsive générée avec @for
- Classes utilitaires
6. Génération automatique
- Classes utilitaires avec @each
- Système de couleurs dynamique
- Espacements automatiques
7. Thèmes
- Support dark mode
- Variables pour thèmes
- Génération automatique
Structure du projet
Organisation :
design-system/
├── scss/
│ ├── abstracts/
│ │ ├── _variables.scss
│ │ ├── _functions.scss
│ │ ├── _mixins.scss
│ │ └── _placeholders.scss
│ ├── base/
│ │ ├── _reset.scss
│ │ └── _typography.scss
│ ├── components/
│ │ ├── _buttons.scss
│ │ ├── _cards.scss
│ │ ├── _forms.scss
│ │ └── _navigation.scss
│ ├── layout/
│ │ ├── _grid.scss
│ │ └── _container.scss
│ ├── utilities/
│ │ ├── _spacing.scss
│ │ └── _colors.scss
│ └── main.scss
├── css/
│ └── main.css (compilé)
└── package.json
Guide de développement
Étape 1 : Setup (1h)
- Structure 7-1
- Configuration npm scripts
- Fichiers de base
Étape 2 : Abstracts (2h)
- Variables (couleurs, espacements, typographie)
- Maps (thèmes, breakpoints)
- Fonctions (rem, color, etc.)
- Mixins de base
Étape 3 : Base (1h)
- Reset
- Typographie
- Utilities de base
Étape 4 : Composants (3h)
- Boutons avec mixins
- Cards avec modificateurs
- Formulaires
- Navigation
Étape 5 : Système (2h)
- Grille générée avec @for
- Classes utilitaires avec @each
- Thèmes
Étape 6 : Documentation (1h)
- Commentaires
- README
- Guide d'utilisation
Critères d'évaluation
Architecture (25%) :
- Structure 7-1 complète
- Partials organisés
- Imports ordonnés
Fonctionnalités (25%) :
- Variables et maps
- Mixins réutilisables
- Fonctions helper
Génération (20%) :
- Classes automatiques (@for, @each)
- Système de grille
- Utilities générées
Composants (15%) :
- Boutons, cards, forms stylisés
- Variantes et modificateurs
- Réutilisabilité
Code qualité (15%) :
- Bonnes pratiques
- Documentation
- Performance
Exercice - Développement
Abstracts
Variables :
- Palette de couleurs complète
- Espacements (xs à xl)
- Typographie (tailles, weights)
- Breakpoints
Maps :
$theme-colors: Couleurs du thème$spacings: Espacements$breakpoints: Breakpoints responsive
Fonctions :
rem($pixels): Conversion px → remcolor($key): Obtenir couleur depuis mapbreakpoint($key): Obtenir breakpoint
Mixins :
button($color): Bouton avec couleurmedia($breakpoint): Media query avec @contentclearfix: Clearfixtruncate: Texte coupé
Base
Reset :
- Normalisation moderne
- Box-sizing border-box
Typographie :
- Hiérarchie (h1-h6)
- Line-height optimal
- Variables pour tailles
Components
Boutons :
- Base avec placeholder
- Variantes (primary, secondary, success)
- Tailles (small, medium, large)
- États (hover, active, disabled)
Cards :
- Base avec mixin
- Modificateurs (featured, compact)
- Utilisation de variables
Formulaires :
- Inputs stylisés
- États (focus, invalid)
- Labels accessibles
Système
Grille :
- 12 colonnes générées avec @for
- Responsive avec mixins
- Classes utilitaires
Utilities :
- Spacings générés avec @each
- Couleurs générées avec @each
- Classes utilitaires automatiques
Thèmes :
- Variables pour light/dark
- Génération avec @each
- Support prefers-color-scheme
Validation finale
Checklist :
- Structure 7-1 complète
- Variables et maps organisées
- Mixins réutilisables
- Fonctions helper
- Composants stylisés
- Système de grille généré
- Classes utilitaires automatiques
- Thèmes supportés
- Code selon bonnes pratiques
- Documentation complète
Tests :
- Compilation : CSS généré sans erreurs
- Organisation : Structure claire
- Réutilisabilité : Mixins/fonctions utilisées
- Génération : Classes automatiques fonctionnelles
- Performance : CSS optimisé
Ressources
Si vous êtes bloqué :
- Revisitez les modules précédents
- Documentation Sass : sass-lang.com
- Exemples de design systems
Bonnes pratiques :
- Code organisé
- Documentation complète
- Réutilisabilité maximale
Objectif final
Créer un design system SCSS complet qui démontre :
- Maîtrise de l'architecture SCSS
- Utilisation avancée (loops, conditions, maps)
- Génération automatique de classes
- Système scalable et maintenable
- Code professionnel
Validation : Vous avez terminé SCSS quand votre design system est fonctionnel, organisé et utilise toutes les fonctionnalités avancées.
Félicitations ! Vous avez terminé l'apprentissage complet du SCSS. Vous êtes maintenant capable de créer des design systems professionnels et maintenables.