Sistema de gerenciamento de filas para docas (docks) desenvolvido em .NET 8.0 com Blazor Server e PostgreSQL.
- .NET SDK 8.0 (ou superior)
- PostgreSQL (banco de dados)
- Docker (opcional, para rodar via containers)
- Docker Compose (recomendado)
NÃO! Este projeto usa appsettings.json ao invés de arquivos .env.
-
Backend (
DockQueue.API/appsettings.json):- Configure a
ConnectionStrings:DefaultConnectioncom seus dados do PostgreSQL - Ajuste as configurações de JWT se necessário
- Configure a
-
Frontend (
DockQueue.Client/appsettings.json):- Configure
ApiSettings:BaseUrlpara apontar para a URL da API
- Configure
O projeto inclui um docker-compose.yml que configura tudo automaticamente:
# Inicia PostgreSQL e API juntos
docker-compose up -d
# Ver logs da API
docker-compose logs -f api
# Parar tudo
docker-compose downAcesse:
- API: http://localhost:8080
- Swagger: http://localhost:8080/swagger
- PostgreSQL: localhost:15432
Opção A: Usando Docker
docker-compose up -d postgresIsso iniciará o PostgreSQL na porta 15432.
Opção B: PostgreSQL Local
Se você tem PostgreSQL instalado localmente, edite DockQueue.API/appsettings.json:
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Port=5432;Database=DockQueueDb;Username=postgres;Password=sua_senha"
}dotnet tool install --global dotnet-ef --version 8.0.0cd DockQueue.API
dotnet ef database updatecd DockQueue.API
dotnet runA API estará disponível em:
- HTTPS: https://localhost:5001
- HTTP: http://localhost:5000
- Swagger: https://localhost:5001/swagger
Em outro terminal:
cd DockQueue.Client
dotnet runO frontend estará disponível em: https://localhost:5002 (ou porta configurada)
As rotas da API estão nos Controllers localizados em DockQueue.API/Controllers/:
- LoginController →
/api/Login - BoxController →
/api/Box - QueueController →
/api/Queue - UsersControllers →
/api/Users - StatusesController →
/api/Statuses - SettingsController →
/api/Settings - RefreshController →
/api/Refresh - OperatorPermissionsController →
/api/OperatorPermissions
Quando a API estiver rodando, acesse o Swagger para ver todas as rotas:
- URL: http://localhost:8080/swagger (Docker) ou https://localhost:5001/swagger (local)
Configurado em DockQueue.API/appsettings.json:
"Jwt": {
"Key": "sua_chave_secreta",
"Issuer": "DockQueueAPI",
"Audience": "DockQueueAPIUsers",
"AccessTokenMinutes": 30,
"RefreshTokenDays": 7
}Configurado no Program.cs do backend. Por padrão permite qualquer origem em desenvolvimento.
dockQueue-main/
├── DockQueue.API/ # Backend (API REST)
│ └── Controllers/ # 🛣️ Rotas da API
├── DockQueue.Client/ # Frontend (Blazor Server)
├── DockQueue.Application/ # Lógica de negócio
├── DockQueue.Domain/ # Entidades e domínio
├── DockQueue.Infra.Data/ # Repositórios e EF Core
└── DockQueue.Infra.Ioc/ # Injeção de dependência
Erro: Failed to connect to 127.0.0.1:15432
Soluções:
-
Se estiver usando Docker:
docker-compose ps # Verifique se o container está rodando docker-compose up -d postgres # Inicie o PostgreSQL docker-compose logs postgres # Verifique os logs
-
Se estiver usando PostgreSQL local:
- Verifique se o serviço PostgreSQL está rodando
- Atualize a connection string em
appsettings.jsonpara usarlocalhost:5432
Erro: column does not exist
Solução:
docker-compose down -v # Remove volumes (dados do banco)
docker-compose up -d # Recria o banco
cd DockQueue.API
dotnet ef database update- Altere as portas em
launchSettings.jsonouappsettings.json - Para Docker, altere as portas no
docker-compose.yml
# Restaurar dependências
dotnet restore
# Build do projeto
dotnet build
# Ver migrations pendentes
dotnet ef migrations list
# Criar nova migration
dotnet ef migrations add NomeDaMigration
# Aplicar migrations
dotnet ef database update
# Docker Compose
docker-compose up -d # Iniciar serviços
docker-compose down # Parar serviços
docker-compose logs -f api # Ver logs da API
docker-compose ps # Ver status dos containers- .NET 8.0 - Framework principal
- Blazor Server - Frontend
- Entity Framework Core - ORM
- PostgreSQL - Banco de dados
- JWT - Autenticação
- Swagger - Documentação da API
- Docker - Containerização
Este projeto é privado e de uso interno.