Initial commit
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

This commit is contained in:
2026-09-11 15:59:56 -03:00
commit 0037b0b9cf
651 changed files with 199705 additions and 0 deletions

149
CONTEXT.md Normal file
View File

@@ -0,0 +1,149 @@
# 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)