# Contexto do Projeto - TatuChat (tatuchat) ## Visão Geral **TatuChat** é um cliente de mensagens instantâneas open-source e sem fins lucrativos baseado no protocolo [Matrix](https://matrix.org). É um aplicativo multiplataforma que oferece mensagens cifradas ponta-a-ponta, chamadas de vídeo, mensagens de voz, compartilhamento de localização, e muito mais. | Propriedade | Valor | |-------------|-------| | **Nome** | TatuChat | | **Linguagem** | Dart | | **Framework** | Flutter 3.47.3 (SDK Dart >=3.11.1 <4.0.0) | | **Versão** | 2.9.5+3566 | | **Licença** | AGPL-3.0-or-later | | **Autor principal** | Christian Kussowski (krille-chan) | | **Protocolo** | Matrix (cliente federado e descentralizado) | | **Criptografia** | Olm/Megolm via Vodozemac (WASM) | | **Chamadas** | Matrix RTC via LiveKit | | **Plataformas** | Android, iOS, Linux, Windows, macOS, Web (PWA) | ## Estrutura do Projeto ``` tatuchat/ ├── lib/ # Código-fonte principal (Dart) │ ├── main.dart # Ponto de entrada da aplicação │ ├── config/ # Configurações da app │ ├── pages/ # 30 páginas/telas da app │ ├── widgets/ # 28 widgets reutilizáveis │ ├── utils/ # 43 arquivos de utilitários │ └── l10n/ # 59 arquivos de localização (.arb) ├── android/ # Plataforma Android (Gradle Kotlin DSL) ├── ios/ # Plataforma iOS ├── macos/ # Plataforma macOS ├── linux/ # Plataforma Linux ├── windows/ # Plataforma Windows ├── web/ # Plataforma Web (PWA) ├── assets/ # Recursos estáticos ├── scripts/ # 12 scripts de build/deploy ├── test/ # Testes unitários/widget ├── integration_test/ # Testes de integração ├── fastlane/ # Metadata para app stores ├── snap/ # Pacote Snapcraft (Linux) ├── .github/ # CI/CD (GitHub Actions) └── LICENSES/ # Licenças de dependências (REUSE) ``` ## Arquitetura - **Navegação:** GoRouter com rotas declarativas e ShellRoutes para layouts de duas colunas (desktop) - **Estado:** Provider (via widget `Matrix` que é um InheritedWidget) - **Layout Responsivo:** Modo coluna única (mobile) vs. duas colunas (desktop), detectado por `FluffyThemes.isColumnMode()` - **Internacionalização:** 59 idiomas via ARB (Flutter L10N), com Weblate para tradução colaborativa - **Segurança:** App lock com PIN/biometria, E2EE com Vodozemac, certificados CA embutidos (ISRG X1/X2) ## Dependências Principais ### Core / Matrix | Dependência | Função | |-------------|--------| | `matrix` (git: famedly/matrix-dart-sdk) | SDK do protocolo Matrix (fork customizado) | | `flutter_vodozemac` | Criptografia Olm/Megolm via WASM | | `livekit_client` | Videochamadas Matrix RTC | | `flutter_secure_storage` | Armazenamento seguro | ### UI / Navegação | Dependência | Função | |-------------|--------| | `material_ui` | Material Design 3 / Material You | | `go_router` | Sistema de rotas declarativo | | `dynamic_color` | Cores dinâmicas do Android | | `emoji_picker_flutter` | Seletor de emojis | | `flutter_map` + `latlong2` | Mapas e localização | | `lottie` | Animações | | `chewie` + `video_player` | Reprodução de vídeo | | `just_audio` | Reprodução de áudio | ### Plataforma / Device | Dependência | Função | |-------------|--------| | `flutter_local_notifications` | Notificações locais | | `flutter_callkit_incoming` | UI de chamadas entrantes | | `flutter_foreground_task` | Serviço foreground para push | | `unifiedpush` | Notificações push via UnifiedPush | | `local_auth` | Autenticação biométrica | | `geolocator` | Geolocalização | ### Mídia / Arquivos | Dependência | Função | |-------------|--------| | `image_picker` + `crop_image` | Seleção e corte de imagens | | `record` | Gravação de áudio | | `light_compressor_v2` | Compressão de vídeo | | `blurhash_dart` | BlurHash para placeholders | ## Build & Deploy | Método | Plataforma | |--------|------------| | **Docker** | Web (build multi-stage com Nginx) | | **Snapcraft** | Linux (core24, grade stable) | | **Fastlane** | App Stores (Android, iOS) | | **GitHub Actions** | CI/CD (5 workflows: integrate, release, deploy, notify, stale) | ## Comandos Úteis ```bash # Instalar dependências flutter pub get # Executar em modo desenvolvimento flutter run # Build de release flutter build apk # Android flutter build ios # iOS flutter build linux # Linux flutter build windows # Windows flutter build web # Web # Testes flutter test # Testes unitários/widget flutter test integration_test/ # Testes de integração # Análise de código flutter analyze dart format --set-exit-if-changed . ``` ## Funcionalidades Principais - Mensagens cifradas ponta-a-ponta (E2EE) via Olm/Megolm - Chamadas de vídeo com Matrix RTC (via LiveKit) - Mensagens de voz - Compartilhamento de localização - Grupos públicos e privados, spaces, emotes customizados - Notificações push - Material You (Material 3) design - Backup de mensagens cifrado - Verificação por emoji e cross-signing - App lock com PIN/biometria ## Notas para Desenvolvedores 1. **SDK Matrix customizado:** O projeto usa um fork do `matrix-dart-sdk` no branch `krille/refactor-device-keys-list-storing` 2. **Certificados CA:** O projeto inclui certificados ISRG X1 e X2 embutidos para suporte a Let's Encrypt 3. **Vodozemac:** Biblioteca de criptografia compilada para WASM, localizada em `assets/vodozemac/` 4. **Configuração Web/MDM:** Exemplo em `config.sample.json` para configuração via MDM ou web 5. **Testes de integração:** Requer Docker com Synapse (servidor Matrix) para testes completos 6. **Homeservers recomendados:** Lista em `recommended_homeservers.json` (matrix.org, mozilla.org, tchncs.de)