Aplicativo Flutter de rede social com detecção de emoções desenvolvido pela Wortya.
POPMe é uma aplicação móvel de rede social que permite aos usuários compartilhar vídeos e interagir através de comentários, reações e funcionalidades avançadas de detecção de emoções usando inteligência artificial.
Este projeto segue os princípios da Clean Architecture com uma estrutura modular:
pop_me/
├── commons/ # 17 módulos de infraestrutura compartilhada
│ ├── analytics - Firebase Analytics
│ ├── core - Abstrações base, utilitários, exceções
│ ├── crash_report - Crashlytics e relatórios de erro
│ ├── emotion_detection - Detecção de emoções com TFLite
│ ├── emotion_utils - Verificação de capacidade de dispositivo
│ ├── face_detection - Detecção facial em frames de câmera
│ ├── navigation - Roteamento e navegação
│ ├── network - Clientes HTTP (Dio), interceptors
│ ├── notifications - FCM, push notifications, badge service
│ ├── recording - Gravação, compressão e upload de vídeo
│ ├── remote_config - Firebase Remote Config
│ ├── security - OAuth, tokens, armazenamento seguro
│ ├── tutorial_check - Experiência do primeiro uso
│ ├── user - Modelos e serviços de usuário
│ ├── validator - Validação de entrada
│ ├── video - Utilitários de reprodução de vídeo
│ └── video_composition - Composição e mesclagem de vídeo
│
├── design_system/ # Componentes de UI
│ ├── core - Tema, cores, tipografia, design tokens
│ ├── components - Widgets reutilizáveis, sistema de câmera
│ └── sample - Showcase de componentes
│
├── features/ # 19 módulos de funcionalidades
│ ├── authentication - Login e autenticação
│ ├── challenge - Desafios e prompts
│ ├── configuration - Configurações do app
│ ├── custom_lists - Listas de conteúdo personalizadas
│ ├── emotion_evaluation - Análise pós-gravação de emoções
│ ├── eye_shooter - Gamificação de rastreamento ocular
│ ├── feed - Feed principal de vídeos
│ ├── flows - Fluxos multi-etapas
│ ├── home - Navegação principal, gravação, deep linking
│ ├── interactions - Comentários, reações, funcionalidades sociais
│ ├── landing - Onboarding e telas iniciais
│ ├── notifications - Lista e gerenciamento de notificações
│ ├── pop_recording - Gravação dual sequencial de câmera
│ ├── profile - Perfil de usuário, rascunhos, configurações
│ ├── register - Registro multi-etapas
│ ├── relationship - Follow/unfollow, conexões entre usuários
│ ├── repop_recording - Regravação de câmera única
│ ├── screencast_recording - Gravação de tela
│ └── splash - Inicialização e carregamento
│
└── lib/ # Aplicação core, DI setup, roteamento
data/ - Implementações de repositório, serviços de API, DTOs, armazenamento localdomain/ - Modelos (Equatable), casos de uso e interfaces de repositóriopresentation/ - ViewModels (ChangeNotifier), widgets e viewsdi/ - Configuração de injeção de dependênciaO projeto segue convenções unificadas descritas em docs/04-guias/testes.md.
Resumo rápido:
test/{unit,widget,integration,golden,helpers}.test/{data,domain,presentation} espelhando a Clean Architecture../tool/run_all_tests.sh executa flutter test em todos os pacotes e aceita:
--report ou REPORT=1 para gerar HTML de cobertura unificado em coverage/html/index.html (requer lcov/genhtml)PACKAGES_OVERRIDE="pkg1 pkg2" ou args para rodar apenas alguns pacotesCOVERAGE=0 para pular --coverage, FAIL_FAST=0 para continuar após falhasAntes de abrir PRs:
flutter analyze
./tool/run_all_tests.sh --report
Para guia detalhado, veja
docs/00-inicio-rapido/.
# Clone o repositório
git clone <repository-url>
cd pop
# Instale as dependências do Flutter
flutter pub get
# Gere os arquivos de injeção de dependência
flutter packages pub run build_runner build
# Setup do iOS (apenas macOS)
cd ios && pod install && cd ..
# Verifique se tudo está configurado
flutter doctor
Para instalação detalhada do Flutter SDK, veja
docs/00-inicio-rapido/pre-requisitos.md.
# Ambiente de desenvolvimento
flutter run --dart-define=ENVIRONMENT=dev
# Ambiente de staging
flutter run --dart-define=ENVIRONMENT=staging
# Ambiente de produção
flutter run --dart-define=ENVIRONMENT=prod
# Modo release com produção
flutter run --release --dart-define=ENVIRONMENT=prod
# Executar em dispositivo específico
flutter run -d <device-id> --dart-define=ENVIRONMENT=prod
# Listar dispositivos disponíveis
flutter devices
# Executar app de exemplo do Design System
cd design_system/sample && flutter run && cd ../..
# Executar todos os testes (todos os pacotes)
./tool/run_all_tests.sh
# Executar com coverage e relatório HTML
./tool/run_all_tests.sh --report
# Executar testes de um módulo específico
flutter test features/feed/test/
flutter test commons/core/test/
# Executar arquivo de teste específico
flutter test test/path/to/test_file.dart
# Build APK (desenvolvimento)
flutter build apk --dart-define=ENVIRONMENT=dev
# Build APK (produção)
flutter build apk --dart-define=ENVIRONMENT=prod
# Build App Bundle (Play Store)
flutter build appbundle --dart-define=ENVIRONMENT=prod
# Build iOS (desenvolvimento)
flutter build ios --dart-define=ENVIRONMENT=dev
# Build iOS (produção)
flutter build ios --dart-define=ENVIRONMENT=prod
# Limpar e reconstruir arquivos gerados
flutter packages pub run build_runner clean
flutter packages pub run build_runner build --delete-conflicting-outputs
# Limpar build cache
flutter clean
# Analisar código
flutter analyze
# Formatar código
dart format .
Use --dart-define=ENVIRONMENT=<env> para especificar o ambiente.
Navegue a documentação completa em docs/README.md:
docs/00-inicio-rapido/docs/02-arquitetura/docs/03-features/docs/04-guias/docs/DEPENDENCIES.mddocs/TEAM_CODING_STANDARDS.mdgit checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)copyWithErro de dependências:
flutter clean && flutter pub get
flutter packages pub run build_runner build --delete-conflicting-outputs
Problemas com iOS:
cd ios && pod deintegrate && pod install && cd ..
Problemas com injeção de dependência:
flutter packages pub run build_runner clean
flutter packages pub run build_runner build
Erro de build do Android:
cd android && ./gradlew clean && cd ..
flutter clean && flutter build apk
Este projeto está licenciado sob a MIT License.
Desenvolvido com Flutter e Clean Architecture