LiveLootBot é um projeto pessoal desenvolvido com o objetivo de aprofundar habilidades em desenvolvimento backend, integrações em tempo real, arquitetura modular e autenticação segura. Ele conecta a plataforma de streaming Twitch ou outros serivços de streaming com servidores de Discord, possibilitando que streamers realizem sorteios automáticos entre seus espectadores durante transmissões ao vivo, com toda a lógica e persistência tratadas por uma API desenvolvida em FastAPI.
⚠️ Este repositório não contém o código-fonte completo. Ele foi preparado como um demonstrativo técnico das habilidades aplicadas no desenvolvimento.
Sou Eduardo Coloni, desenvolvedor backend júnior. Tenho experiência com automação de rotinas, infraestrutura Linux e QA, e atualmente busco oportunidades na área de backend. Este projeto surgiu da vontade de entender mais profundamente o funcionamento de sistemas reais — por isso nesse projeto, evitei bibliotecas prontas sempre que possível. Dois exemplos disso são a implementação manual de autenticação OAuth2 com Twitch e a construção de um pool de conexões com PostgreSQL usando psycopg2.
O LiveLootBot funciona como um sistema completo para autenticação de streamers da Twitch, verificação de espectadores ativos e execução de sorteios com base em regras personalizadas. A comunicação é feita entre três grandes componentes:
- Bot Discord: responsável por receber comandos e interagir com usuários.
- API FastAPI: orquestra a lógica de autenticação, sorteios e integrações.
- Banco de Dados: armazena informações seguras sobre tokens, usuários e resultados. E controla a lógica de negócio em funções criadas dentro do banco
- Fluxo completo OAuth2 com obtenção e renovação automática de tokens.
- Armazenamento seguro no PostgreSQL com tratamento de expirados.
- Callback via FastAPI com integração direta ao bot.
- Comando
!autenticaçãopara fazer toda a autenticação inicial necessária. - Comando
!iniciarpara acionar sorteios em tempo real. - Comunicação com a API via HTTP simulando arquitetura de microserviços.
- Estrutura modular pronta para expansão com novos comandos.
- Sorteio com lógica de peso por item e controle de frequência.
- Função SQL (
make_raffle e insert_items) para execução performática dentro do banco. - Integração direta com API da Twitch para obter chatters online.
- API assíncrona com rotas desacopladas da lógica de negócio.
- Inicialização customizada com controle de
lifespan. - Uso consistente de services e repositórios.
- Uso de JSON, índices, subqueries e transações seguras.
- Separação de ambientes de desenvolvimento, teste e produção.
- Estrutura planejada para escalabilidade e segurança.
| Área | Detalhes |
|---|---|
| Backend | FastAPI, arquitetura MVC, Facade e organização modular |
| Banco de Dados | Modelagem relacional, SQL avançado, PostgreSQL, lógica de negócio, transações e índices |
| Redis | Redis utilizado como cache para o banco de dados para melhor performance da aplicação |
| Integrações | OAuth2, APIs REST (Twitch), chamadas seguras |
| Bots | discord.py, comandos assíncronos, comunicação com backend via HTTP |
| Infraestrutura | .env, ngrok, estrutura para múltiplos ambientes |
| Conexão DB | Implementação manual de psycopg2.pool.SimpleConnectionPool |
| Segurança | Armazenamento seguro de tokens, separação de credenciais e ambientes |
| Docker | Criação de containers para a aplicação e bancos de dados, facilitando testes e deploy |
- Python 3.10+
- Docker Compose
- FastAPI
- Discord.py
- Twitch API (Helix)
- OAuth2
- PostgreSQL
- psycopg2 com Connection Pool
- Redis
- dotenv
- ngrok
KinoYuBot/
├── bot/ # Comandos e lógica do bot Discord
├── api/ # Backend com FastAPI
├── core/ # Configurações e exceções globais
├── database/
│ ├── postgres/ # Pool de conexões e repositórios
│ └── redis/ # Planejado para cache e controle temporário
Não incluso neste repositório, mas pensado para rodar com:
- Subir o container docker com o banco de dados e outras aplicações de suporte
.envcom variáveis do Discord, Twitch e banco.- Backend com
uvicorn, bot compython bot/bot.py. - Exposição de endpoints com
ngrokem ambiente local.
Este repositório visa mostrar o meu conhecimento prático em desenvolvimento backend, especialmente em áreas como controle de autenticação, conexão com banco, arquitetura e integração entre serviços. Ele acompanha meu currículo como prova de conhecimento aplicado e aprendizado constante.