Sistema gerenciador de projetos realizados por professores e alunos da Cidade Inteligente da Fatec de Lins - Professor Antônio Seabra, permitindo o cadastro, a divulgação e a administração completa dos projetos e de suas mídias.
Tela.Principal.+.Visualizando.Projeto.mp4
Criacao.edicao.e.exclusao.do.Projeto.mp4
Tela.de.Admin.mp4
- Cadastro e autenticação de usuários (login com cookie de autenticação);
- Recuperação e redefinição de senha via e-mail com token de expiração;
- Cadastro de projetos com mídias (imagens e vídeos), área, curso e usuários envolvidos;
- Listagem paginada e consulta detalhada de projetos;
- Atualização e exclusão de projetos pelo criador ou usuários envolvidos;
- Administração de áreas, cursos e usuários (perfil administrador);
- Upload e remoção de arquivos de mídia em armazenamento na nuvem.
- O sistema garante a segurança via autenticação por cookies com política de expiração deslizante.
- O sistema garante a integridade dos dados com validações internas e constraints na base de dados.
- O sistema suporta escalabilidade horizontal conforme aumento de carga com HPA.
- O sistema garante consistência transacional com Unit of Work e ações de compensação pós-rollback.
- O sistema protege endpoints sensíveis com rate limiting (limite de tentativas de login por IP).
- O sistema prove observabilidade, com métricas, health checks e logs distribuídos rastreáveis por CorrelationId.
- O sistema armazena senhas com hash BCrypt.
- Notification Pattern (fluxo sem exceptions para erros de negócio);
- Padrão CQRS (Command Query Responsibility Segregation);
- Mediator Pattern com MediatR;
- Clean Architecture;
- Unit of Work;
- Specification Pattern para consultas reutilizáveis;
- Uso de Middlewares e Action Filters para cross-cutting concerns;
- Aplicação containerizada.
- .NET 10 com C# 14;
- ASP.NET Core MVC com Razor Views;
- Entity Framework Core;
- FluentValidation para validações robustas;
- Autenticação e autorização via Cookies;
- Rate Limiting nativo do ASP.NET Core;
- Health Checks com verificação do banco de dados.
- SQL Server;
- Migrations aplicadas automaticamente na inicialização;
- Azure Blob Storage para armazenamento das mídias dos projetos;
- SendGrid para envio de e-mails transacionais.
- Prometheus para coleta de métricas;
- Serilog com logging estruturado;
- Logs distribuídos com CorrelationId para rastreabilidade.
- Testes unitários com xUnit;
- FluentAssertions para assertions mais expressivas;
- Moq para criação de mocks e isolamento de dependências.
- Docker e Docker Compose para containerização;
- Kubernetes (Deployments, Services, HPA, ConfigMaps e Secrets).
- Navegue até o diretório dos testes:
cd ./CidadeInteligente.Tests/
- E insira o comando de execução de testes:
dotnet test
- Copie o arquivo
.env.examplepara.envna raiz do repositório:
copy .env.example .env
- Preencha as variáveis no arquivo
.env:DATABASE_PASSWORD: senha do SQL Server (mínimo de 8 caracteres, com letras maiúsculas, minúsculas e números);CONNECTIONSTRINGS__FILESTORAGE: connection string do Azure Blob Storage (pode deixar vazio, mas não haverá imagens);SENDGRID_APIKEY: API Key do SendGrid para envio de e-mails (pode deixar vazio, mas não enviará e-mails);
- Configure os user-secrets do projeto MVC a partir do
.envcom o script:
.\scripts\set-user-secrets.bat
- É necessário que tenha o SQL Server em sua máquina, caso não possua, pule para a etapa 🐳 Via Docker Compose. Caso possua, navegue até o diretório da camada MVC da aplicação:
cd ./CidadeInteligente.Mvc/
- Insira o comando de execução do projeto:
dotnet run --launch-profile https
- Acesse https://localhost:7233
- Suba os containers (o
.envé carregado automaticamente):
docker compose up --build
- Navegue até o diretório de scripts:
cd ./scripts/
- Crie o secret do cluster a partir das variáveis do
.env:
create-k8s-secret.bat
- Aplique os manifests e reinicie o deployment:
deploy-k8s.bat
- Em seguida faça o PortForward:
kubectl port-forward svc/cidade-inteligente-mvc-service 8080:80
- Acesse http://localhost:8080