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 :

GroupeCommandes principalesUtilisation
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.

ZoneResponsabilité
DomainRegroupe les entités, Value Objects, enumerations, événements de domaine, contrats de repository et rÚgles qui appartiennent au métier.
ApplicationOrchestre les cas d’utilisation, commands, queries, validations, handlers et contrats d’entrĂ©e et de sortie de l’application.
InfrastructureIsole les détails externes, comme les services auxiliaires, intégrations, providers, authentification, messagerie et fonctionnalités transversales.
PersistenceCentralise les mappings, le contexte de base de donnĂ©es, les migrations, les repositories concrets et l’unitĂ© de travail.
ApiExpose endpoints, contrats HTTP, filtres, authentification, autorisation et documentation d’entrĂ©e pour les consommateurs externes.
OrchestrationPrĂ©pare l’exĂ©cution locale des composants, l’observabilitĂ© de base et l’intĂ©gration entre services pendant le dĂ©veloppement.
TestsOrganise 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.

Une erreur non gérée est survenue. Rafraîchir 🗙