# 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. - `[🟨]` Perfil com redesign visual alinhado a referencia, header no topo, lista de atalhos e confirmacao de logout. - `[🟨]` Enderecos com lista real, criacao, edicao (reuso da tela de novo endereco) e exclusao por swipe compativel com Android. ## 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 - `[🟩]` 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) - `[🟨]` Etapa geral 1. `[🟩]` Tela Login (MVP). 2. `[🟩]` Tela Cadastro (MVP UI). 3. `[🟨]` Tela OTP (8 digitos). - `[🟩]` Feito: fluxo OTP integrado no login por email e telefone. - `[🟥]` 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) - `[🟨]` 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 - `[🟥]` 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 - `[🟥]` 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 - `[🟥]` 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 - `[🟥]` 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 - `[🟨]` Etapa geral 1. `[🟨]` Perfil do usuario. - `[🟩]` Feito: tela refeita com layout de referencia, header no topo, itens de menu, CTA de logout e confirmacao por alert. - `[🟥]` Pendente: edicao completa de perfil e dados 100% vindos/sincronizados da API. 2. `[🟩]` Lista de enderecos. - `[🟩]` Feito: carregamento de enderecos, selecao, estado principal e persistencia local da selecao. 3. `[🟩]` Criar/editar/excluir endereco. - `[🟩]` Feito: criacao, edicao reutilizando a mesma tela e exclusao por swipe com compatibilidade Android. ## Etapa 9 — Mapa e 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 - `[🟥]` Etapa geral 1. `[🟨]` Dark mode (presente em partes de auth). 2. `[🟨]` Estados vazios e erros. 3. `[🟥]` Performance e cache. 4. `[🟥]` Build iOS e Android (ha bloqueio atual de dependencia `LCEssentials` em `StoreDetailView.swift`). 5. `[🟥]` Export APK/AAB. ## Etapa 11 — Ajustes de UI (referencias) - `[🟨]` 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. 5. `[🟥]` Corrigir bloqueio de build por dependencia (`LCEssentials`) para fechar validacao iOS/Android ponta a ponta.