Inventário do Projeto — canta-igreja
Gerado pelo Scout (Reversa) em 2026-05-11
Confiança: 🟢 CONFIRMADO — extraído diretamente do código e configurações
Visão Geral
| Campo |
Valor |
| Nome do projeto |
cantaigreja |
| Versão |
0.0.1 |
| Plataforma |
React Native (iOS, Android) + Web (via react-native-web + Vite) |
| Linguagem principal |
TypeScript |
| Gerenciador de pacotes |
npm |
| Engine Node.js mínima |
>= 22.11.0 |
Estrutura de Pastas
canta-igreja/
├── app/ ← Aplicação React Native (raiz do projeto)
│ ├── src/ ← Código-fonte TypeScript (328 arquivos)
│ │ ├── App.tsx ← Raiz do componente React
│ │ ├── declarations.d.ts ← Declarações TypeScript globais
│ │ ├── arch/ ← Infraestrutura/arquitetura transversal
│ │ │ ├── auth/ ← Autenticação (Google OAuth via PKCE)
│ │ │ ├── error/ ← Monitoramento de erros (Sentry)
│ │ │ ├── hook/ ← Hooks de infraestrutura
│ │ │ ├── persistence/ ← Banco de dados SQLite + Migrations
│ │ │ │ └── migration/ ← Migrations v8 a v15
│ │ │ ├── style/ ← Tema, tokens, breakpoints (Unistyles)
│ │ │ └── util/ ← Utilitários de infraestrutura
│ │ ├── model/ ← Modelos de domínio
│ │ │ ├── api/ ← DTOs de API REST
│ │ │ ├── liturgia/ ← Modelo LiturgiaDia
│ │ │ ├── obra/ ← Modelo Obra
│ │ │ ├── paginacao/ ← Paginação
│ │ │ ├── repertorio/ ← Repertório e SugestaoRepertorio
│ │ │ └── rotulo/ ← Rótulos/tags de músicas
│ │ ├── repository/ ← Camada de acesso a dados (SQLite)
│ │ │ ├── musicas/ ← Repositório de músicas
│ │ │ ├── repertorioPadrao/ ← Favoritos e recém-visualizadas
│ │ │ ├── repertorios/ ← Repertórios do usuário
│ │ │ └── web/ ← Fixtures para ambiente web
│ │ ├── router/ ← Navegação (React Navigation)
│ │ │ └── navigation/ ← Tipos e hooks de navegação
│ │ ├── service/ ← Serviços de negócio
│ │ ├── store/ ← Estado global (Redux Toolkit)
│ │ │ ├── Acesso/ ← Estado de autenticação/acesso
│ │ │ ├── Biblioteca/ ← Estado de download de obras
│ │ │ ├── ItensRepertorio/ ← Itens do repertório em edição
│ │ │ ├── Liturgia/ ← API RTK Query para liturgia
│ │ │ ├── Livros/ ← Estado de livros/hinários
│ │ │ ├── Musicas/ ← Estado de músicas
│ │ │ ├── Repertorios/ ← Estado de repertórios
│ │ │ ├── SugestoesRepertorio/ ← Estado de sugestões litúrgicas
│ │ │ └── ui/ ← Estado de UI (Configurações, Modais, Lista)
│ │ ├── util/ ← Utilitários de aplicação
│ │ └── view/ ← Camada de apresentação
│ │ ├── base/ ← Componentes atômicos (Botao, Texto, Icone)
│ │ ├── component/ ← Componentes compostos (Cards, Modais, Inputs)
│ │ ├── fragment/ ← Fragmentos de tela (views parciais)
│ │ │ ├── Musica/ ← Fragmentos de exibição de música
│ │ │ ├── Musicas/ ← Fragmentos de lista de músicas
│ │ │ ├── MusicasRepertorio/ ← Fragmentos de repertório
│ │ │ ├── Repertorios/ ← Fragmentos de gerenciamento de repertórios
│ │ │ ├── Youtube/ ← Player YouTube integrado
│ │ │ └── ...
│ │ └── screen/ ← Telas completas
│ │ ├── musica/ ← Tela de detalhes de música
│ │ ├── biblioteca/ ← Tela de biblioteca de obras
│ │ ├── buscaMusicaParaRepertorio/ ← Busca para adicionar ao repertório
│ │ ├── modal/ ← Telas modais (Momento, Tonalidade, Prévia, Importar)
│ │ └── sugestaoRepertorio/ ← Telas de sugestão litúrgica
│ ├── assets/ ← Bancos SQLite embarcados
│ │ ├── cantaIgreja.db ← Banco principal (músicas, livros)
│ │ └── repertorios.db ← Banco de repertórios
│ ├── android/ ← Projeto Android nativo
│ ├── ios/ ← Projeto iOS nativo (com CocoaPods)
│ ├── __tests__/ ← Testes (1 arquivo .tsx + fixtures YAML)
│ ├── index.js ← Entry point React Native
│ ├── index.html ← Entry point Web (Vite)
│ ├── package.json ← Dependências e scripts
│ ├── vite.config.ts ← Configuração do build web
│ ├── metro.config.js ← Configuração Metro (RN)
│ ├── babel.config.js ← Babel
│ ├── jest.config.js ← Jest
│ └── tsconfig.json ← TypeScript
├── docs/ ← Documentação
└── media/ ← Recursos de mídia
Contagem de Arquivos por Tipo
| Tipo |
Extensões |
Quantidade |
| TypeScript (React) |
.tsx |
~120 |
| TypeScript |
.ts |
~208 |
| Total TypeScript |
.ts + .tsx |
328 |
| JavaScript (config) |
.js, .mjs |
~8 |
Módulos / Domínios Identificados
| Módulo |
Caminho |
Responsabilidade |
| musicas |
src/store/Musicas/, src/service/MusicaService.ts, src/view/screen/MusicasScreen.tsx, src/view/fragment/Musica/ |
Busca, exibição e interação com músicas |
| repertorios |
src/store/Repertorios/, src/store/ItensRepertorio/, src/service/RepertorioService.ts, src/view/screen/Repertorios* |
Criação, edição, compartilhamento e importação de repertórios |
| livros |
src/store/Livros/, src/repository/LivrosRepository.ts, src/view/screen/Livros* |
Hinários e coleções de músicas |
| biblioteca |
src/store/Biblioteca/, src/service/BibliotecaService.ts, src/view/screen/biblioteca/ |
Download e sincronização de obras/hinários |
| sugestao-repertorio |
src/store/SugestoesRepertorio/, src/service/SugestoesRepertorioService.ts, src/view/screen/sugestaoRepertorio/ |
Sugestões de repertório baseadas no calendário litúrgico |
| liturgia |
src/store/Liturgia/, src/service/CalendarioLiturgicoService.ts, src/view/screen/LiturgiaDoDiaScreen.tsx, src/view/fragment/Musica/LeituraDia/ |
Calendário litúrgico e leituras do dia |
| auth |
src/arch/auth/, src/store/Acesso/, src/repository/UsuarioLogadoRepository.ts |
Autenticação Google OAuth, gerenciamento de sessão |
| configuracoes |
src/store/ui/Configuracoes/, src/view/screen/ConfiguracoesScreen.tsx |
Preferências do usuário (fonte, tema, etc.) |
| youtube-player |
src/view/fragment/Youtube/ |
Player YouTube integrado com controles avançados |
| arch |
src/arch/ |
Infraestrutura transversal: banco de dados, migrations, tema, utilitários |
Telas Identificadas (React Navigation)
Bottom Tabs (HomeBottomNavigator)
| Aba |
Componente |
Descrição |
| Início |
InicioScreen |
Tela home com acesso rápido |
| Busca |
MusicasScreen |
Busca de músicas |
| Repertórios |
RepertoriosScreen |
Lista de repertórios do usuário |
Stack Principal (AppStackNavigator)
| Rota |
Componente |
Descrição |
Musica |
MusicaDrawerNavigator |
Visualização de música com drawer de configurações |
IncluirMusicaEmRepertorio |
— |
Adicionar música a repertório |
LivroDetalhes |
— |
Detalhes de um livro/hinário |
MusicasRepertorioPadrao |
— |
Músicas do repertório padrão (favoritas) |
MusicasRepertorioUsuario |
— |
Músicas do repertório do usuário |
BuscaMusicaParaRepertorio |
— |
Busca específica para adicionar a repertório |
LiturgiaDoDia |
— |
Leituras litúrgicas do dia |
SugestoesRepertorioLista |
— |
Lista de sugestões de repertório |
SugestaoRepertorioDetalhes |
— |
Detalhes de uma sugestão litúrgica |
IncluirMusicasDeSugestao |
— |
Incluir músicas sugeridas em repertório |
ImportarRepertorioModal |
— |
Modal de importação de repertório |
MomentoModal |
— |
Modal seleção de momento litúrgico |
TonalidadeModal |
— |
Modal seleção de tonalidade |
PreviaMusicaModal |
— |
Prévia de música |
Configuracoes |
— |
Configurações do aplicativo |
Banco de Dados
| Arquivo |
Tipo |
Localização |
Função |
cantaIgreja.db |
SQLite embarcado |
app/assets/ |
Banco principal: músicas, livros, labels, migrations |
repertorios.db |
SQLite embarcado |
app/assets/ |
Banco de repertórios pré-carregados |
Migrations (op-sqlite)
| Versão |
Arquivo |
Descrição |
| v8 |
v8_repertorio.sql.ts |
Estrutura de repertório |
| v9 |
v9_musica_informacoes.sql.ts |
Informações adicionais de músicas |
| v10 |
v10_slug_repertorio.sql.ts |
Slug para repertórios |
| v11 |
v11_rotulos_musica.sql.ts |
Rótulos/tags para músicas |
| v12 |
v12_forcar_baixar_musicas_novamente_devido_rotulos.sql.ts |
Force re-download após rótulos |
| v13 |
v13_sugestao_repertorio.sql.ts |
Sugestões de repertório |
| v14 |
v14_metadata_repertorio.sql.ts |
Metadados de repertório |
| v15 |
v15_liturgia_cache.sql.ts |
Cache de liturgia |
Integrações Externas
| Integração |
Endereço |
Propósito |
Autenticação |
| API Canta.app |
https://api.canta.app/v1 |
Backend principal: músicas, repertórios, biblioteca, auth |
Bearer JWT |
| Liturgia API (DANCRF) |
https://liturgia.up.railway.app/v3/ |
Leituras litúrgicas do dia |
Pública |
| Google OAuth |
https://accounts.google.com |
Autenticação via PKCE (react-native-app-auth) |
Google Identity |
| Sentry |
o4507574049570816.ingest.us.sentry.io |
Monitoramento de erros, métricas, session replay |
DSN |
| YouTube |
Embed via WebView |
Player de vídeo integrado nas músicas |
Pública |
| romcal |
Biblioteca local |
Cálculo do calendário litúrgico romano (offline) |
— |
Entry Points
| Arquivo |
Plataforma |
Tipo |
app/index.js |
iOS / Android |
Entry point React Native |
app/index.html |
Web |
Entry point Vite/browser |
app/src/App.tsx |
Todas |
Raiz do componente React |
CI/CD e Configurações de Build
| Arquivo |
Propósito |
app/vite.config.ts |
Build web (Vite + vite-plugin-rnw) |
app/metro.config.js |
Bundler React Native |
app/babel.config.js |
Transpilação Babel |
app/jest.config.js |
Testes Jest |
app/tsconfig.json |
Configuração TypeScript |
app/android/build.gradle |
Build Android |
app/ios/Podfile |
Dependências iOS CocoaPods |
app/ios/sentry.properties |
Config Sentry iOS |
app/android/sentry.properties |
Config Sentry Android |
⚠️ Nenhum CI/CD automatizado (.github/workflows/) detectado.
Cobertura de Testes
| Item |
Valor |
| Framework |
Jest |
| Arquivos de teste |
1 (__tests__/App-test.tsx) |
| Fixtures YAML |
4 (launch.yml, list.create.yml, list.delete.yml, list.yml) |
| Cobertura estimada |
🔴 Muito baixa — praticamente sem testes automatizados |
Observações Importantes
- 🟢 Plataforma multi-target: O app roda em Android, iOS e Web (mesma codebase TypeScript). Arquivos com sufixo
.web.ts sobrepõem os nativos via Metro/Vite resolve.
- 🟢 Bancos SQLite duais:
cantaIgreja.db (principal, com migrations) e repertorios.db (repertórios pré-carregados). No web usa sqlite-wasm com OPFS.
- 🟡 Cache litúrgico: A liturgia é buscada da API remota e cacheada localmente no SQLite (migration v15).
- 🟡 Autenticação opcional: O app funciona sem autenticação; o login Google é necessário apenas para compartilhar repertórios na nuvem.
- 🔴 Sem CI/CD identificado: Nenhum workflow de automação encontrado (apenas
copilot-instructions.md em .github/).