K-Track: acervo de séries, animes, mangás, filmes e livros
Um produto completo e no ar, com busca em seis catálogos, episódios e volumes marcáveis, aviso de novas temporadas e assinatura via Pix.
- Contexto
- Projeto pessoal, em produção
- Meu papel
- Produto, desenvolvimento e operação
- Período
- 2026
- Ferramentas
- Python, FastAPI, SQLite, JavaScript, Tailwind CSS, Docker, pytest
Como a solução funciona
- Catálogos TVMaze, Open Library, Jikan, MangaDex e outros
- FastAPI regras, planos e monitor de temporadas
- SQLite acervo isolado por usuário
- Interface HTML e JavaScript, sem framework
Por que um projeto pessoal num portfólio de BI
O K-Track não é um painel, mas exercita o que um bom projeto de dados exige: integrar fontes externas instáveis, modelar bem, proteger os dados de cada usuário, testar e operar em produção.
O que ele faz
- Busca em seis catálogos públicos e adiciona a obra com um clique: quero ver, vendo ou já vi.
- Séries e animes chegam com temporadas e episódios; dá para marcar episódio a episódio, até um ponto ou a temporada inteira.
- Coleções de livros e mangás entram com todos os volumes, cada um com capa e marcação de leitura.
- Um monitor verifica novas temporadas a cada seis horas e alimenta o calendário de lançamentos.
- Backup completo em JSON e planilha em CSV.
- Plano gratuito com limite de obras e assinatura anual paga por Pix, com ativação feita pela área administrativa.
Como foi feito
- Back-end em FastAPI com SQLite, sem dependências pesadas: sobe com um único container.
- Front-end em HTML e JavaScript puros, com Tailwind compilado localmente.
- Segurança revisada de ponta a ponta: senhas com PBKDF2 (310 mil iterações), toda rota de edição confere o dono do item, limite de tentativas, cabeçalhos de segurança e escape de todo conteúdo externo.
- 89 testes automatizados cobrindo autenticação, isolamento entre usuários, importação e exportação, planos e integrações.
- Deploy com Docker numa VPS com EasyPanel, container sem privilégios de root e volume persistente para o banco.
A história completa, com os bastidores e o que deu errado no caminho, está no post do blog.