Criando Aplicativos Web
Um projeto raramente é composto apenas de backend. Com o Lino, é possível criar também aplicativos web para consumir as APIs geradas, oferecendo interfaces para usuários finais ou equipes internas.
Atualmente, o framework oferece suporte nativo ao Blazor Web App (modo de renderização interactive auto).
No entanto, a arquitetura foi projetada para permitir a adição de múltiplos frontends na mesma solução, atendendo diferentes cenários e públicos.
Frontends com Blazor Web App
Ao gerar um frontend, o Lino cria automaticamente um projeto Blazor Web App configurado para:
- Roteamento simplificado → estrutura padrão de navegação já configurada.
- Integração nativa com Minimal APIs → consumo direto dos endpoints criados.
- Componentes reutilizáveis para CRUDs → páginas de listagem, criação e edição padronizadas.
- Suporte a autenticação e autorização → caso o serviço esteja configurado para segurança.
Esse frontend já vem preparado para consumir as APIs geradas nos módulos da aplicação, com tipagem forte e integração automática via HttpClient tipado.
Múltiplos frontends
Um projeto pode conter quantos frontends forem necessários. Cada frontend é adicionado como um novo projeto Blazor dentro da solução, compartilhando as mesmas APIs expostas pelo backend.
Exemplos de cenários:
- Site público → páginas acessíveis a clientes ou visitantes.
- Backoffice/Admin → painel interno de gestão para operadores ou equipes administrativas.
- Portal de parceiros → acesso restrito a parceiros, revendedores ou fornecedores.
Essa separação facilita a especialização da interface, mantendo consistência arquitetural no consumo de APIs.
Gerando páginas web
Para acelerar o desenvolvimento de interfaces, o CLI do Lino oferece o comando:
lino page new
Esse comando cria páginas Blazor já conectadas ao backend, seguindo convenções estabelecidas:
- Geração de componentes de formulário → páginas de criação e edição.
- Listagens automáticas → páginas de índice (listagem paginada).
- Integração direta com APIs → conexão automática com os endpoints correspondentes.
Isso permite criar CRUDs completos (frontend → API → CQRS → banco de dados) sem repetição de código manual.
Criando páginas para a entidade Order, por exemplo, teremos a seguinte estrutura criada:
MyApp/
└── src/
└── WebApps/
└── MySite/
└── Services/
└── Pages/
└── Orders/
└── Registration/
├── Order.razor
├── Order.razor.cs
└── Components/
├── Form/
│ ├── OrderForm.razor
│ ├── OrderForm.razor.cs
│ ├── OrderFormExtensions.cs
│ └── OrderFormViewModel.cs
└── Grid/
├── OrderGrid.razor
├── OrderGrid.razor.cs
├── OrderGridExtensions.cs
└── OrderPagedQueryParams.cs
Além disso, são criados serviços integrados para consumir os endpoints de OrdersEndpoints, garantindo a comunicação ponta a ponta:
Frontend → API → Commands/Queries → Banco de Dados
Dessa forma, o Lino entrega um fluxo completo de desenvolvimento full-stack, reduzindo drasticamente o tempo necessário para criar novas funcionalidades.
