Initial commit
This commit is contained in:
149
CONTEXT.md
Normal file
149
CONTEXT.md
Normal 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)
|
||||
Reference in New Issue
Block a user