DkMovie

Uma plataforma de streaming de vídeo full-stack.

DkMovie é uma plataforma de streaming de vídeo full-stack. Construída com foco em desempenho e escalabilidade, ela apresenta streaming de taxa de bits adaptável (HLS), suporte multilíngue para áudio e legendas, e controle de concorrência rigoroso.

🚀 Principais Recursos

  • Streaming Adaptativo (HLS): Ajusta automaticamente a qualidade do vídeo (1080p, 720p, 480p) com base na largura de banda do usuário usando transcodificação FFmpeg.
  • Gerenciamento de Mídia: Suporte para filmes e séries (temporadas e episódios).
  • Áudio e Legendas: Suporte a múltiplas trilhas com extração automática e gerenciamento separado para diferentes idiomas.
  • Controle de Concorrência: Limita o número de telas ativas simultâneas por usuário com monitoramento de heartbeat.
  • Armazenamento Seguro: Armazenamento de objetos privado (Cloudflare R2/MinIO) com URLs assinadas para proteção de conteúdo.
  • UI/UX Moderna: Interface responsiva com suporte a modo claro/escuro e um player de vídeo personalizado avançado.

🛠️ Tecnologias Utilizadas

Backend

Frontend

Infraestrutura

  • Conteinerização: Docker & Docker Compose.
  • Proxy Reverso: Traefik (Produção).
  • Armazenamento de Objetos: Cloudflare R2 (Produção) / MinIO (Desenvolvimento local).

⚡ Primeiros Passos

Este projeto é totalmente conteinerizado. Você só precisa do Docker para executá-lo localmente.

Pré-requisitos

  • Docker instalado e em execução.
  • Git (opcional, para clonar o repositório).

Instalação

Clonar o repositório

git clone https://github.com/ncontiero/dkmovie.git
cd dkmovie

Configurar Variáveis de Ambiente

Copie a pasta de configuração de ambiente de exemplo para a ativa.

cp -r .envs.example .envs

Observação: As credenciais padrão em .envs/.local/ são pré-configuradas para desenvolvimento local com Docker.

Build e Inicialização

Execute o projeto usando a configuração docker-compose local.

docker compose -f docker-compose.local.yml up --build

Isso pode levar alguns minutos na primeira execução, pois reconstrói as imagens e instala as dependências (incluindo o FFmpeg).

Acessar a Aplicação

Pós-Instalação (Opcional)

Para criar um superusuário para o Admin do Django:

docker compose -f docker-compose.local.yml run --rm django python manage.py createsuperuser

Para executar as migrações do banco de dados manualmente (geralmente tratadas automaticamente):

docker compose -f docker-compose.local.yml run --rm django python manage.py migrate

Para compilar mensagens (suporte a i18n):

docker compose -f docker-compose.local.yml run --rm django python manage.py compilemessages

📦 Fluxo de Upload e Processamento de Vídeo

  1. Crie um título (filme/série) através do Admin do Django.
  2. Faça o upload de um arquivo de vídeo para o título.
  3. O sistema aciona automaticamente uma tarefa do Celery.
  4. O FFmpeg converte o vídeo para o formato HLS (múltiplas resoluções) e extrai as trilhas de áudio/legenda disponíveis.
  5. Os arquivos são enviados para o bucket S3 privado.
  6. Uma vez concluído, o vídeo fica disponível para streaming no frontend.

📝 Licença

Este projeto está licenciado sob a Licença MIT.