Primeiros passos com o Lino

Lino é uma ferramenta de linha de comando para criar, evoluir e padronizar aplicações .NET profissionais com arquitetura bem definida. Ele automatiza tarefas repetitivas de scaffolding, mas seu propósito vai além de gerar arquivos: o Lino conduz o desenvolvedor por uma estrutura técnica consistente, com separação de responsabilidades, camadas explícitas, modelagem de domínio, casos de uso, APIs, integrações, eventos, persistência, aplicações web e recursos transversais. O objetivo é acelerar o início e a evolução de sistemas reais sem abrir mão de qualidade, rastreabilidade e clareza arquitetural.

Pré-requisitos

Antes de instalar o Lino, verifique se seu ambiente está devidamente preparado:

  • .NET 10.0 SDK ou superior instalado. Baixar .NET
  • CLI do .NET disponível no terminal. Verifique com: dotnet --version
  • Git instalado para controle de versão. Baixar Git
  • Entity Framework Core CLI instalada para suporte a migrations: dotnet tool install --global dotnet-ef
  • ✅ Ambiente de contêiner compatível com OCI, como Docker Desktop ou Podman.

Compatibilidade de Plataforma

O Lino é multiplataforma e pode ser utilizado nos principais sistemas operacionais:

  • ✅ Windows
  • ✅ macOS
  • ✅ Linux

Instalação

O Lino é distribuído como uma ferramenta global do .NET. Antes de prosseguir, certifique-se de ter o SDK do .NET 10 ou superior instalado.

Para instalar a versão mais recente, execute:

dotnet tool install --global Tolitech.Lino

Após a instalação, valide o funcionamento do Lino executando:

lino --version

Se a instalação for bem-sucedida, a versão instalada será exibida no terminal.

Autenticação

Após instalar o Lino, é necessário realizar a autenticação para acessar todas as funcionalidades.

Se já possui uma conta, efetue o login com o comando:

lino auth login

Você será solicitado a informar:

  • Usuário: Endereço de e-mail previamente cadastrado.
  • Senha: Senha associada à conta.

Caso ainda não tenha uma conta, registre-se diretamente pelo CLI utilizando:

lino user register

Durante o registro, informe:

  • Nome: Primeiro nome do usuário.
  • Sobrenome: Sobrenome do usuário.
  • E-mail: Endereço de e-mail que servirá também como login.
  • Senha: Senha segura com pelo menos 6 caracteres.
  • Confirmação de Senha: Digite novamente a senha para validação.

Ao concluir o registro, o usuário será autenticado automaticamente.

Preferências de idioma

Por padrão, a CLI do Lino é exibida em inglês en, mas você pode alterar o idioma conforme sua preferência entre as opções disponíveis:

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

Para definir um novo idioma, execute o seguinte comando:

lino preferences culture set --name <culture>

Substitua <culture> por uma das culturas suportadas. Por exemplo, use pt para português, en para inglês ou es para espanhol.

Alternativamente, você pode selecionar o idioma através de uma lista interativa com:

lino preferences culture set

Ajuste de Codificação UTF-8 (opcional)

Para uma exibição correta de idiomas com caracteres especiais (como japonês, coreano, russo ou chinês), certifique-se de que seu terminal esteja configurado para utilizar a codificação UTF-8.

No Windows PowerShell, ajuste a codificação executando os seguintes comandos:

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

Observação: Em sistemas Linux, macOS e Windows Terminal, o suporte a UTF-8 costuma ser nativo. Ainda assim, recomenda-se validar a configuração caso ocorra algum problema na exibição de caracteres.

Comandos disponíveis

O Lino organiza sua automação em grupos de comandos. Cada grupo representa uma intenção arquitetural: criar a solução, adicionar serviços, modelar o domínio, expor APIs, gerar páginas, configurar integrações, controlar migrations, versionar artefatos e preparar builds.

A referência mais confiável para a sua máquina é a ajuda da própria CLI instalada. Use lino --help para ver a árvore completa de comandos e use --help em qualquer grupo para consultar opções, aliases, parâmetros obrigatórios e exemplos.

Como o Lino está em constante evolução, novos comandos e opções podem aparecer entre versões. Por isso, trate esta documentação como orientação de uso e confirme a sintaxe exata no terminal sempre que for automatizar um fluxo ou treinar alguém do time.

Para exibir a lista de comandos disponíveis, você pode executar o comando raiz ou pedir ajuda explicitamente:

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

Para visualizar subcomandos e opções de qualquer grupo, use o nome do comando sozinho ou combine com --help:

lino <command>
lino <command> --help

Por exemplo, ao consultar o grupo project, a CLI mostra a descrição do grupo, exemplos comuns e os subcomandos disponíveis:

lino project --help
DESCRIÇÃO:
    Gerencia projetos Lino.

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

COMANDOS:
    new     Cria um novo projeto.
    list    Lista os projetos criados.
    delete  Remove um projeto existente.

Ao ler exemplos, valores entre <...> indicam argumentos que devem ser substituídos pelo valor real do seu projeto. Por exemplo, <ProjectName> deve ser trocado pelo nome da solução, <ServiceName> pelo nome do serviço e <culture> por uma cultura suportada, como pt ou en.

Principais grupos de comandos:

