📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados na Especialização em Android Nativo. Recomendado revisar antes de iniciar.

🏆 P10: Arena Social (Firebase Suite)

v1.0 — Android Nativo, Kotlin, Firebase Authentication, Cloud Firestore em Tempo Real, Feed Social e Perfil de Treinador

Série Prática Android Clássico — Projeto 10 de 21


🏛️ Visão Geral & Arquitetura Visual

O projeto Arena Social implementa uma rede social completa voltada para comunidades de jogadores móveis utilizando a infraestrutura serverless do Google Firebase. A solução integra autenticação de usuários via Firebase Auth (com suporte a e-mail/senha e tokens de sessão), persistência e escuta em tempo real no banco NoSQL Cloud Firestore, publicação de postagens com contagem reativa de curtidas e tela de perfil customizada.

Fluxo Visual da Arena Social com Firebase

📁 Estrutura de Pastas Anti-Colisão

Todos os serviços de autenticação, repositórios de banco e layouts estão organizados na subpasta canônica mobile-android-kotlin/:

catalogo_projetos/android_p10_social_firebase/
├── assets/
│   ├── mockup_arena_social_fluxo.svg
│   ├── screenshot_01_login.svg
│   ├── screenshot_02_feed_mural.svg
│   ├── screenshot_03_novo_post.svg
│   └── screenshot_04_perfil.svg
├── mobile-android-kotlin/
│   ├── app/
│   │   ├── src/
│   │   │   └── main/
│   │   │       ├── java/br/com/curso/arenasocial/
│   │   │       │   ├── auth/
│   │   │       │   │   └── AuthService.kt
│   │   │       │   ├── firestore/
│   │   │       │   │   └── PostRepository.kt
│   │   │       │   └── MainActivity.kt
│   │   │       └── res/
│   │   └── build.gradle
│   ├── gradle/
│   ├── build.gradle
│   ├── gradlew
│   ├── settings.gradle
│   └── README.md
└── index.md

🧑‍💼 Engenharia de Software & Especificação Formal

1. Histórias de Usuário (User Stories)

ID Persona Narrativa da Funcionalidade Critério de Aceitação Principal Prioridade
US-01 Treinador Quero criar uma conta ou fazer login com e-mail e senha de forma segura. Autenticação concluída via Firebase Auth com token retornado. Alta
US-02 Treinador Quero visualizar um mural de postagens da comunidade atualizado em tempo real. Escuta de snapshots do Firestore refletindo novos posts sem recarregar a tela. Alta
US-03 Treinador Quero publicar uma nova mensagem de vitória ou desafio para outros jogadores. Gravação de documento na coleção posts com carimbo de data/hora do servidor. Alta
US-04 Treinador Quero curtir publicações de colegas com incremento instantâneo no contador. Operação atômica de incremento (FieldValue.increment(1)) no Firestore. Média
US-05 Desenvolvedor Mobile Quero deslogar do app e ter os dados de sessão limpos com segurança. Invocação de FirebaseAuth.getInstance().signOut() e redirecionamento para tela de login. Baixa

2. Requisitos do Sistema

Requisitos Funcionais (RF)

Requisitos Não-Funcionais (RNF)


3. Diagrama de Casos de Uso

flowchart TD
    User([fa:fa-user Treinador])
    Auth[(fa:fa-key Firebase Auth)]
    DB[(fa:fa-fire Cloud Firestore)]

    subgraph AppArena ["🏆 Arena Social (mobile-android-kotlin)"]
        UC01["Autenticar com E-mail e Senha"]
        UC02["Acessar Feed em Tempo Real"]
        UC03["Publicar Novo Post"]
        UC04["Curtir Publicação (Atômico)"]
        UC05["Efetuar Logout de Sessão"]
    end

    User --> UC01
    UC01 --> Auth
    User --> UC02
    UC02 --> DB
    DB -.->|SnapshotListener| UC02
    User --> UC03
    UC03 --> DB
    User --> UC04
    UC04 --> DB
    User --> UC05
    UC05 --> Auth

4. Matriz de Rastreabilidade (RTM)

ID Requisito História de Usuário Artefato de Código Teste de Aceitação
RF-01 US-01 mobile-android-kotlin/app/.../AuthService.kt testFirebaseAuthLoginSuccess()
RF-02 US-02 mobile-android-kotlin/app/.../PostRepository.kt testFirestoreSnapshotListener()
RF-03 US-03 mobile-android-kotlin/app/.../PostRepository.kt testPublishNewPostDocument()
RF-04 US-04 mobile-android-kotlin/app/.../PostRepository.kt testAtomicLikeIncrement()
RF-05 US-05 mobile-android-kotlin/app/.../AuthService.kt testSignOutClearsSession()

🛠️ Implementação Guiada (PostRepository.kt)

ℹ️ O trecho de código que ficava aqui não correspondia ao código do projeto e foi retirado. Consulte os arquivos em mobile-android-kotlin.


🚀 Como Executar no Laboratório

1. Configure o google-services.json

Baixe o arquivo de configuração do seu projeto Firebase Console e insira em: catalogo_projetos/android_p10_social_firebase/mobile-android-kotlin/app/google-services.json

2. Compile e execute no dispositivo

cd catalogo_projetos/android_p10_social_firebase/mobile-android-kotlin
./gradlew installDebug

🏁 Matriz de Checkpoints de Conclusão

Checkpoint Meta Técnica Critério de Aceite Status
CP-01 Integração Firebase SDK Google Services plugin aplicado no Gradle sem falhas PASS ✅
CP-02 Autenticação Funcional Criação e login de usuários via Firebase Auth PASS ✅
CP-03 Feed em Tempo Real Adição de novos posts refletida instantaneamente nos clientes PASS ✅
CP-04 Transação Atômica de Curtida Curtidas incrementadas sem conflito de concorrência PASS ✅
CP-05 Suíte de Testes Automatizados Testes de unidade com repositório mockado aprovados PASS ✅