Primeros pasos con Lino

Lino es una herramienta de línea de comandos para crear, evolucionar y estandarizar aplicaciones .NET profesionales con una arquitectura bien definida. Automatiza tareas repetitivas de scaffolding, pero su propósito va más allá de generar archivos: Lino guía al desarrollador por una estructura técnica consistente, con separación de responsabilidades, capas explícitas, modelado de dominio, casos de uso, APIs, integraciones, eventos, persistencia, aplicaciones web y recursos transversales. El objetivo es acelerar el inicio y la evolución de sistemas reales sin renunciar a calidad, trazabilidad y claridad arquitectónica.

Prerrequisitos

Antes de instalar Lino, verifique que su entorno esté debidamente preparado:

  • .NET 10.0 SDK o superior instalado. Descargar .NET
  • CLI de .NET disponible en el terminal. Verifique con: dotnet --version
  • Git instalado para control de versiones. Descargar Git
  • Entity Framework Core CLI instalada para soporte de migrations: dotnet tool install --global dotnet-ef
  • ✅ Entorno de contenedores compatible con OCI, como Docker Desktop o Podman.

Compatibilidad de plataforma

Lino es multiplataforma y puede utilizarse en los principales sistemas operativos:

  • ✅ Windows
  • ✅ macOS
  • ✅ Linux

Instalación

Lino se distribuye como una herramienta global de .NET. Antes de continuar, asegúrese de tener instalado el SDK de .NET 10 o superior.

Para instalar la versión más reciente, ejecute:

dotnet tool install --global Tolitech.Lino

Después de la instalación, valide el funcionamiento de Lino ejecutando:

lino --version

Si la instalación se realiza correctamente, la versión instalada se mostrará en el terminal.

Autenticación

Después de instalar Lino, es necesario autenticarse para acceder a todas las funcionalidades.

Si ya tiene una cuenta, inicie sesión con el comando:

lino auth login

Se le solicitará informar:

  • Usuario: Dirección de correo electrónico previamente registrada.
  • Contraseña: Contraseña asociada a la cuenta.

Si todavía no tiene una cuenta, regístrese directamente por la CLI utilizando:

lino user register

Durante el registro, informe:

  • Nombre: Primer nombre del usuario.
  • Apellido: Apellido del usuario.
  • Correo electrónico: Dirección de correo electrónico que también servirá como inicio de sesión.
  • Contraseña: Contraseña segura con al menos 6 caracteres.
  • Confirmación de contraseña: Escriba nuevamente la contraseña para validación.

Al concluir el registro, el usuario será autenticado automáticamente.

Preferencias de idioma

De forma predeterminada, la CLI de Lino se muestra en inglés en, pero puede cambiar el idioma según su preferencia entre las opciones disponibles:

en | pt | es | de | fr | it | ja | ko | ru | zh

Para definir un nuevo idioma, ejecute el siguiente comando:

lino preferences culture set --name <culture>

Sustituya <culture> por una de las culturas admitidas. Por ejemplo, use pt para portugués, en para inglés o es para español.

Como alternativa, puede seleccionar el idioma mediante una lista interactiva con:

lino preferences culture set

Ajuste de codificación UTF-8 (opcional)

Para una visualización correcta de idiomas con caracteres especiales (como japonés, coreano, ruso o chino), asegúrese de que su terminal esté configurado para usar la codificación UTF-8.

En Windows PowerShell, ajuste la codificación ejecutando los siguientes comandos:

[console]::InputEncoding = [System.Text.Encoding]::UTF8
[console]::OutputEncoding = [System.Text.Encoding]::UTF8

Nota: En Linux, macOS y Windows Terminal, el soporte de UTF-8 suele ser nativo. Aun así, se recomienda validar la configuración si ocurre algún problema al mostrar caracteres.

Comandos disponibles

Lino organiza su automatización en grupos de comandos. Cada grupo representa una intención arquitectónica: crear la solución, agregar servicios, modelar el dominio, exponer APIs, generar páginas, configurar integraciones, controlar migrations, versionar artefactos y preparar builds.

La referencia más confiable para su máquina es la ayuda de la propia CLI instalada. Use lino --help para ver el árbol completo de comandos y use --help en cualquier grupo para consultar opciones, aliases, parámetros obligatorios y ejemplos.

Como Lino evoluciona continuamente, pueden aparecer nuevos comandos y opciones entre versiones. Trate esta documentación como una orientación de uso y confirme la sintaxis exacta en el terminal siempre que automatice un flujo o capacite a alguien del equipo.

Para mostrar la lista de comandos disponibles, puede ejecutar el comando raíz o solicitar ayuda explícitamente:

lino
lino --help
lino --help
lino project --help
lino database migrations --help
lino integration operation --help

Para ver subcomandos y opciones de cualquier grupo, use el nombre del comando solo o combínelo con --help:

lino <command>
lino <command> --help

Por ejemplo, al consultar el grupo project, la CLI muestra la descripción del grupo, ejemplos comunes y los subcomandos disponibles:

lino project --help
DESCRIPCIÓN:
    Administra proyectos Lino.

EJEMPLOS:
    lino project new --name MyProject
    lino project list

COMANDOS:
    new     Crea un nuevo proyecto.
    list    Lista los proyectos creados.
    delete  Elimina un proyecto existente.

Al leer ejemplos, los valores entre <...> indican argumentos que deben sustituirse por el valor real de su proyecto. Por ejemplo, <ProjectName> debe cambiarse por el nombre de la solución, <ServiceName> por el nombre del servicio y <culture> por una cultura admitida, como pt o en.

Principales grupos de comandos:

