Skip to content

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/).