bakasub
bakasub's core repository for end users
Linguagens
Tecnologias
# README.md
BakaSub - O App Completo 🌸✨
Hmph! Então você encontrou o repositório de verdade do BakaSub, e não só um dos órgãos internos nerdolas dele? Ótimo. Este é o repositório que o usuário final deve realmente rodar na própria máquina. Ele junta frontend, backend e PostgreSQL via Docker Compose para você traduzir legendas sem precisar cuidar manualmente de um servidor Go, um app React e um banco separadamente. B-baka!
Presta atenção! Se você só quer usar o Bakasub, este é o único repositório que importa. Os repositórios de backend e frontend são voltados para desenvolvimento.
Se você quiser ver a separação exata entre configuração do usuário e cabeamento de infraestrutura, consulte CONFIGURATION.md.
✨ O Que o Bakasub Faz de Verdade
O Bakasub é um app local para fluxo de legendas focado em tradução assistida por IA e manipulação de trilhas de vídeo.
Com ele você pode:
- inspecionar trilhas de legenda dos seus vídeos
- extrair trilhas de legenda de MKV e outros contêineres suportados
- traduzir arquivos de legenda com modelos do OpenRouter
- enriquecer o contexto da tradução com metadados do TMDB e anotações próprias
- aplicar presets ajustados para anime, filmes, documentários e outros contextos
- reaproveitar traduções em cache para não pagar duas vezes pelas mesmas linhas
- acompanhar jobs, custos, tokens e logs em tempo real
- mesclar a legenda traduzida de volta no seu fluxo de vídeo
🌸 Features Que Você Recebe
- Stack com um comando: frontend, backend e PostgreSQL sobem juntos com Docker Compose.
- Interface web moderna: sem shell Electron, sem drama de instalador desktop separado.
- Progresso de tradução ao vivo: a interface acompanha os jobs enquanto o backend trabalha.
- Memória de tradução: linhas repetidas podem vir do cache em vez de gastar mais créditos de API.
- Estimativa pré-voo: veja lotes, tokens e custo estimado antes de enviar o job.
- Contexto com TMDB: associe metadados de filmes ou séries para melhorar a qualidade da tradução.
- Fluxo baseado em presets: mantenha estilos separados para anime, filme, comédia e mais.
- Logs e histórico de jobs: veja o que aconteceu sem cavar dentro dos containers igual um goblin.
🧰 O Que Você Precisa Antes de Começar
Você não precisa instalar Go, Node.js ou PostgreSQL no host só para usar o produto.
Você precisa de:
- Docker Engine com o plugin Compose, ou Docker Desktop.
- Uma release publicada deste repositório. Prefira uma tag ou GitHub Release, não um commit aleatório de desenvolvimento.
- Uma pasta local
library/dentro deste repositório com os vídeos e legendas que o Bakasub deve enxergar. - Uma chave da OpenRouter API.
- Um token de acesso do TMDB.
Importante:
- A tradução fica bloqueada até a chave do OpenRouter e o token do TMDB serem configurados e salvos na página de Configurações.
- No setup oficial via Docker deste repositório, FFmpeg e MKVToolNix já vêm dentro da imagem do backend, então você não deve precisar instalar essas ferramentas no host só para começar.
🚀 Início Rápido
1. Baixe uma release real do Bakasub
Use uma versão taggeada deste repositório.
Por quê? Porque as releases públicas fixam as imagens do backend e frontend em release.env. Um checkout em andamento pode ainda conter digests placeholder.
2. Coloque sua mídia dentro de library/
Crie a pasta local da biblioteca se ela ainda não existir:
mkdir -p libraryDepois copie ou crie links simbólicos para a sua mídia ali dentro. Exemplo:
ln -s /caminho/absoluto/para/seus/videos library/videosA stack oficial do produto monta ./library dentro do backend como /videos. A raiz de navegação usada pelo app passa a ser salva no banco pela tela de Configurações, não por variável de ambiente.
3. Suba a aplicação
sh scripts/up.shIsso sobe:
- o frontend em uma porta local atribuída automaticamente
- o backend por trás do proxy do frontend em
/api/v1 - o PostgreSQL interno usado pelo Bakasub
4. Abra o Bakasub no navegador
O script imprime a URL local exata ao final da subida.
5. Termine a configuração inicial dentro do app
Abra a página de Configurações e configure:
OpenRouter API KeyTMDB Access TokenLibrary Rootse você quiser limitar o navegador a uma subpasta como/videos/videos
Salve os dois valores. Até isso acontecer, a página Traduzir continua bloqueada.
6. Comece a usar o fluxo normal
O fluxo mais comum é:
- Extrair: escolha um vídeo e inspecione ou extraia as trilhas de legenda.
- Traduzir: escolha um arquivo de legenda, um modelo, um preset e um idioma alvo.
- Mesclar: remuxe o resultado traduzido de volta no seu fluxo de vídeo quando precisar.
- Logs & Jobs: revise progresso, erros, custo e histórico.
🧭 Uma Boa Primeira Sessão
Se você quiser a primeira execução mais limpa possível, faça isso:
- Suba a stack.
- Abra Configurações e salve suas credenciais do OpenRouter e do TMDB.
- Confirme a opção Library Root em Configurações. O padrão é
/videos. - Vá em Modelos e Presets e marque seus modelos favoritos.
- Abra Extrair e inspecione um vídeo dentro da biblioteca montada.
- Abra Traduzir, associe metadados do TMDB se ajudar, rode a estimativa pré-voo e envie a tradução.
- Acompanhe o progresso em tempo real e confirme o resultado em Logs & Jobs.
🗂️ O Que o Bakasub Consegue Enxergar
O Bakasub só enxerga a pasta montada como ./library, que aparece dentro do container como /videos.
Isso significa:
- se um arquivo estiver fora de
library/, ele não vai aparecer no app - se a biblioteca estiver vazia, o Bakasub vai agir como se sua coleção estivesse vazia
- se a permissão da pasta estiver bloqueada, o backend não vai conseguir inspecionar nem processar os arquivos
Se você não quiser copiar arquivos, use links simbólicos de library/ para suas pastas reais de mídia.
🔄 Como Atualizar o Bakasub
Quando sair uma nova release pública:
- Baixe ou atualize para a nova versão taggeada deste repositório.
- Mantenha sua pasta
library/atual. - Suba a stack atualizada novamente:
sh scripts/up.shSe quiser ser explícito, pode puxar as imagens antes:
docker compose --env-file release.env pull
sh scripts/up.sh🛑 Como Parar ou Remover a Stack
Pare os containers sem remover os dados persistentes:
docker compose --env-file release.env downRemova tudo, incluindo o volume do PostgreSQL usado pelo app:
docker compose --env-file release.env down -vSó use o segundo comando se você realmente quiser apagar o banco local do app.
🩹 Solução de Problemas
O frontend não abre
- Rode
docker compose --env-file release.env port frontend 80e abra a URL impressa. - Se o container não subiu, inspecione
docker compose --env-file release.env logs.
A porta do backend está ocupada
- O backend não fica mais exposto diretamente no host na stack de produto.
- Acesse-o pelo proxy do frontend usando a URL impressa por
sh scripts/up.sh.
A tradução está bloqueada
- Abra Configurações.
- Salve uma OpenRouter API Key válida.
- Salve um TMDB Access Token válido.
O produto espera os dois configurados antes de liberar a tradução.
Não consigo ver meus arquivos de vídeo
- Confirme que os arquivos realmente existem dentro de
library/ou dentro de um link simbólico criado a partir delibrary/. - Confirme que o Docker consegue ler essa pasta.
- Confirme que a opção Library Root salva em Configurações aponta para o local montado esperado.
A stack não sobe
- Confirme que você está usando uma tag ou release com digests reais em
release.env. - Rode
docker compose --env-file release.env logspara inspecionar a falha.
💖 Apoie o Projeto
Se o Bakasub salvou seu cronograma de release, sua fila de legendas ou sua sanidade, você pode apoiar o projeto aqui: