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.

Ocorreu um erro não tratado. Recarregar 🗙