Premiers pas avec Lino
Lino est un outil en ligne de commande pour crĂ©er, faire Ă©voluer et standardiser des applications .NET professionnelles avec une architecture bien dĂ©finie. Il automatise les tĂąches rĂ©pĂ©titives de scaffolding, mais son objectif va au-delĂ de la gĂ©nĂ©ration de fichiers : Lino guide le dĂ©veloppeur dans une structure technique cohĂ©rente, avec sĂ©paration des responsabilitĂ©s, couches explicites, modĂ©lisation du domaine, cas dâutilisation, APIs, intĂ©grations, Ă©vĂ©nements, persistance, applications web et fonctionnalitĂ©s transversales. Lâobjectif est dâaccĂ©lĂ©rer le dĂ©marrage et lâĂ©volution de systĂšmes rĂ©els sans renoncer Ă la qualitĂ©, Ă la traçabilitĂ© et Ă la clartĂ© architecturale.
Prérequis
Avant dâinstaller Lino, vĂ©rifiez que votre environnement est correctement prĂ©parĂ© :
- â SDK .NET 10.0 ou supĂ©rieur installĂ©. TĂ©lĂ©charger .NET
- â
CLI .NET disponible dans le terminal. Vérifiez avec :
dotnet --version - â Git installĂ© pour le contrĂŽle de version. TĂ©lĂ©charger Git
- â
Entity Framework Core CLI installée pour la prise en charge des migrations :
dotnet tool install --global dotnet-ef - â Environnement de conteneurs compatible OCI, comme Docker Desktop ou Podman.
Compatibilité de plateforme
Lino est multiplateforme et peut ĂȘtre utilisĂ© sur les principaux systĂšmes dâexploitation :
- â Windows
- â macOS
- â Linux
Installation
Lino est distribuĂ© comme un outil global .NET. Avant de continuer, assurez-vous dâavoir installĂ© le SDK .NET 10 ou supĂ©rieur.
Pour installer la version la plus récente, exécutez :
dotnet tool install --global Tolitech.Lino
AprĂšs lâinstallation, validez le fonctionnement de Lino en exĂ©cutant :
lino --version
Si lâinstallation rĂ©ussit, la version installĂ©e sera affichĂ©e dans le terminal.
Authentification
AprÚs avoir installé Lino, vous devez vous authentifier pour accéder à toutes les fonctionnalités.
Si vous avez déjà un compte, connectez-vous avec la commande :
lino auth login
Il vous sera demandĂ© dâindiquer :
- Utilisateur : adresse e-mail préalablement enregistrée.
- Mot de passe : mot de passe associé au compte.
Si vous nâavez pas encore de compte, inscrivez-vous directement via la CLI avec :
lino user register
Pendant lâinscription, indiquez :
- PrĂ©nom : prĂ©nom de lâutilisateur.
- Nom : nom de lâutilisateur.
- E-mail : adresse e-mail qui servira Ă©galement dâidentifiant de connexion.
- Mot de passe : mot de passe sĂ©curisĂ© dâau moins 6 caractĂšres.
- Confirmation du mot de passe : saisissez de nouveau le mot de passe pour validation.
Une fois lâinscription terminĂ©e, lâutilisateur sera automatiquement authentifiĂ©.
Préférences de langue
Par défaut, la CLI de Lino est affichée en anglais en, mais vous pouvez changer la langue selon votre préférence parmi les options disponibles :
en | pt | es | de | fr | it | ja | ko | ru | zh
Pour définir une nouvelle langue, exécutez la commande suivante :
lino preferences culture set --name <culture>
Remplacez <culture> par lâune des cultures prises en charge. Par exemple, utilisez pt pour le portugais, en pour lâanglais ou es pour lâespagnol.
Vous pouvez également sélectionner la langue dans une liste interactive avec :
lino preferences culture set
Ajustement de lâencodage UTF-8 (facultatif)
Pour un affichage correct des langues avec des caractĂšres spĂ©ciaux (comme le japonais, le corĂ©en, le russe ou le chinois), assurez-vous que votre terminal est configurĂ© pour utiliser lâencodage UTF-8.
Dans Windows PowerShell, ajustez lâencodage en exĂ©cutant les commandes suivantes :
[console]::InputEncoding = [System.Text.Encoding]::UTF8
[console]::OutputEncoding = [System.Text.Encoding]::UTF8
Remarque : Sur Linux, macOS et Windows Terminal, la prise en charge dâUTF-8 est gĂ©nĂ©ralement native. Il est tout de mĂȘme recommandĂ© de valider la configuration si un problĂšme dâaffichage des caractĂšres survient.
Commandes disponibles
Lino organise son automatisation en groupes de commandes. Chaque groupe représente une intention architecturale : créer la solution, ajouter des services, modéliser le domaine, exposer des APIs, générer des pages, configurer des intégrations, contrÎler les migrations, versionner les artefacts et préparer les builds.
La rĂ©fĂ©rence la plus fiable pour votre machine est lâaide de la CLI installĂ©e elle-mĂȘme. Utilisez lino --help pour voir lâarborescence complĂšte des commandes et utilisez --help sur nâimporte quel groupe pour consulter les options, aliases, paramĂštres obligatoires et exemples.
Comme Lino Ă©volue en continu, de nouvelles commandes et options peuvent apparaĂźtre entre deux versions. ConsidĂ©rez cette documentation comme une orientation dâutilisation et confirmez la syntaxe exacte dans le terminal chaque fois que vous automatisez un flux ou formez quelquâun dans lâĂ©quipe.
Pour afficher la liste des commandes disponibles, vous pouvez exĂ©cuter la commande racine ou demander explicitement lâaide :
lino lino --help
lino --help lino project --help lino database migrations --help lino integration operation --help
Pour afficher les sous-commandes et les options de nâimporte quel groupe, utilisez le nom de la commande seul ou combinez-le avec --help :
lino <command> lino <command> --help
Par exemple, lorsque vous consultez le groupe project, la CLI affiche la description du groupe, des exemples courants et les sous-commandes disponibles :
lino project --help
DESCRIPTION:
GĂšre les projets Lino.
EXEMPLES:
lino project new --name MyProject
lino project list
COMMANDES:
new Crée un nouveau projet.
list Liste les projets créés.
delete Supprime un projet existant.Dans les exemples, les valeurs entre <...> indiquent des arguments qui doivent ĂȘtre remplacĂ©s par la valeur rĂ©elle de votre projet. Par exemple, <ProjectName> doit ĂȘtre remplacĂ© par le nom de la solution, <ServiceName> par le nom du service et <culture> par une culture prise en charge, comme pt ou en.
Principaux groupes de commandes :
| Groupe | Commandes principales | Utilisation |
|---|---|---|
project |
new, list, delete |
Crée, liste et supprime des projets Lino. |
service |
new, list, delete |
Ajoute, liste et supprime des services backend. |
module |
new, list, delete |
Ajoute, liste et supprime des modules dans des services modulaires. |
entity |
new, edit, list, delete |
Crée, modifie, liste et supprime des entités de domaine. |
shadow-entity (shadow) |
new |
Crée des copies locales contrÎlées de données provenant d'un autre module ou service. |
enumeration (enum) |
new, edit, list, delete |
Crée, modifie, liste et supprime des énumérations de domaine. |
value-object (vo) |
new, edit, list, delete |
Crée, modifie, liste et supprime des Value Objects. |
property (prop) |
delete |
Supprime des propriétés d'entités de domaine. |
command |
new, list |
GénÚre des cas d'utilisation d'écriture, généralement liés aux changements d'état, aux rÚgles transactionnelles et aux validations d'intention. |
query |
new, list |
GĂ©nĂšre des cas d'utilisation de lecture, gĂ©nĂ©ralement axĂ©s sur les requĂȘtes, la projection et le retour de donnĂ©es sans modifier l'Ă©tat. |
api |
new, list |
GénÚre et liste des endpoints d'API pour les cas d'utilisation. |
web-app (webapp) |
new |
Ajoute des applications web. |
page |
new, edit, list |
GénÚre, modifie et liste des pages Blazor. |
event |
new, edit, list |
Crée et maintient des événements de domaine ou d'intégration. |
event-handler (handler) |
new, list |
Crée et liste des handlers d'événements. |
error-definition (error) |
new, list |
Crée des définitions d'erreur standardisées. |
integration |
new, list, resource (new/list), operation (new/list), consume |
Modélise les intégrations, resources, opérations et consommateurs. |
feature |
background-job add, auth add, tenant add |
Ajoute des fonctionnalités transverses, notamment les tùches en arriÚre-plan, l'authentification et le multi-tenant. |
database migrations |
add, remove, list, apply, revert |
GĂšre les migrations Entity Framework Core. |
secret |
list, set, remove, clear |
GĂšre les secrets locaux du projet. |
plan |
add |
Enregistre un plan d'exécution assisté par IA. |
version |
show, list, bump |
Consulte et incrémente les versions des services et des web apps. |
build |
- | GénÚre des artefacts et des images de conteneur. |
user |
register |
Inscrit un utilisateur pour accéder aux fonctionnalités authentifiées de Lino. |
auth |
login, logout |
GÚre la session locale de la CLI, y compris l'authentification et la déconnexion. |
preferences |
culture set |
Configure les préférences locales de la CLI, comme la langue affichée dans les commandes interactives. |
Certaines commandes affichent un alias court entre parenthÚses par commodité. Les noms originaux restent la référence principale pour la lecture, la documentation, la formation, les automatisations et le support.
Démarrage rapide
CrĂ©ez rapidement une application .NET moderne, Ă©volutive et prĂȘte pour une Ă©volution continue avec la commande suivante :
lino project new --name <ProjectName>
Remplacez <ProjectName> par le vrai nom de votre solution. Par exemple, pour créer un projet appelé MyApp, exécutez lino project new --name MyApp.
Cette commande gĂ©nĂšre une solution .NET structurĂ©e avec une sĂ©paration claire entre domaine, application, infrastructure, persistance, API, orchestration et tests. La structure initiale aide Ă garder les dĂ©cisions architecturales visibles dĂšs le premier commit, en Ă©vitant que les rĂšgles mĂ©tier, lâaccĂšs aux donnĂ©es, les endpoints et les dĂ©tails opĂ©rationnels soient mĂ©langĂ©s au mĂȘme endroit.
Visuellement, une solution initiale appelĂ©e MyApp peut ĂȘtre comprise ainsi :
MyApp/ âââ MyApp.slnx âââ src/ â âââ Aspire/ â â âââ AppHost/ â â â âââ MyApp.AppHost.csproj â â âââ ServiceDefaults/ â â âââ MyApp.ServiceDefaults.csproj â âââ Services/ â âââ Shared/ â âââ Api/ â â âââ MyApp.Shared.Api.csproj â âââ Application/ â â âââ MyApp.Shared.Application.csproj â âââ Domain/ â â âââ MyApp.Shared.Domain.csproj â âââ Infrastructure/ â â âââ MyApp.Shared.Infrastructure.csproj â âââ Infrastructure.Persistence/ â âââ MyApp.Shared.Infrastructure.Persistence.csproj âââ tests/
Cet arbre est un exemple pĂ©dagogique de la structure gĂ©nĂ©rĂ©e pour le projet de lâutilisateur. Il montre comment la solution sĂ©pare dĂšs le dĂ©part lâexĂ©cution locale, les services, les couches techniques et les tests.
Ce que fournit le projet initial
La solution initiale créée par Lino naĂźt dĂ©jĂ organisĂ©e par responsabilitĂ©s techniques. Au lieu de livrer seulement un projet vide, la CLI prĂ©pare une base avec des couches et des composants adaptĂ©s aux applications dâentreprise.
| Zone | Responsabilité |
|---|---|
| Domain | Regroupe les entités, Value Objects, enumerations, événements de domaine, contrats de repository et rÚgles qui appartiennent au métier. |
| Application | Orchestre les cas dâutilisation, commands, queries, validations, handlers et contrats dâentrĂ©e et de sortie de lâapplication. |
| Infrastructure | Isole les détails externes, comme les services auxiliaires, intégrations, providers, authentification, messagerie et fonctionnalités transversales. |
| Persistence | Centralise les mappings, le contexte de base de donnĂ©es, les migrations, les repositories concrets et lâunitĂ© de travail. |
| Api | Expose endpoints, contrats HTTP, filtres, authentification, autorisation et documentation dâentrĂ©e pour les consommateurs externes. |
| Orchestration | PrĂ©pare lâexĂ©cution locale des composants, lâobservabilitĂ© de base et lâintĂ©gration entre services pendant le dĂ©veloppement. |
| Tests | Organise les tests par responsabilitĂ©, permettant de valider progressivement le domaine, lâapplication, les APIs et les intĂ©grations. |
Le nom indiquĂ© dans <ProjectName> devient une partie de lâidentitĂ© technique de la solution. Choisissez un nom court, stable et reprĂ©sentatif, car il sera utilisĂ© dans les namespaces, assemblies, artefacts, configurations et rĂ©fĂ©rences entre composants.
Principaux bénéfices :
- Architecture explicite : sĂ©paration entre rĂšgles mĂ©tier, cas dâutilisation, infrastructure, persistance et contrats dâentrĂ©e.
- Ăvolution modulaire : base prĂ©parĂ©e pour des services traditionnels, monolithes modulaires, microservices et applications SaaS lorsque le contexte lâexige.
- Standards techniques cohérents : prise en charge de DDD, Clean Architecture, CQRS, événements, intégrations, migrations, tests et observabilité.
- Moins de travail mécanique : génération de structures répétitives pour que le développeur concentre son énergie sur le domaine, les rÚgles, les contrats et les décisions produit.
- Code plus prĂ©visible : conventions de nommage, organisation des dossiers et responsabilitĂ©s rĂ©duisent lâambiguĂŻtĂ© entre les membres de lâĂ©quipe.
Avec Lino, le dĂ©veloppeur ne commence pas depuis un dossier vide ni depuis un template gĂ©nĂ©rique. Il commence depuis une base opinionated, pensĂ©e pour les systĂšmes dâentreprise, oĂč chaque artefact gĂ©nĂ©rĂ© a une fonction technique claire et peut Ă©voluer de maniĂšre incrĂ©mentale.
