Chat em tempo real com WebSocket. Monorepo com backend em Spring Boot e frontend em Next.js.
| Camada | Tecnologia |
|---|---|
| Backend | Java 21 · Spring Boot 4 · Spring WebSocket + STOMP |
| Persistência | MongoDB |
| Frontend | Next.js 16 · React 19 · Tailwind CSS 4 |
| Containerização | Docker · Docker Compose |
livechat/
├── backend/ # API Spring Boot
├── frontend/ # App Next.js
├── docker-compose.yml
└── .env.example
- Docker
- Docker Compose
git clone https://github.com/lucas-adm/livechat.git
cd livechatcp .env.example .envAbra o .env e preencha os valores:
DB_HOST=mongodb
DB_PORT=27017
DB_USERNAME=admin
DB_PASSWORD=admin
DB_AUTH=admin
GITHUB_CLIENT_SECRET={SEU-SECRET} # ghcs
API_URL=http://backend:8080
STOMP_URL=http://localhost:8080
GITHUB_CLIENT_ID={SEU-ID} # ghci
# OAuth GitHub (opcional — login anônimo funciona sem isso)
# GITHUB_CLIENT_ID=ghci
# GITHUB_CLIENT_SECRET=ghcsNota:
DB_HOST=mongodbeAPI_URL=http://backend:8080usam os nomes dos containers definidos nodocker-compose.yml. Não altere esses valores ao rodar com Docker.
docker compose up --buildO Compose sobe os serviços nesta ordem:
- mongodb — aguarda o healthcheck passar antes de liberar o próximo
- backend — aguarda o MongoDB estar saudável
- frontend — aguarda o backend subir
| Serviço | URL |
|---|---|
| Frontend | http://localhost:3000 |
| Backend (API) | http://localhost:8080 |
Para habilitar o login via GitHub, crie um OAuth App em GitHub → Settings → Developer settings → OAuth Apps com:
- Homepage URL:
http://localhost:3000 - Authorization callback URL:
http://localhost:3000/redirect
Depois preencha GITHUB_CLIENT_ID e GITHUB_CLIENT_SECRET no .env e reinicie os containers.
O login anônimo (ícone de spy na tela inicial) funciona sem nenhuma configuração adicional.
docker compose downPara remover também o volume do MongoDB:
docker compose down -vPara matar tudo:
docker compose down --volumes --rmi all --remove-orphans