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:
| Grupo | Comandos principais | Uso |
|---|---|---|
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.
| Área | Responsabilidade |
|---|---|
| Domain | Concentra entidades, Value Objects, enumerations, eventos de domínio, contratos de repositório e regras que pertencem ao negócio. |
| Application | Orquestra casos de uso, comandos, queries, validações, handlers e contratos de entrada e saída da aplicação. |
| Infrastructure | Isola detalhes externos, como serviços auxiliares, integrações, provedores, autenticação, mensageria e recursos transversais. |
| Persistence | Centraliza mapeamentos, contexto de banco, migrations, repositórios concretos e unidade de trabalho. |
| Api | Expõe endpoints, contratos HTTP, filtros, autenticação, autorização e documentação de entrada para consumidores externos. |
| Orquestração | Prepara a execução local dos componentes, observabilidade básica e integração entre serviços durante o desenvolvimento. |
| Tests | Organiza 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.
