Especificação de Contratos: Web App Manifest & Ícones PWA
Esta especificação define os contratos de interface das rotas de Progressive Web App (PWA) no servidor Nitro e na renderização isomórfica Nuxt 4.
1. Rota Canônica do Manifest
-
Caminho:
/manifest.webmanifest -
Método:
GET,HEAD -
Content-Type:
application/manifest+json; charset=utf-8 -
Roteamento: Mapeado via
server/routes/manifest.webmanifest.ts.
1.1 Cabeçalhos HTTP
| Cabeçalho | Valor / Diretiva |
|---|---|
|
|
|
|
|
|
|
|
1.2 Parâmetros de Consulta (Query String)
| Parâmetro | Tipo | Obrigatório | Regra de Validação |
|---|---|---|---|
|
|
Não |
Aceito estritamente em ambiente de desenvolvimento ( |
1.3 Estrutura do Payload JSON
| Campo | Tipo | Descrição |
|---|---|---|
|
|
Identificador único de instalação. Sempre |
|
|
Nome empresarial da marca parceira (ex.: |
|
|
Nome resumido para launchers e gavetas de aplicativos (máx. 12 caracteres). |
|
|
Descrição institucional da plataforma corporativa. |
|
|
URL de entrada do aplicativo ( |
|
|
Escopo de navegação ( |
|
|
Modo de exibição ( |
|
|
Preferência por janelas integradas ( |
|
|
Cor estática da barra de título do aplicativo ( |
|
|
Cor estática da splash screen nativa ( |
|
|
Coleção de variantes de ícones ( |
2. Endpoint Gerador de Ícones
-
Caminho:
/api/pwa-icon -
Métodos:
GET,HEAD -
Content-Type:
image/png -
Roteamento: Mapeado via
server/api/pwa-icon.ts.
2.1 Parâmetros de Consulta (Query String)
| Parâmetro | Tipo | Obrigatório | Regra de Validação |
|---|---|---|---|
|
|
Sim |
Aceita estritamente |
|
|
Não |
Aceita |
|
|
Não |
Hash ou timestamp de versão de branding utilizado para cache busting determinístico. |
|
|
Não |
Domínio do parceiro para resolução de logo/monograma em testes locais (ignorado em produção). |
3. Metatags SSR de Integração (Apple Safari & Web Clips)
Injetadas sincronamente durante o Server-Side Rendering no app/app.vue com resolução reativa de domínio:
<!-- Manifesto Canônico W3C (sensível a ?domain= em ambiente local) -->
<link rel="manifest" href="/manifest.webmanifest?domain=app.rocketz.me">
<!-- Ícone Web Clip para iOS / iPadOS -->
<link rel="apple-touch-icon" sizes="180x180" href="/api/pwa-icon?size=180&purpose=any&domain=app.rocketz.me">
<!-- Título e Modo Standalone no iOS -->
<meta name="apple-mobile-web-app-title" content="{partnerName}">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">