tabbar
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user