Este projeto é uma solução completa para streamers, focada em exibir chats da Twitch e YouTube em um único lugar, com interface responsiva para dispositivos móveis.
SpectrumChat é uma aplicação web progressiva (PWA) que permite aos streamers conectarem-se simultaneamente ao chat da Twitch e do YouTube, visualizando as mensagens em uma interface única e responsiva. O projeto é dividido em duas partes principais: frontend e backend.
- 🔄 Integração simultânea com Twitch e YouTube
- 📱 Interface responsiva (PWA)
- 🌙 Modo escuro por padrão
- 🔒 Autenticação com Google e vinculação de contas Twitch/YouTube
- 🚫 Recursos de moderação integrados
- 💾 Suporte offline
- 📊 Badges e emotes nativos de cada plataforma
- React com TypeScript
- Vite para build e desenvolvimento
- Tailwind CSS para interface
- WebSocket para comunicação em tempo real
- Service Workers para funcionalidades offline
- PWA para instalação nativa
- ESLint para linting de código
- Node.js com TypeScript
- Express para API REST
- WebSocket para comunicação em tempo real
- Integração com APIs da Twitch, YouTube e Google
- Sistema de logging estruturado
- Swagger para documentação da API
- SQLite para persistência de dados
- Jest para testes unitários e de integração
- Node.js 18.x ou superior
- npm 9.x ou superior
- Chaves de API da Twitch, YouTube e Google OAuth
- Navegador moderno com suporte a WebSocket
-
Clone o repositório:
git clone https://github.com/seu-usuario/spectrum.git cd spectrum
-
Copie os arquivos de exemplo para criar os arquivos de ambiente:
copy backend\.env.example backend\.env copy frontend\.env.example frontend\.env
-
Configure as credenciais nos arquivos
.envcriados. Você precisará configurar:- Credenciais da API do Google (para autenticação)
- Credenciais da API da Twitch
- Credenciais da API do YouTube
-
Entre na pasta do backend:
cd backend npm install
-
Configure as variáveis de ambiente no arquivo
backend/.envseguindo o modelobackend/.env.example:# Requisitos mínimos GOOGLE_CLIENT_ID=seu_client_id_google GOOGLE_CLIENT_SECRET=seu_client_secret_google TWITCH_CLIENT_ID=seu_client_id_twitch TWITCH_CLIENT_SECRET=seu_client_secret_twitch YOUTUBE_CLIENT_ID=seu_client_id_youtube YOUTUBE_CLIENT_SECRET=seu_client_secret_youtube YOUTUBE_API_KEY=sua_api_key_youtube
-
Inicie o servidor:
npm run dev
-
Entre na pasta do frontend:
cd frontend npm install
-
Configure as variáveis de ambiente no arquivo
frontend/.envseguindo o modelofrontend/.env.example:VITE_API_URL=http://localhost:3001 VITE_WS_URL=ws://localhost:3001
-
Inicie o servidor de desenvolvimento:
npm run dev
- Acesse o Google Cloud Console
- Crie um novo projeto
- Navegue até "APIs e Serviços" > "Credenciais"
- Clique em "Criar Credenciais" > "ID do Cliente OAuth"
- Configure as origens JavaScript autorizadas (ex: http://localhost:3000, que será o endereço do frontend Vite)
- Configure as URIs de redirecionamento autorizadas (ex: http://localhost:3001/auth/google/callback, que é o endpoint no backend)
- Copie o Client ID e Client Secret para o arquivo
backend/.env
- Acesse o Twitch Developer Console
- Crie uma nova aplicação
- Defina o URI de redirecionamento OAuth: http://localhost:3001/auth/twitch/callback
- Obtenha o Client ID e Client Secret e adicione ao arquivo
backend/.env
- Acesse o Google Cloud Console
- No seu projeto, vá para "APIs e Serviços" > "Biblioteca"
- Ative a "YouTube Data API v3"
- Crie credenciais OAuth para esta API (ID do Cliente OAuth)
- Configure o URI de redirecionamento OAuth: http://localhost:3001/auth/youtube/callback
- Copie o Client ID e Client Secret para o arquivo
backend/.env - Crie uma Chave de API (API Key) para o projeto e adicione ao
backend/.envcomoYOUTUBE_API_KEY.
O SpectrumChat pode ser instalado como um aplicativo nativo em:
- 📱 Android através do Chrome
- 📱 iOS através do Safari
- 💻 Desktop através do Chrome, Edge ou outros navegadores compatíveis
Recursos offline disponíveis:
- Cache de mensagens anteriores
- Interface completa
- Indicador de status de conexão
- Sincronização automática quando online
- OAuth2 para autenticação segura
- JWT para sessões (gerenciadas via cookies httpOnly e secure)
- HTTPS obrigatório em produção
- Rate limiting para proteção contra abusos (a ser implementado conforme necessidade)
- Validação de origem de WebSocket
- Sanitização de mensagens para prevenir XSS
A interface do SpectrumChat é construída com Tailwind CSS, permitindo uma ampla personalização:
- Cores e Tema: Modifique as cores primárias, secundárias e de fundo no arquivo
frontend/tailwind.config.jspara ajustar o tema (incluindo o modo escuro). - Estilos de Componentes: Personalize componentes React (
frontend/src/components/) individualmente aplicando classes Tailwind ou modificando seus estilos internos. - Fontes e Tipografia: Configure fontes e estilos tipográficos através do
frontend/tailwind.config.jsefrontend/src/index.css. - Espaçamentos e Layout: Ajuste espaçamentos, margens e o layout geral utilizando as classes de utilitário do Tailwind CSS nos componentes.
O WebSocket (backend/src/websocket/index.ts) permite:
- Recebimento de mensagens em tempo real
- Ações de moderação instantâneas
- Indicadores de status de conexão
- Reconexão automática
- Buffer de mensagens offline (gerenciado pelo frontend)
- Faça um Fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Para suporte, envie um email para [seu-email@exemplo.com] ou abra uma issue no GitHub.