GrupoComandos principaisUso
project new, list, delete Cria, lista e remove projetos Lino.
service new, list, delete Adiciona, lista e remove serviços backend.
module new, list, delete Adiciona, lista e remove módulos dentro de serviços modulares.
entity new, edit, list, delete Cria, edita, lista e remove entidades de domínio.
shadow-entity (shadow) new Cria cópias locais controladas de dados de outro módulo ou serviço.
enumeration (enum) new, edit, list, delete Cria, edita, lista e remove enumerações de domínio.
value-object (vo) new, edit, list, delete Cria, edita, lista e remove Value Objects.
property (prop) delete Remove propriedades de entidades de domínio.
command new, list Gera casos de uso de escrita, normalmente ligados a mudanças de estado, regras transacionais e validações de intenção.
query new, list Gera casos de uso de leitura, normalmente focados em consulta, projeção e retorno de dados sem alterar estado.
api new, list Gera e lista endpoints de API para casos de uso.
web-app (webapp) new Adiciona aplicações web.
page new, edit, list Gera, edita e lista páginas Blazor.
event new, edit, list Cria e mantém eventos de domínio ou integração.
event-handler (handler) new, list Cria e lista handlers de eventos.
error-definition (error) new, list Cria definições padronizadas de erro.
integration new, list, resource (new/list), operation (new/list), consume Modela integrações, resources, operações e consumidores.
feature background-job add, auth add, tenant add Adiciona recursos transversais, incluindo background jobs, autenticação e tenancy.
database migrations add, remove, list, apply, revert Gerencia migrations do Entity Framework Core.
secret list, set, remove, clear Gerencia secrets locais do projeto.
plan add Registra um plano de execução assistido por IA.
version show, list, bump Consulta e incrementa versões de serviços e web apps.
build - Gera artefatos e imagens de container.
user register Registra um usuário para acesso às funcionalidades autenticadas do Lino.
auth login, logout Gerencia a sessão local da CLI, incluindo autenticação e encerramento de sessão.
preferences culture set Configura preferências locais da CLI, como o idioma exibido nos comandos interativos.

Alguns comandos exibem um alias curto entre parênteses por conveniência. Os nomes originais continuam sendo a referência principal para leitura, documentação, treinamento, automações e suporte.

Início Rápido

Crie rapidamente uma aplicação .NET moderna, escalável e preparada para evolução contínua com o seguinte comando:

lino project new --name <ProjectName>

Substitua <ProjectName> pelo nome real da sua solução. Por exemplo, para criar um projeto chamado MyApp, execute lino project new --name MyApp.

Esse comando gera uma solution .NET estruturada com separação clara entre domínio, aplicação, infraestrutura, persistência, API, orquestração e testes. A estrutura inicial ajuda a manter decisões arquiteturais visíveis desde o primeiro commit, evitando que regras de negócio, acesso a dados, endpoints e detalhes operacionais fiquem misturados no mesmo lugar.

Visualmente, uma solução inicial chamada MyApp pode ser entendida assim:

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/

Essa árvore é um exemplo didático da estrutura gerada para o projeto do usuário. Ela mostra como a solução separa execução local, serviços, camadas técnicas e testes desde o início.

O que o projeto inicial entrega

A solução inicial criada pelo Lino já nasce organizada por responsabilidades técnicas. Em vez de entregar apenas um projeto vazio, a CLI prepara uma base com camadas e componentes próprios para aplicações empresariais.

ÁreaResponsabilidade
DomainConcentra entidades, Value Objects, enumerations, eventos de domínio, contratos de repositório e regras que pertencem ao negócio.
ApplicationOrquestra casos de uso, comandos, queries, validações, handlers e contratos de entrada e saída da aplicação.
InfrastructureIsola detalhes externos, como serviços auxiliares, integrações, provedores, autenticação, mensageria e recursos transversais.
PersistenceCentraliza mapeamentos, contexto de banco, migrations, repositórios concretos e unidade de trabalho.
ApiExpõe endpoints, contratos HTTP, filtros, autenticação, autorização e documentação de entrada para consumidores externos.
OrquestraçãoPrepara a execução local dos componentes, observabilidade básica e integração entre serviços durante o desenvolvimento.
TestsOrganiza testes por responsabilidade, permitindo validar domínio, aplicação, APIs e integrações de forma progressiva.

O nome informado em <ProjectName> passa a compor a identidade técnica da solução. Escolha um nome curto, estável e representativo, porque ele será usado em namespaces, assemblies, artefatos, configurações e referências entre componentes.

Principais benefícios:

  • Arquitetura explícita: separação entre regras de negócio, casos de uso, infraestrutura, persistência e contratos de entrada.
  • Evolução modular: base preparada para serviços tradicionais, monólitos modulares, microsserviços e aplicações SaaS quando o contexto exigir.
  • Padrões técnicos consistentes: suporte a DDD, Clean Architecture, CQRS, eventos, integrações, migrations, testes e observabilidade.
  • Menos trabalho mecânico: geração de estruturas repetitivas para que o desenvolvedor concentre energia em domínio, regras, contratos e decisões de produto.
  • Código mais previsível: convenções de nomenclatura, organização de pastas e responsabilidades reduzem ambiguidade entre membros do time.

Com o Lino, o desenvolvedor não começa de uma pasta vazia nem de um template genérico. Ele começa de uma base opinativa, pensada para sistemas empresariais, onde cada artefato gerado tem uma função técnica clara e pode ser evoluído de forma incremental.

Ocorreu um erro não tratado. Recarregar 🗙