📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados na Especialização em Android Nativo. Recomendado revisar antes de iniciar.
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
- P09: PokeMap com Google Maps & GPS
- ➡️ P10 (este): Arena Social com Firebase Suite
- P11: Guilda dos Heróis com Navigation & Biometria
- P12: Batcomputer com Injeção Hilt & Sensores
- P13: TARDIS Panel com DataStore Preferences
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.
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
| 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 |
posts no Cloud Firestore com ouvinte reativo addSnapshotListener.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
| 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() |
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.
google-services.jsonBaixe 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
cd catalogo_projetos/android_p10_social_firebase/mobile-android-kotlin
./gradlew installDebug
| 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 ✅ |