Page 1 of 11
System Requirements Document for sharp-linux
1. Introduction
sharp-linux est un cours en français sur les fondamentaux de Linux, destiné à deux profils d'apprenants : les débutants complets qui n'ont jamais touché à un shell Linux, et les apprenants ayant déjà quelques bases qui veulent consolider et structurer leurs connaissances.
L'intention produit, dérivée de la demande utilisateur (« Cours très détaillé de fondamentaux Linux »), est de fournir un corps de connaissance technique organisé en chapitres et leçons, lisible sur de longues sessions, avec un suivi de progression durable permettant à chaque apprenant de reprendre son parcours là où il l'a laissé. Le produit est une infrastructure pédagogique publique : il doit inspirer la fiabilité d'un manuel imprimé ou d'un plan de réseau de transport, pas celle d'un produit marketing.
Le public visé est un public d'apprenants francophones. Le produit est livré en français.
Page 2 of 11
2. System Overview
sharp-linux est une application web avec interface personnalisée, propriétaire de l'identité de ses apprenants. Elle se compose de six destinations :
- Landing — point d'entrée public expliquant le cours, son public et ce qu'il permet d'apprendre.
- Sign Up — inscription autonome d'un apprenant sans compte.
- Login — vérification récurrente permettant de retrouver son compte et sa progression.
- Course — vue parcourable des chapitres et leçons.
- Lesson — lecture d'une leçon individuelle.
- Progress — vue personnelle de suivi et de reprise de la progression.
Les acteurs humains sont les deux personas apprenants. Le système applicatif (backend, stockage de la progression) est un acteur non-humain qui exécute et persiste, sans jamais porter l'interaction humaine.
Page 3 of 11
2a. Product Interpretation and Delivery Boundary
Le cours est livré comme une application web first-party avec interface personnalisée. L'accès au contenu pédagogique (Course, Lesson, Progress) est protégé : un apprenant doit avoir établi son identité pour conserver et reprendre une progression durable. L'entrée dans ce parcours est anonyme — Landing, Sign Up et Login sont accessibles sans identité préalable — car une destination protégée ne peut pas porter l'interaction qui établit l'accès à elle-même.
L'identité est propriété de l'application (inscription autonome et vérification récurrente), et non déléguée à un fournisseur externe. Aucune gestion de comptes adjacente (rôles, permissions différenciées, administration) n'est incluse : la source n'établit aucun contrôle différencié sur un état partagé.
Périmètre actuel : cours de fondamentaux Linux, chapitres, leçons, progression personnelle, inscription et connexion.
Hors périmètre actuel : quiz, évaluations, certificats, forums, rôles enseignant/administrateur, contenus au-delà des fondamentaux Linux. Ces éléments ne sont ni demandés ni acceptés par la source.
2c. Page Content and Component Coverage
Page 4 of 11
Landing
- Information / état : composition typographique pleine largeur présentant le cours ; titre principal « Les fondamentaux Linux, expliqués comme une infrastructure. » ; bandeau réglé en rouge signal portant les trois piliers numérotés (01 Terminal, 02 Système de fichiers, 03 Processus et permissions) ; colonne étroite à droite avec un extrait de terminal en Fira Mono sur fond encre et curseur jaune.
- Actions principales : accéder à l'inscription (CTA rectangulaire découpé dans le bandeau rouge) ; accéder à la connexion pour un apprenant déjà inscrit.
- Actions de support : parcourir les trois piliers comme repères de contenu.
- Entités du domaine : cours, piliers de contenu (Terminal, Système de fichiers, Processus et permissions).
- Responsabilités des composants : règle de marge gauche persistante ; bloc de titre flush-left ; bandeau réglé avec bouton intégré ; extrait terminal en Fira Mono.
- États : chargement — squelette typographique du titre et du bandeau ; vide — sans objet (contenu statique) ; succès — rendu complet ; erreur — si l'extrait terminal ne peut être rendu, le bandeau et le titre restent affichés, l'extrait est remplacé par un bloc de code statique ; récupération — rechargement de la page.
Sign Up
- Information / état : formulaire d'inscription autonome (identifiant de connexion et mot de passe) ; rappel du bénéfice (conserver sa progression).
- Actions principales : créer un compte apprenant.
- Actions de support : basculer vers Login si l'apprenant a déjà un compte.
- Entités du domaine : compte apprenant, identifiants.
- Responsabilités des composants : champs de saisie rectangulaires à bordure 1px ; validation en ligne ; bouton rectangulaire 2px de rayon.
- États : chargement — bouton en état d'attente, champs désactivés ; vide — formulaire vierge avec libellés ; succès — compte créé, redirection vers Course ; erreur — identifiant déjà utilisé ou champs invalides, message en rouge signal sous le champ concerné, saisie conservée ; récupération — correction du champ et nouvelle soumission.
Login
- Information / état : formulaire de vérification récurrente (identifiant et mot de passe).
- Actions principales : se connecter et retrouver sa progression.
- Actions de support : basculer vers Sign Up pour un nouvel apprenant.
- Entités du domaine : compte apprenant, session.
- Responsabilités des composants : champs de saisie ; validation ; bouton rectangulaire ; lien de bascule.
- États : chargement — bouton en attente ; vide — formulaire vierge ; succès — session établie, redirection vers Course ; erreur — identifiants incorrects, message générique en rouge signal, saisie du mot de passe effacée ; récupération — nouvelle tentative ou bascule vers Sign Up.
Page 5 of 11
Course
- Information / état : vue parcourable des chapitres et de leurs leçons ; rail gauche persistant listant les chapitres avec marqueur de couleur signal par section (Terminal, Fichiers, Processus, Réseau) ; petit carré jaune marquant les leçons complétées ; barre de progression réglée sous l'en-tête.
- Actions principales : ouvrir une leçon ; reprendre la dernière leçon entamée.
- Actions de support : replier/déplier la navigation en tiroir supérieur sur mobile ; naviguer vers Progress.
- Entités du domaine : chapitre, leçon, section, progression.
- Responsabilités des composants : rail de navigation ; en-têtes de chapitre numérotés (petites capitales espacées, numéro 64px rouge signal) ; barre de progression à capuchon carré.
- États : chargement — rail et liste en squelette ; vide — aucun chapitre disponible, message explicatif ; succès — chapitres et leçons listés avec marqueurs de complétion ; erreur — échec de chargement du programme, message et bouton de nouvelle tentative ; récupération — rechargement de la liste.
Lesson
- Information / état : contenu d'une leçon en colonne unique (mesure max 68 caractères) ; bloc d'en-tête numéroté (CHAPITRE 03 en petites capitales, numéro 64px rouge signal, titre 32px encre, résumé d'une ligne en gris chaud) ; barre de progression réglée sous l'en-tête ; blocs de code et sorties terminal en Fira Mono sur fond encre avec bordure 1px et étiquette de contexte en haut à gauche.
- Actions principales : lire la leçon ; marquer la leçon comme terminée ; passer à la leçon suivante.
- Actions de support : revenir au chapitre ; naviguer vers la leçon précédente ; ouvrir Progress.
- Entités du domaine : leçon, chapitre, progression, bloc de code.
- Responsabilités des composants : en-tête numéroté ; corps de texte long ; composant de bloc de code avec étiquette ; barre de progression ; contrôle de complétion.
- États : chargement — en-tête et corps en squelette ; vide — leçon sans contenu, message explicatif ; succès — leçon affichée, complétion enregistrée avec balayage linéaire de 400ms de la barre ; erreur — échec de chargement de la leçon, message et retour au chapitre ; récupération — nouvelle tentative ou navigation vers une autre leçon.
Progress
- Information / état : vue personnelle de la progression ; leçons complétées marquées par un carré jaune ; barres réglées par section ; dernière leçon entamée mise en évidence.
- Actions principales : reprendre la dernière leçon entamée ; ouvrir une leçon depuis la liste.
- Actions de support : naviguer vers Course.
- Entités du domaine : progression, leçon, chapitre, section.
- Responsabilités des composants : liste de progression par chapitre ; barres réglées à capuchon carré ; marqueur de reprise.
- États : chargement — liste en squelette ; vide — aucune leçon entamée, invitation à commencer le cours ; succès — progression affichée avec marqueurs ; erreur — échec de chargement de la progression, message et nouvelle tentative ; récupération — rechargement.
Page 6 of 11
3. Functional Requirements
FR-01 — Consulter le cours de fondamentaux Linux
As a apprenant (débutant complet ou avec quelques bases), I should pouvoir parcourir les chapitres et les leçons du cours de fondamentaux Linux, so that je puisse accéder au contenu pédagogique organisé.
- Provenance :
explicit
- Déclencheur : l'apprenant authentifié ouvre Course.
- Résultat observable : la liste des chapitres et de leurs leçons est affichée avec les marqueurs de section et de complétion.
- Accès : connexion requise.
- Échec / récupération : si le programme ne se charge pas, un message et une action de nouvelle tentative sont proposés.
- Continuation : l'apprenant ouvre une leçon.
FR-02 — Lire une leçon individuelle
As a apprenant, I should pouvoir ouvrir et lire une leçon individuelle, so that je puisse assimiler les notions de base.
- Provenance :
explicit
- Déclencheur : l'apprenant sélectionne une leçon depuis Course ou Progress.
- Résultat observable : le contenu de la leçon s'affiche en colonne unique avec son en-tête numéroté et ses blocs de code.
- Accès : connexion requise.
- Échec / récupération : si la leçon ne se charge pas, un message et un retour au chapitre sont proposés.
- Continuation : l'apprenant marque la leçon terminée ou passe à la suivante.
FR-03 — Marquer une leçon comme terminée
As a apprenant, I should pouvoir marquer une leçon comme terminée, so that ma progression soit enregistrée.
- Provenance :
required_inference (mécanique indispensable pour rendre la progression durable et observable)
- Déclencheur : l'apprenant active le contrôle de complétion en fin de leçon.
- Résultat observable : la barre de progression se remplit par un balayage linéaire de 400ms ; un carré jaune apparaît dans le rail gauche pour cette leçon.
- Accès : connexion requise.
- Échec / récupération : si l'enregistrement échoue, l'état de complétion n'est pas confirmé et l'apprenant peut réessayer.
- Continuation : l'apprenant passe à la leçon suivante.
FR-04 — Suivre et reprendre sa progression
As a apprenant, I should pouvoir consulter ma progression et reprendre la dernière leçon entamée, so that je puisse continuer mon parcours là où je l'ai laissé.
- Provenance :
required_inference (mécanique indispensable pour rendre la progression durable et reprenable)
- Déclencheur : l'apprenant ouvre Progress.
- Résultat observable : les leçons complétées et la dernière leçon entamée sont affichées ; l'apprenant peut ouvrir cette leçon.
- Accès : connexion requise.
- Échec / récupération : si la progression ne se charge pas, un message et une nouvelle tentative sont proposés.
- Continuation : l'apprenant reprend la leçon mise en évidence.
FR-05 — S'inscrire de façon autonome
As a apprenant sans compte, I should pouvoir créer mon compte moi-même, so that je puisse commencer le cours et conserver ma progression.
- Provenance :
required_inference (prérequis indispensable à l'exécution du parcours accepté)
- Déclencheur : l'apprenant ouvre Sign Up depuis Landing.
- Résultat observable : le compte est créé et l'apprenant accède au cours.
- Accès : anonyme.
- Échec / récupération : si l'identifiant est déjà utilisé ou les champs invalides, un message en rouge signal s'affiche et la saisie est conservée.
- Continuation : l'apprenant arrive sur Course.
FR-06 — Se reconnecter pour retrouver sa progression
As a apprenant déjà inscrit, I should pouvoir me reconnecter, so that je retrouve mon compte et ma progression durable.
- Provenance :
required_inference (vérification récurrente indispensable à la continuité de l'identité)
- Déclencheur : l'apprenant ouvre Login.
- Résultat observable : la session est établie et l'apprenant accède au cours avec sa progression.
- Accès : anonyme.
- Échec / récupération : si les identifiants sont incorrects, un message générique s'affiche et l'apprenant peut réessayer ou basculer vers Sign Up.
- Continuation : l'apprenant arrive sur Course.
FR-07 — Comprendre le cours avant de s'inscrire
As a visiteur, I should pouvoir comprendre le contenu du cours, son public et ce qu'il permet d'apprendre, so that je puisse décider de m'inscrire.
- Provenance :
required_inference (point d'entrée public indispensable au parcours accepté)
- Déclencheur : le visiteur ouvre Landing.
- Résultat observable : le titre, les trois piliers numérotés et un extrait de terminal sont affichés.
- Accès : anonyme.
- Échec / récupération : si l'extrait terminal ne peut être rendu, un bloc de code statique le remplace.
- Continuation : le visiteur accède à Sign Up ou Login.
Page 7 of 11
4. User Personas
Débutant complet en Linux
Contexte produit : cet apprenant n'a aucune base Linux. Il ne connaît ni le terminal, ni l'arborescence de fichiers, ni la notion de permissions. Il arrive sur sharp-linux sans savoir ce qu'il ne sait pas encore.
Objectif principal : acquérir les fondamentaux Linux, c'est-à-dire comprendre et savoir utiliser les notions de base du terminal, du système de fichiers et des processus.
Responsabilités acceptées : parcourir les chapitres et leçons du cours ; lire les leçons dans l'ordre ; marquer les leçons terminées ; suivre sa progression ; reprendre là où il s'est arrêté.
Entrées et décisions : il décide de commencer le cours, choisit une leçon, décide quand une leçon est assimilée et la marque terminée.
Interactions avec les autres participants : il partage le même cours et la même structure de progression que l'apprenant avec quelques bases, mais son parcours est plus séquentiel — il ne saute pas de leçon, car chaque notion lui est nouvelle.
Réussite observable : il a assimilé les fondamentaux Linux, visible par une progression complète sur les chapitres du cours.
Ce qui distingue ce rôle : sa contrainte est l'absence de repères préalables. Il a besoin que le contenu soit expliqué depuis zéro et que la structure du cours le guide pas à pas, là où un apprenant avec quelques bases peut naviguer de façon sélective.
Page 8 of 11
Apprenant avec quelques bases
Contexte produit : cet apprenant a déjà quelques notions Linux — il a peut-être déjà tapé des commandes, mais ses connaissances sont partielles et non structurées.
Objectif principal : consolider et structurer ses connaissances sur les fondamentaux Linux, et valider ses acquis.
Responsabilités acceptées : parcourir les chapitres et leçons du même cours ; lire les leçons ; marquer les leçons terminées ; suivre sa progression.
Entrées et décisions : il décide quelles leçons consulter, dans quel ordre, et juge lui-même si une leçon lui apporte une consolidation ou une validation.
Interactions avec les autres participants : il partage le même cours et la même structure de progression que le débutant complet, mais son usage est sélectif — il peut cibler les chapitres où ses bases sont fragiles.
Réussite observable : il a complété et validé ses acquis sur les fondamentaux, visible par une progression couvrant les chapitres pertinents.
Ce qui distingue ce rôle : sa contrainte est la structuration, pas l'initiation. Il a besoin de retrouver rapidement les notions qu'il connaît mal et de vérifier ce qu'il sait déjà, là où un débutant complet a besoin d'un parcours guidé depuis le début.
5. Core User Flows
Page 9 of 11
Parcours A — Découvrir le cours et s'inscrire (Débutant complet en Linux)
- L'apprenant ouvre sharp-linux sans compte. Il arrive sur Landing.
- Il lit le titre « Les fondamentaux Linux, expliqués comme une infrastructure. » et le bandeau rouge portant les trois piliers numérotés : 01 Terminal, 02 Système de fichiers, 03 Processus et permissions.
- Il consulte l'extrait de terminal en Fira Mono sur fond encre à droite du titre, qui illustre concrètement le contenu du cours.
- Il décide de s'inscrire et active le bouton rectangulaire découpé dans le bandeau rouge. Il arrive sur Sign Up.
- Il saisit un identifiant et un mot de passe, puis valide.
- Résultat observable : son compte est créé. Il est redirigé vers Course.
- Échec / récupération : si l'identifiant est déjà utilisé, un message en rouge signal s'affiche sous le champ et sa saisie est conservée ; il corrige et resoumet.
- Continuation : il voit la liste des chapitres et commence le cours (parcours B).
Parcours B — Suivre le cours depuis le début (Débutant complet en Linux)
- L'apprenant authentifié arrive sur Course.
- Il voit le rail gauche persistant listant les chapitres, chacun avec son marqueur de couleur signal, et la barre de progression réglée sous l'en-tête.
- Il ouvre la première leçon. Il arrive sur Lesson.
- Il lit le contenu en colonne unique, avec l'en-tête numéroté (CHAPITRE 01 en petites capitales, numéro 64px rouge signal, titre 32px encre, résumé en gris chaud) et les blocs de code en Fira Mono sur fond encre.
- Il marque la leçon comme terminée.
- Résultat observable : la barre de progression se remplit par un balayage linéaire de 400ms ; un carré jaune apparaît dans le rail gauche pour cette leçon.
- Échec / récupération : si l'enregistrement de la complétion échoue, l'état n'est pas confirmé et il peut réessayer.
- Continuation : il passe à la leçon suivante et répète les étapes 4 à 6 jusqu'à la fin du chapitre.
Page 10 of 11
Parcours C — Reprendre après une interruption (Débutant complet en Linux)
- L'apprenant revient sur sharp-linux après une interruption. Il arrive sur Landing.
- Il active l'accès à la connexion. Il arrive sur Login.
- Il saisit ses identifiants et valide.
- Résultat observable : sa session est établie et il est redirigé vers Course avec sa progression restaurée.
- Échec / récupération : si ses identifiants sont incorrects, un message générique s'affiche et le champ mot de passe est effacé ; il réessaie ou bascule vers Sign Up.
- Continuation : il ouvre Progress pour retrouver la dernière leçon entamée, mise en évidence, puis l'ouvre directement.
Parcours D — Consolider des connaissances ciblées (Apprenant avec quelques bases)
- L'apprenant authentifié arrive sur Course.
- Il parcourt le rail gauche et repère, grâce aux marqueurs de couleur signal par section (Terminal, Fichiers, Processus, Réseau), le chapitre correspondant à une notion qu'il maîtrise mal.
- Il ouvre directement la leçon concernée. Il arrive sur Lesson.
- Il lit la leçon et vérifie ce qu'il savait déjà ou découvre ce qui lui manquait.
- Il marque la leçon comme terminée.
- Résultat observable : la barre de progression se remplit et un carré jaune apparaît pour cette leçon dans le rail.
- Échec / récupération : si la leçon ne se charge pas, un message et un retour au chapitre sont proposés ; il choisit une autre leçon.
- Continuation : il ouvre Progress pour voir la couverture de ses acquis par section et identifier les chapitres restants.
Parcours E — Vérifier sa progression globale (les deux personas)
- L'apprenant authentifié ouvre Progress.
- Il voit les leçons complétées marquées par un carré jaune, les barres réglées par section, et la dernière leçon entamée mise en évidence.
- Résultat observable : il identifie les chapitres complétés et ceux qui restent.
- Échec / récupération : si la progression ne se charge pas, un message et une nouvelle tentative sont proposés.
- Continuation : il ouvre une leçon depuis la liste, ou navigue vers Course pour choisir un chapitre.
Page 11 of 11
6. Visuals Colors and Theme
Muse : Erik Spiekermann — la typographie comme infrastructure. Titre de direction : « Les fondamentaux Linux, expliqués comme une infrastructure. »
Le registre est celui d'un manuel imprimé ou d'un plan de transport : dense, lisible, calme, jamais neutre ni invisible. La couleur est fonctionnelle, comme les lignes d'un plan.
Palette (mode clair)
| Rôle | Hex | Usage |
|---|
| Fond | #F3EFE7 | Sol papier chaud, toutes les pages |
| Surface | #FFFFFF | Contenu de leçon, blocs de code |
| Texte | #1C1A17 | Corps de texte, titres |
| Primaire | #C7351F | Action principale, « ligne courante » de navigation, numéros de chapitre |
| Accent | #E8B21A | Progression et complétion (carrés, barres) |
| Atténué | #6E675D | Métadonnées, résumés, libellés secondaires |
| Tertiaire | #1F7A6B | Réservé à la syntaxe de code et aux sorties terminal — jamais décoratif |
Les couleurs sont utilisées avec parcimonie et toujours fonctionnellement. Chaque section du cours (Terminal, Fichiers, Processus, Réseau) porte sa propre couleur d'accent, utilisée uniquement pour son marqueur de rail, sa règle d'en-tête et sa barre de progression.
Typographie
- Titres : Fira Sans. Graisses 700/800 pour les numéros de chapitre et titres de leçon, grands et serrés ; graisse 500 pour les titres de section
No comments yet. Be the first!