Frontend Multi-Projeto (fuji-loja)

O frontend da Loja (fuji-loja) é um workspace Angular multi-projeto: três aplicações deployáveis independentes mais uma biblioteca compartilhada.

Projetos

Projeto Tipo Serve em Build output

landing

App

/ (seleção de papel)

dist/landing/

vitrine

App

/storefront/

dist/vitrine/

store

App

/admin/

dist/store/

shared

Lib (sem build)

via @fuji-loja/shared

—

Código compartilhado entre as três aplicações (modelos, serviços, componentes) vive em shared e é importado como @fuji-loja/shared.

Autenticação entre apps

Como são três aplicações separadas, o estado de papel do usuário é persistido em sessionStorage (chave fuji-role) para sobreviver à navegação entre elas. A navegação entre apps usa window.location.href (recarga completa), não o Angular Router — cada app é um bundle independente.

O acesso é protegido por um guard de entrada (executado na inicialização das apps vitrine/store), desabilitado em modo de desenvolvimento.

Autenticação com o backend (BFF)

O frontend consome a Loja através do mesmo BFF (oauth2-proxy) usado pelas demais SPAs do FUJI — ver Gateway / BFF (Token Handler Pattern). Endpoints relevantes: /oauth2/start (login), /oauth2/sign_out (logout) e /userinfo (dados do usuário autenticado).

As rotas /login e /logout do oauth2-proxy não fazem login/logout — são rotas protegidas genéricas que redirecionam ao Keycloak, reautenticando via SSO. Usar sempre /oauth2/start e /oauth2/sign_out.