Uma aplicação completa de chat em tempo real e streaming de vídeo construída com ASP.NET Core, React e SignalR.
- Login de usuário com autenticação JWT
- Login como convidado sem necessidade de cadastro
- Salas de chat múltiplas com histórico de mensagens
- Notificações de usuários entrando/saindo
- Interface responsiva para desktop e mobile
- Transmissão ao vivo via WebRTC
- Chat da stream em tempo real
- Contador de viewers dinâmico
- Lista de streams ativas
- Interface de controle para streamers
- Autenticação JWT com suporte a guests
- SignalR para comunicação em tempo real
- WebRTC para streaming de vídeo P2P
- Entity Framework com SQL Server
- Docker para deploy completo
- Controllers: Auth, Chat, Stream
- Services: AuthService, ChatService, StreamService
- Hubs: ChatHub para SignalR
- Models: User, ChatRoom, ChatMessage, StreamSession
- Data: ApplicationDbContext com Entity Framework
- Contexts: AuthContext, SignalRContext
- Components: Login, Chat, Stream, Navigation
- Services: API integration
- Styling: CSS modules responsivos
- Users: Usuários e perfis
- ChatRooms: Salas de chat
- ChatMessages: Mensagens com histórico
- StreamSessions: Sessions de streaming
- Docker e Docker Compose
- Git
- Clone o repositório:
git clone <seu-repositorio>
cd chatstream- Execute o script de configuração:
chmod +x setup.sh
./setup.sh- Acesse a aplicação:
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- Swagger: http://localhost:5000/swagger
- Criar estrutura de diretórios:
chatstream/
├── backend/
├── frontend/
└── docker-compose.yml
-
Copiar arquivos dos artifacts fornecidos para suas respectivas pastas
-
Configurar CSS: Criar os arquivos CSS dos componentes conforme documentado
-
Executar com Docker:
docker-compose up --buildcd backend
dotnet restore
dotnet runcd frontend
npm install
npm startO banco é criado automaticamente via Entity Framework migrations.
Backend (appsettings.json):
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=ChatStreamDB;..."
},
"JwtSettings": {
"Secret": "YourSecretKey"
}
}Frontend:
As URLs da API são configuradas em src/services/api.ts.
- Login: Crie uma conta ou entre como convidado
- Salas: Navegue entre diferentes salas de chat
- Mensagens: Envie mensagens em tempo real
- Usuários: Veja quem está online
- Criar Stream: Usuários logados podem iniciar transmissões
- Assistir: Qualquer usuário pode assistir streams ativas
- Interagir: Chat integrado durante a transmissão
- Gerenciar: Streamers podem encerrar suas transmissões
- JWT Tokens para autenticação
- CORS configurado corretamente
- Validações no backend e frontend
- Sanitização de inputs
- HTTPS pronto para produção
# Todos os serviços
docker-compose logs -f
# Serviço específico
docker-compose logs -f backend
docker-compose logs -f frontend- Backend: http://localhost:5000/health
- Database: Verificar status via logs
- SSL/TLS: Configurar certificados
- Environment: Usar
appsettings.Production.json - Secrets: Usar Azure Key Vault ou similar
- Scaling: Load balancer para múltiplas instâncias
- Database: SQL Server em produção
# Build otimizado
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
# Backup do banco
docker exec chatstream-db /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P "YourPassword" \
-Q "BACKUP DATABASE ChatStreamDB TO DISK = '/tmp/backup.bak'"Container não inicia:
# Verificar logs
docker-compose logs <service-name>
# Reconstruir
docker-compose down
docker-compose up --buildDatabase connection issues:
- Verificar senha do SA no docker-compose.yml
- Aguardar inicialização completa do SQL Server
- Verificar connection string
WebRTC não funciona:
- Verificar permissões de câmera/microfone
- Testar em HTTPS (necessário para produção)
- Verificar firewall/NAT
SignalR desconectado:
- Verificar URL do hub
- Verificar token JWT válido
- Verificar CORS policy
- Fork o projeto
- Crie uma branch para sua feature
- Commit suas mudanças
- Push para a branch
- Abra um Pull Request
Este projeto está sob licença MIT. Veja o arquivo LICENSE para mais detalhes.
Para suporte ou dúvidas:
- Abra uma issue no GitHub
- Consulte a documentação da API (Swagger)
- Verifique os logs dos containers
- Notificações push
- Upload de arquivos no chat
- Gravação de streams
- Moderação avançada
- Integração com APIs externas
- App mobile nativo
- Múltiplos idiomas
Desenvolvido com ❤️ usando ASP.NET Core, React e Docker.