Sistema de gestão de chamados com frontend em Next.js, backend em NestJS, banco MySQL e cache Redis, tudo orquestrado com Docker Compose.
- Frontend: Next.js + React + TypeScript
- Backend: NestJS + Prisma + WebSocket
- Banco: MySQL 8
- Cache: Redis
- Infra: Docker Compose
- Docker Desktop
- Docker Compose
- Git
Clone o repositório:
git clone seu-repo
cd seu-repoCopie o arquivo de ambiente:
cp .env.example .envSuba todos os containers:
docker compose up --build- Frontend: http://localhost:3000
- API: http://localhost:3001
- WebSocket: ws://localhost:3001
- MySQL: localhost:3306
- Redis: localhost:6379
chamados/
├── .env.example
├── docker-compose.yml
├── apps/
│ ├── Back/
│ │ ├── Dockerfile
│ │ ├── prisma/
│ │ └── src/
│ └── Front/
│ ├── Dockerfile
│ └── src/
└── README.mdO arquivo .env.example já contém os valores padrão para desenvolvimento local:
MYSQL_ROOT_PASSWORD=root123
MYSQL_USER=chamados
MYSQL_PASSWORD=chamados123
MYSQL_DATABASE=chamados
DATABASE_URL=mysql://chamados:chamados123@mysql:3306/chamados
REDIS_URL=redis://redis:6379
PORT=3001
FRONTEND_URL=http://localhost:3000
NEXT_PUBLIC_API_URL=http://localhost:3001/api
NEXT_PUBLIC_WS_URL=ws://localhost:3001
JWT_SECRET=troque-por-um-segredo-forteSe quiser trocar dados sensíveis ou portas, edite o arquivo .env antes de subir os containers.
Subir em background:
docker compose up --build -dParar tudo:
docker compose downVer logs:
docker compose logs -fExecutar migration do Prisma dentro do container da API:
docker compose exec api npx prisma migrate deployRebuild apenas da aplicação web:
docker compose build web- O projeto foi configurado para funcionar com containers e não exige instalação local do MySQL ou Redis.
- As dependências do frontend e do backend são instaladas automaticamente durante o build do Docker.
- O banco é persistido em volume Docker, então os dados continuam entre reinicializações do container.
Se aparecer erro de npm ci, verifique se o arquivo package-lock.json existe no app. Neste projeto, o Dockerfile foi ajustado para usar npm install para garantir o build sem intervenção manual.
Verifique se o container do MySQL está saudável:
docker compose psE se necessário execute:
docker compose restart apiEste projeto foi desenvolvido como aplicação interna para gestão de tickets e pode ser adaptado conforme a necessidade da equipe.