{"id":32780312,"url":"https://github.com/lu1zedu/meuecommerceapp","last_synced_at":"2026-05-08T06:31:56.096Z","repository":{"id":321109533,"uuid":"1081351184","full_name":"Lu1zEdu/MeuEcommerceApp","owner":"Lu1zEdu","description":"Ecommerce Simples ","archived":false,"fork":false,"pushed_at":"2025-10-27T19:56:52.000Z","size":583,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-27T21:34:02.659Z","etag":null,"topics":["expo","firebase","mobile","typescript"],"latest_commit_sha":null,"homepage":"https://expo.dev/accounts/m3rl1m/projects/MeuEcommerceApp/builds/08a753c2-414c-417b-b1b3-50c6a9c020c6","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lu1zEdu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-22T16:56:36.000Z","updated_at":"2025-10-27T19:56:56.000Z","dependencies_parsed_at":"2025-10-27T21:34:08.986Z","dependency_job_id":null,"html_url":"https://github.com/Lu1zEdu/MeuEcommerceApp","commit_stats":null,"previous_names":["lu1zedu/meuecommerceapp"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Lu1zEdu/MeuEcommerceApp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lu1zEdu%2FMeuEcommerceApp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lu1zEdu%2FMeuEcommerceApp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lu1zEdu%2FMeuEcommerceApp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lu1zEdu%2FMeuEcommerceApp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lu1zEdu","download_url":"https://codeload.github.com/Lu1zEdu/MeuEcommerceApp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lu1zEdu%2FMeuEcommerceApp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":282686005,"owners_count":26710245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-04T02:00:05.887Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["expo","firebase","mobile","typescript"],"created_at":"2025-11-04T18:01:00.389Z","updated_at":"2025-11-04T18:02:03.894Z","avatar_url":"https://github.com/Lu1zEdu.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n# MeuEcommerceApp (FIAP - CheckPoint 5)\n\n## 📲 Download do APK\n\nO arquivo `.apk` compilado para instalação direta em dispositivos Android pode ser baixado no link abaixo:\n\n[Link do APK](https://expo.dev/accounts/m3rl1m/projects/MeuEcommerceApp/builds/08a753c2-414c-417b-b1b3-50c6a9c020c6)\n\n-----\n\n## 📖 Descrição do Projeto\n\nEste é um projeto acadêmico desenvolvido como parte da avaliação **CheckPoint 5** da FIAP.\n\n**Importante:** Este **não** é um aplicativo de e-commerce funcional e completo, mas sim um protótipo simplificado. O objetivo principal do projeto é demonstrar a aplicação prática e a integração de conceitos avançados de desenvolvimento mobile utilizando React Native com Expo e Firebase.\n\nO foco foi construir uma arquitetura que implementasse todos os requisitos obrigatórios da atividade, servindo como uma fundação que poderia ser expandida para um aplicativo comercial.\n\n## ✅ Requisitos Cumpridos (Checklist)\n\nO projeto implementa todos os 5 requisitos obrigatórios da atividade:\n\n  * **[X] e) Autenticação com Firebase (e-mail/senha) (30 pontos)**\n\n      * Telas de Login (`LoginScreen.tsx`) e Cadastro (`SignupScreen.tsx`).\n      * Gerenciamento de estado de autenticação com persistência local (`AppNavigator.tsx` e `firebaseConfig.ts`).\n\n  * **[X] d) Uso do Firestore para armazenagem de dados (20 pontos)**\n\n      * **Produtos:** Carregamento de produtos da coleção `products` (`ProductListScreen.tsx`).\n      * **Pedidos:** Criação de pedidos na coleção `orders` (`CartScreen.tsx`) e listagem na tela de pedidos (`TransactionScreen.tsx`).\n      * **Lista de Desejos:** Gerenciamento em tempo real (realtime) da lista de desejos na coleção `wishlists` (`WishlistContext.tsx`).\n      * **Avaliações (Reviews):** Leitura de avaliações da coleção `reviews` na tela de detalhes do produto (`ProductDetailScreen.tsx`).\n\n  * **[X] c) Notificação Push Local (20 pontos)**\n\n      * Configuração do `expo-notifications` em `notificationService.ts`.\n      * Botão de teste na tela de Notificações (`NotificationScreen.tsx`).\n      * Notificação local disparada ao finalizar um pedido (`CartScreen.tsx`).\n      * Persistência e listagem de notificações recebidas na tela `NotificationScreen.tsx`.\n\n  * **[X] a) Tema Claro e Tema Escuro (15 pontos)**\n\n      * Gerenciamento de tema via React Context (`ThemeContext.tsx`).\n      * Definições de cores em `src/theme/colors.ts`.\n      * Interruptor (Switch) funcional na tela de Perfil para alternar o tema (`ProfileScreen.tsx`).\n\n  * **[X] b) Internacionalização (PT-EN) (15 pontos)**\n\n      * Configuração do `i18next` em `src/services/i18n.ts`.\n      * Arquivos de tradução `pt.json` e `en.json` em `src/locales/`.\n      * Funcionalidade de troca de idioma na tela de Perfil (`ProfileScreen.tsx`).\n      * Todas as telas e componentes visíveis ao usuário utilizam o sistema de tradução.\n\n-----\n\n## ✨ Funcionalidades Adicionais (Além do Mínimo)\n\nPara tornar o protótipo mais robusto, várias funcionalidades de e-commerce foram implementadas:\n\n  * 🛒 **Carrinho de Compras:** Gerenciamento completo de estado do carrinho (adicionar, remover, incrementar/decrementar) via Context API.\n  * 🛍️ **Seleção de Variações:** Suporte para variações de produtos (ex: cor, tamanho) com preços dinâmicos.\n  * 🧾 **Criação de Pedidos (Simulado):** Ao \"Finalizar Compra\", o carrinho é salvo como um novo pedido no Firestore com status \"Pendente\".\n  * ❤️ **Lista de Desejos (Wishlist):** Sincronizada em tempo real com o Firestore.\n  * 🔍 **Busca de Produtos:** Filtragem de produtos por nome, categoria ou marca na tela inicial.\n  * 👤 **Perfil Avançado:** Além de Logout, Tema e Idioma, o usuário pode:\n      * Alterar sua foto de perfil (salva localmente no dispositivo via `AsyncStorage`).\n      * Atualizar sua senha do Firebase Auth com reautenticação de segurança.\n\n## 🛠️ Tecnologias Utilizadas\n\n  * **React Native (Expo)**\n  * **TypeScript**\n  * **Firebase v9+ (SDK Modular)**\n      * Firebase Authentication\n      * Firestore Database\n  * **React Navigation v6**\n      * Native Stack Navigator\n      * Bottom Tab Navigator\n  * **React Context API** (para gerenciamento de estado global de Tema, Carrinho e Lista de Desejos)\n  * **i18next** (para internacionalização)\n  * **Expo Notifications** (para notificações locais)\n  * **Expo Image Picker** (para seleção de foto de perfil)\n  * **UUID** (para IDs únicos de itens no carrinho)\n\n## 🚀 Como Rodar o Projeto\n\n### 1\\. Pré-requisitos\n\n  * Node.js (LTS)\n  * Conta no Firebase\n  * Expo Go (no celular) ou Emulador Android/iOS\n\n### 2\\. Configuração do Firebase\n\nEste projeto depende de um projeto Firebase configurado.\n\n1.  **Criar Projeto:** Crie um novo projeto no [Console do Firebase](https://console.firebase.google.com/).\n2.  **Configuração do App:** Crie um aplicativo Web (ícone `\u003c/\u003e`) dentro do seu projeto.\n3.  **Copiar Config:** Copie o objeto `firebaseConfig` (com `apiKey`, `authDomain`, etc.) e cole-o no arquivo `src/firebase/firebaseConfig.ts`.\n4.  **Habilitar Serviços:**\n      * No Console do Firebase, habilite o **Authentication** (e ative o provedor E-mail/Senha).\n      * Habilite o **Firestore Database** (inicie em modo de Produção).\n5.  **Regras de Segurança (Obrigatório):**\n      * Vá para **Firestore Database \\\u003e Regras**.\n      * Substitua as regras padrão por estas:\n        ```js\n        rules_version = '2';\n        service cloud.firestore {\n          match /databases/{database}/documents {\n\n            match /products/{productId} {\n              allow read: if true;\n              allow write: if false; \n            }\n\n            match /reviews/{reviewId} {\n              allow read: if true;\n              allow create: if request.auth != null; \n            }\n\n            match /wishlists/{userId} {\n              allow read, write: if request.auth != null \u0026\u0026 request.auth.uid == userId;\n            }\n\n            match /orders/{orderId} {\n              allow read: if request.auth != null \u0026\u0026 request.auth.uid == resource.data.userId;\n              allow create: if request.auth != null \u0026\u0026 request.resource.data.userId == request.auth.uid;\n              allow update, delete: if false;\n            }\n          }\n        }\n        ```\n      * Clique em **Publicar**.\n6.  **Índices do Firestore (Obrigatório):**\n      * Vá para **Firestore Database \\\u003e Índices** e crie os dois índices compostos a seguir:\n      * **Índice 1 (Pedidos):**\n          * **Coleção:** `orders`\n          * **Campos:** `userId` (Crescente) E `createdAt` (Descendente)\n          * **Escopo:** Coleta\n      * **Índice 2 (Avaliações):**\n          * **Coleção:** `reviews`\n          * **Campos:** `productId` (Crescente) E `createdAt` (Descendente)\n          * **Escopo:** Coleta\n      * *Aguarde os índices serem \"Ativados\" (pode levar alguns minutos).*\n7.  **Popular Dados (Obrigatório):**\n      * O app não funcionará sem dados. Adicione manualmente alguns documentos à sua coleção `products` e `reviews` no Firestore para poder testar as funcionalidades de listagem, detalhes, carrinho e lista de desejos.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flu1zedu%2Fmeuecommerceapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flu1zedu%2Fmeuecommerceapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flu1zedu%2Fmeuecommerceapp/lists"}