🛒 Veja O Preço é um aplicativo iOS focado na experiência do usuário para consulta ágil de ofertas e controle de produtos. Desenvolvido com foco em alta performance e integração com o ecossistema Firebase (Firestore).
Este repositório não é apenas uma entrega técnica; é o reflexo do meu compromisso com a clareza, organização arquitetural e qualidade em cada linha de código, demonstrando o uso avançado de concorrência moderna (async/await) nativa do Swift.
🎯 O Projeto O aplicativo foi construído para conectar usuários às ofertas do banco de dados por consultas pontuais, permitindo a visualização de produtos de forma rápida, segura e elegante.
(A demonstração em vídeo pode ser vista localmente através do arquivo App.mp4 que acompanha o projeto).
- Carrossel Interativo de Categorias: Navegação dinâmica por categorias com micro-animações elásticas nativas (
matchedGeometryEffect) e filtragem reativa instantânea de ofertas. - Validade das Ofertas & Filtro por Supermercado: Seletor horizontal com cards de lojas parceiras, exibindo o período de vigência das promoções e permitindo filtragem combinada instantânea por loja e categoria.
- Vitrine em Grid de 2 Colunas: Exibição em grade moderna (
LazyVGrid) com cards verticais de produtos (OfertaCardView), carregamento assíncrono de fotos, preço em destaque verde, unidade e badge da loja parceira. - Tela de Detalhes do Produto: Apresentação modal fluida (
.sheet) ao tocar em qualquer item da vitrine, exibindo imagem expandida em alta escala, diagnóstico técnico de resolução da foto (Firebase), preço grande, validade e ficha técnica da oferta. - Imersão Técnica: Uso de
async/awaitpara consultas ultrarrápidas na internet, sem bloquear a interface gráfica. - Experiência Conectada: Integração direta com Firestore, utilizando
compactMape protocolosCodablepara garantir que as informações estejam sempre seguras e formatadas corretamente.
A vitrine do Veja o Preço segue um padrão gráfico premium estrito para garantir máxima legibilidade e harmonia visual no app iOS:
- Resolução & Proporção: Imagens quadradas de 400 × 400 px (proporção 1:1) com produto centralizado e respiro de 20 px em todas as bordas (área útil de 360 × 360 px);
- Fundo Branco Puro: Periferia e 4 cantos em
#FFFFFFestrito (RGB: 255, 255, 255), eliminando recortes escuros, artefatos de compressão e fundos coloridos de encartes/tabloides; - Onda 1 (Saneamento de Fundos Pretos/Cinzas): 34 produtos com fundos pretos opacos e sombras cinzas pesadas saneados com packshots de estúdio;
- Onda 2 (Saneamento de Fundos Coloridos de Encarte - Issue #14): 42 produtos com fundos coloridos de tabloides (azul-petróleo Mateus, faixas verdes e gôndolas) 100% substituídos por packshots comerciais de estúdio em alta resolução com fundo branco puro;
- Onda 3 (Saneamento de Off-White e URLs Quebradas - Issue #15): 96 produtos com desvios sutis de tom off-white ou URLs legadas 100% padronizados com fundo
#FFFFFFestrito, concluindo o lote daquela sessão. A conformidade do catálogo atual exige revisão contínua.
O app consulta diretamente ofertas no Firebase veja-o-preco, com filtro expira_em >= agora no servidor e revalidação no cliente. Documentos sem esse campo não são retornados pela consulta. O texto de validade não controla a expiração.
O filtro de expiradas de develop é integrado a main nesta sessão. O build para iOS Simulator passou com CODE_SIGNING_ALLOWED=NO; não foi realizado teste funcional de interface.
Veja Estado atual e a Wiki para contrato, arquitetura e pendências, incluindo o suporte ainda ausente a ofertas com múltiplos supermercados. Nenhuma alteração de dados ou deploy foi realizada.