GrupoComandos principalesUso
project new, list, delete Crea, lista y elimina proyectos Lino.
service new, list, delete Agrega, lista y elimina servicios backend.
module new, list, delete Agrega, lista y elimina módulos dentro de servicios modulares.
entity new, edit, list, delete Crea, edita, lista y elimina entidades de dominio.
shadow-entity (shadow) new Crea copias locales controladas de datos de otro módulo o servicio.
enumeration (enum) new, edit, list, delete Crea, edita, lista y elimina enumeraciones de dominio.
value-object (vo) new, edit, list, delete Crea, edita, lista y elimina Value Objects.
property (prop) delete Elimina propiedades de entidades de dominio.
command new, list Genera casos de uso de escritura, normalmente vinculados a cambios de estado, reglas transaccionales y validaciones de intención.
query new, list Genera casos de uso de lectura, normalmente enfocados en consulta, proyección y retorno de datos sin alterar estado.
api new, list Genera y lista endpoints de API para casos de uso.
web-app (webapp) new Agrega aplicaciones web.
page new, edit, list Genera, edita y lista páginas Blazor.
event new, edit, list Crea y mantiene eventos de dominio o integración.
event-handler (handler) new, list Crea y lista handlers de eventos.
error-definition (error) new, list Crea definiciones estandarizadas de error.
integration new, list, resource (new/list), operation (new/list), consume Modela integraciones, resources, operaciones y consumidores.
feature background-job add, auth add, tenant add Agrega recursos transversales, incluidos background jobs, autenticación y tenancy.
database migrations add, remove, list, apply, revert Administra migrations de Entity Framework Core.
secret list, set, remove, clear Administra secrets locales del proyecto.
plan add Registra un plan de ejecución asistido por IA.
version show, list, bump Consulta e incrementa versiones de servicios y web apps.
build - Genera artefactos e imágenes de contenedor.
user register Registra un usuario para acceder a las funcionalidades autenticadas de Lino.
auth login, logout Administra la sesión local de la CLI, incluida la autenticación y el cierre de sesión.
preferences culture set Configura preferencias locales de la CLI, como el idioma mostrado en los comandos interactivos.

Algunos comandos muestran un alias corto entre paréntesis por conveniencia. Los nombres originales siguen siendo la referencia principal para lectura, documentación, capacitación, automatizaciones y soporte.

Inicio rápido

Cree rápidamente una aplicación .NET moderna, escalable y preparada para evolución continua con el siguiente comando:

lino project new --name <ProjectName>

Sustituya <ProjectName> por el nombre real de su solución. Por ejemplo, para crear un proyecto llamado MyApp, ejecute lino project new --name MyApp.

Este comando genera una solution .NET estructurada con separación clara entre dominio, aplicación, infraestructura, persistencia, API, orquestación y pruebas. La estructura inicial ayuda a mantener visibles las decisiones arquitectónicas desde el primer commit, evitando que reglas de negocio, acceso a datos, endpoints y detalles operativos queden mezclados en el mismo lugar.

Visualmente, una solución inicial llamada MyApp puede entenderse así:

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/

Este árbol es un ejemplo didáctico de la estructura generada para el proyecto del usuario. Muestra cómo la solución separa ejecución local, servicios, capas técnicas y pruebas desde el inicio.

Qué entrega el proyecto inicial

La solución inicial creada por Lino ya nace organizada por responsabilidades técnicas. En lugar de entregar solo un proyecto vacío, la CLI prepara una base con capas y componentes adecuados para aplicaciones empresariales.

ÁreaResponsabilidad
DomainConcentra entidades, Value Objects, enumerations, eventos de dominio, contratos de repositorio y reglas que pertenecen al negocio.
ApplicationOrquesta casos de uso, comandos, queries, validaciones, handlers y contratos de entrada y salida de la aplicación.
InfrastructureAísla detalles externos, como servicios auxiliares, integraciones, proveedores, autenticación, mensajería y recursos transversales.
PersistenceCentraliza mapeos, contexto de base de datos, migrations, repositorios concretos y unidad de trabajo.
ApiExpone endpoints, contratos HTTP, filtros, autenticación, autorización y documentación de entrada para consumidores externos.
OrquestaciónPrepara la ejecución local de los componentes, observabilidad básica e integración entre servicios durante el desarrollo.
TestsOrganiza pruebas por responsabilidad, permitiendo validar dominio, aplicación, APIs e integraciones de forma progresiva.

El nombre informado en <ProjectName> pasa a formar parte de la identidad técnica de la solución. Elija un nombre corto, estable y representativo, porque se usará en namespaces, assemblies, artefactos, configuraciones y referencias entre componentes.

Principales beneficios:

  • Arquitectura explícita: separación entre reglas de negocio, casos de uso, infraestructura, persistencia y contratos de entrada.
  • Evolución modular: base preparada para servicios tradicionales, monolitos modulares, microservicios y aplicaciones SaaS cuando el contexto lo exija.
  • Patrones técnicos consistentes: soporte para DDD, Clean Architecture, CQRS, eventos, integraciones, migrations, pruebas y observabilidad.
  • Menos trabajo mecánico: generación de estructuras repetitivas para que el desarrollador concentre energía en dominio, reglas, contratos y decisiones de producto.
  • Código más previsible: convenciones de nomenclatura, organización de carpetas y responsabilidades reducen la ambigüedad entre miembros del equipo.

Con Lino, el desarrollador no comienza desde una carpeta vacía ni desde un template genérico. Comienza desde una base opinada, pensada para sistemas empresariales, donde cada artefacto generado tiene una función técnica clara y puede evolucionar de forma incremental.

Se ha producido un error no controlado. Recargar 🗙