This commit is contained in:
Daniel Arantes Loverde
2026-02-06 09:51:53 -03:00
parent 379bb35cfa
commit 92c2a67736
13 changed files with 574 additions and 138 deletions

View File

@@ -1,90 +1,128 @@
# Plano de implementacao do app PediFoods (Skip + SwiftUI)
## Legenda
- `[🟥]` Nao feito
- `[🟨]` Parcial
- `[🟩]` Completo
## Estado atual (snapshot)
- `[🟩]` Base Skip + SwiftUI criada e compilando com fluxos `auth` e `main`.
- `[🟩]` Design system ativo com paleta, tipografia (Plus Jakarta Sans), raios e sombras.
- `[🟨]` Autenticacao com fluxo funcional de login por email/OTP (integracao inicial de API) e cadastro com navegacao pronta.
- `[🟨]` Home refeita com layout de referencia (header verde, categorias, cards, specials) e efeito de colapso em iOS.
- `[🟩]` Estado global (`AppState`) em uso para sessao, perfil, endereco, carrinho e favoritos.
- `[🟩]` API client/service com envelopes, retry/backoff, tratamento de erros/rate limit, politica de sessao expirada e persistencia segura de JWT no iOS.
## Premissas de design e navegacao
- A tabbar e o centro de navegacao. Toda navegacao que nao for modal/over-context acontece dentro da tabbar.
- Login e cadastro ficam fora da tabbar. Ao logar/cadastrar, a Home abre ja com as tabs ativas.
- O verde da imagem `home_tabs.png` e o primary. O verde fluorescente sera usado raramente e fica como cor terciaria.
- Tipografia base: Plus Jakarta Sans.
## Etapa 1 — Fundacao tecnica (obrigatoria antes das telas)
1. Criar o projeto Skip (Fuse) e estrutura base de pastas.
2. Configurar tokens do design system e tema (cores, tipografia, espacamentos, raios, sombras).
3. Implementar o service base de API:
- Camada HTTP
- Headers padrao
- Tokens por modulo (customer, store, resource)
- Tratamento de erros e rate limit
- Persistencia segura de JWT
4. Criar um coordinator de navegacao:
- Fluxo de autenticacao (login/cadastro/OTP) fora da tabbar
- Fluxo principal com tabbar (Home, Cart, Orders, Profile)
- Modais over-context (address, filtros, etc)
5. Configurar state global (sessao, perfil, cart, endereco ativo, favoritos).
6. Integrar permissions e GPS:
- Solicitar permissao ao cadastrar endereço
- Obter localizacao atual ao cadastrar endereço
- Cache de ultima localizacao valida
## Etapa 1 — Fundacao tecnica
- `[🟩]` Etapa geral
1. `[🟩]` Projeto Skip e estrutura base.
2. `[🟩]` Design system (cores/tipo/layout).
3. `[🟩]` Service base de API.
- `[🟩]` Feito: camada HTTP, headers padrao, tokens por modulo, tratamento de HTTP e 429, retry/backoff para falhas transientes, decode de erro com payload, politica de sessao expirada (`401/403`), limpeza de token em expiracao, persistencia de JWT em Keychain (iOS).
4. `[🟩]` Coordinator de navegacao.
- `[🟩]` Feito: fluxo `auth` -> `main`, tabbar com Home/Cart/Orders/Profile.
- `[🟩]` Feito: base de modais over-context (address picker e filtros) via `sheet` centralizado.
5. `[🟩]` State global (MVP).
6. `[🟩]` Permissions e GPS.
- `[🟩]` Feito: permissao/obter localizacao no iOS via `CoreLocation`, fallback de UX quando localizacao nao e obtida.
- `[🟩]` Feito: permissao de localizacao no Android (manifest + runtime request), cache de ultima localizacao valida e fallback para indisponivel/negado.
## Etapa 2 — Autenticacao (fora da tabbar)
1. Tela Login
2. Tela Cadastro
3. Tela OTP (8 digitos)
4. Fluxo pos-login:
- Buscar perfil
- Abrir Home com tabbar ativa
- `[🟨]` Etapa geral
1. `[🟩]` Tela Login (MVP).
2. `[🟩]` Tela Cadastro (MVP UI).
3. `[🟨]` Tela OTP (8 digitos).
- `[🟩]` Feito: fluxo OTP integrado no login por email.
- `[🟥]` Pendente: UX final de OTP em 8 digitos conforme referencia final.
4. `[🟨]` Fluxo pos-login.
- `[🟩]` Feito: login valida token e entra no fluxo principal.
- `[🟥]` Pendente: buscar perfil completo e sincronizar estado antes da Home.
## Etapa 3 — Home e listagem de lojas (Tab Home)
1. Home com header, busca e categorias
2. Listagem de lojas (API /api/app/stores com lat/lng)
3. Filtros e busca
4. Favoritos
- `[🟨]` Etapa geral
1. `[🟩]` Home com header, busca e categorias (MVP visual).
2. `[🟨]` Listagem de lojas via API `/api/app/stores`.
- `[🟩]` Feito: metodo de service pronto.
- `[🟥]` Pendente: bind real da Home com dados de API (atualmente usa mocks visuais).
3. `[🟨]` Filtros e busca.
- `[🟩]` Feito: UI base de busca/categorias e gatilho de modal de filtros.
- `[🟥]` Pendente: filtros reais + query server-side.
4. `[🟨]` Favoritos.
- `[🟩]` Feito: estado e affordance visual no card.
- `[🟥]` Pendente: persistencia/sync com backend.
## Etapa 4 — Store Detail e Catalogo
1. Tela de detalhes da loja
2. Catalogo por categorias
3. Produtos com addons
4. Favoritos de loja
- `[🟥]` Etapa geral
1. `[🟥]` Tela de detalhes da loja.
2. `[🟥]` Catalogo por categorias.
3. `[🟥]` Produtos com addons.
4. `[🟥]` Favoritos de loja.
## Etapa 5 — Produto e carrinho
1. Tela de produto (detalhes + adicionais)
2. Carrinho (Tab Cart)
3. Atualizacao de quantidade e subtotal
- `[🟥]` Etapa geral
1. `[🟥]` Tela de produto (detalhes + adicionais).
2. `[🟨]` Carrinho (Tab Cart).
- `[🟩]` Feito: tab e tela placeholder.
- `[🟥]` Pendente: itens reais, regra de negocio e estados.
3. `[🟥]` Quantidade e subtotal.
## Etapa 6 — Checkout e pagamento
1. Tela de checkout
2. Endereco de entrega
3. Metodos de pagamento (PIX, credito, debito, dinheiro)
4. Criacao de pedido
5. Fluxo de PIX (payload e QR)
- `[🟥]` Etapa geral
1. `[🟥]` Tela de checkout.
2. `[🟥]` Endereco de entrega.
3. `[🟥]` Metodos de pagamento (PIX/credito/debito/dinheiro).
4. `[🟥]` Criacao de pedido.
5. `[🟥]` Fluxo de PIX (payload e QR).
## Etapa 7 — Pedidos e rastreio (Tab Orders)
1. Lista de pedidos
2. Detalhe do pedido
3. Tracking de status
## Etapa 7 — Pedidos e rastreio
- `[🟥]` Etapa geral
1. `[🟨]` Lista de pedidos.
- `[🟨]` Feito: tab Orders criada + tela placeholder.
- `[🟥]` Pendente: lista real, detalhe e tracking.
2. `[🟥]` Detalhe do pedido.
3. `[🟥]` Tracking de status.
## Etapa 8 — Perfil e enderecos (Tab Profile)
1. Perfil do usuario
2. Lista de enderecos
3. Criar/editar endereco
## Etapa 8 — Perfil e enderecos
- `[🟥]` Etapa geral
1. `[🟨]` Perfil do usuario.
- `[🟩]` Feito: tela com dados do estado e logout.
- `[🟥]` Pendente: edicao completa e dados vindos da API.
2. `[🟥]` Lista de enderecos.
3. `[🟥]` Criar/editar endereco.
## Etapa 9 — Mapa e GPS
1. Mapa iOS via MapKit
2. Mapa Android via ComposeView (Google Maps)
3. Pinos de loja e localizacao atual
4. Ajustes de permissao e fallback sem GPS
- `[🟥]` Etapa geral
1. `[🟥]` Mapa iOS via MapKit.
2. `[🟥]` Mapa Android via ComposeView (Google Maps).
3. `[🟥]` Pinos de loja e localizacao atual.
4. `[🟨]` Ajustes de permissao e fallback sem GPS.
## Etapa 10 — Polimento e release
1. Dark mode
2. Estados vazios e erros
3. Performance e cache
4. Build iOS e Android
5. Export APK/AAB
- `[🟥]` Etapa geral
1. `[🟨]` Dark mode (presente em partes de auth).
2. `[🟨]` Estados vazios e erros.
3. `[🟥]` Performance e cache.
4. `[🟨]` Build iOS e Android (estrutura pronta, falta validacao final de fluxo completo).
5. `[🟥]` Export APK/AAB.
## Etapa 11 — Ajustes de UI (referencias)
1. Login (light/dark)
2. Cadastro
3. OTP
4. Carrinho
5. Checkout
6. Perfil
7. Pedidos
- `[🟨]` Etapa geral
1. `[🟨]` Login (light/dark).
2. `[🟨]` Cadastro.
3. `[🟨]` OTP.
4. `[🟥]` Carrinho.
5. `[🟥]` Checkout.
6. `[🟨]` Perfil.
7. `[🟨]` Pedidos.
## Proximos focos recomendados
1. `[🟨]` Conectar Home com API real (`stores`, busca, categoria, favoritos).
2. `[🟨]` Fechar fluxo auth pos-login (perfil + hidratacao de estado).
3. `[🟥]` Implementar carrinho real (itens, subtotal, edicao) para destravar checkout.
4. `[🟥]` Implementar mapa e tracking de pedidos.