Files
tatuchat/CONTEXT.md
Welton Moura 0037b0b9cf
Some checks failed
Main Deploy Workflow / deploy_web (push) Has been cancelled
Main Deploy Workflow / deploy_playstore_internal (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled
Initial commit
2026-09-11 15:59:56 -03:00

6.1 KiB

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. É 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

# 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)