Sistema desenvolvido para monitoramento e controle de silos agrícolas, permitindo o gerenciamento de propriedades, dispositivos, sensores e dados de armazenamento. O projeto utiliza Spring Boot e segue a metodologia Kanban para gestão de tarefas e Git Flow para controle de versão.
� EM DESENVOLVIMENTO – Sistema em desenvolvimento ativo com funcionalidades principais implementadas.
- ✅ API REST com Spring Boot implementada
- ✅ Autenticação com AWS Cognito integrada
- ✅ Documentação Swagger configurada
- ✅ Estrutura MVC organizada e funcional
- ✅ Metodologia Kanban configurada para acompanhamento de tarefas
- ✅ Fluxo Git Flow definido para controle de branches e versões
- ⏳ Testes unitários em desenvolvimento
- ⏳ Deploy em configuração
- Gestão de Propriedades: Cadastro e gerenciamento de propriedades agrícolas
- Controle de Silos: Monitoramento de silos e suas capacidades
- Gerenciamento de Dispositivos: Controle de dispositivos IoT conectados
- Monitoramento de Sensores: Acompanhamento em tempo real de sensores de temperatura, umidade, etc.
- Gestão de Usuários: Sistema de autenticação e autorização com AWS Cognito
- API RESTful: Endpoints completos para todas as funcionalidades
- Documentação Swagger: Interface interativa para testes e documentação da API
- Java 17 - Linguagem de programação
- Spring Boot 3.x - Framework principal
- Spring Security - Segurança e autenticação
- Spring Data JPA - Persistência de dados
- AWS Cognito - Autenticação e autorização
- Swagger/OpenAPI - Documentação da API
- Maven - Gerenciamento de dependências
- H2/PostgreSQL - Banco de dados
Trabalho-DevOps/
├── sofrimento/ # Aplicação Spring Boot
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/br/edu/utfpr/sofrimento/
│ │ │ │ ├── SofrimentoApplication.java
│ │ │ │ ├── config/
│ │ │ │ │ └── SwaggerConfig.java
│ │ │ │ ├── controllers/ # Controllers REST
│ │ │ │ │ ├── AuthController.java
│ │ │ │ │ ├── DeviceController.java
│ │ │ │ │ ├── PersonController.java
│ │ │ │ │ ├── PropertyController.java
│ │ │ │ │ ├── SensorController.java
│ │ │ │ │ ├── SiloController.java
│ │ │ │ │ └── UserController.java
│ │ │ │ ├── dtos/ # Data Transfer Objects
│ │ │ │ ├── exception/ # Tratamento de exceções
│ │ │ │ ├── models/ # Entidades JPA
│ │ │ │ ├── repositories/ # Repositórios JPA
│ │ │ │ ├── security/ # Configurações de segurança
│ │ │ │ └── services/ # Lógica de negócio
│ │ │ └── resources/
│ │ │ └── application.properties
│ │ └── test/ # Testes unitários
│ ├── mvnw / mvnw.cmd # Maven Wrapper
│ └── pom.xml # Configuração Maven
├── README.md
├── HELP.md
├── SWAGGER_AUTH_DOCUMENTATION.md
└── shell.nix
- Java 17 ou superior
- Maven 3.6 ou superior
-
Clone o repositório:
git clone https://github.com/garra400/Trabalho-DevOps.git cd Trabalho-DevOps/sofrimento -
Execute a aplicação:
./mvnw spring-boot:run
Ou no Windows:
mvnw.cmd spring-boot:run
-
Acesse a aplicação:
- API:
http://localhost:8080 - Swagger UI:
http://localhost:8080/swagger-ui.html
- API:
POST /auth/login- Login de usuário
GET /properties- Listar propriedadesPOST /properties- Criar propriedadeGET /properties/{id}- Buscar propriedade por IDPUT /properties/{id}- Atualizar propriedadeDELETE /properties/{id}- Deletar propriedade
GET /silos- Listar silosPOST /silos- Criar siloGET /silos/{id}- Buscar silo por IDPUT /silos/{id}- Atualizar siloDELETE /silos/{id}- Deletar silo
- Endpoints similares para
devices,sensorseusers
Para documentação completa, acesse /swagger-ui.html após executar a aplicação.
- Quadro dividido em To Do, In Progress, Review e Done
- Tarefas registradas como issues no repositório
- Uso de labels para classificação (bug, feature, enhancement, documentation)
-
Branches principais:
main: versão estável e de produçãodev: versão em desenvolvimento
-
Branches auxiliares:
feature/*: novas funcionalidadesrelease/*: preparação de releaseshotfix/*: correções urgentes em produção
Este projeto utiliza o sistema de forks para contribuições. Siga estes passos:
-
Faça um fork do repositório para sua conta GitHub
-
Clone seu fork localmente:
git clone https://github.com/SEU_USUARIO/Trabalho-DevOps.git cd Trabalho-DevOps -
Configure o repositório original como upstream:
git remote add upstream https://github.com/garra400/Trabalho-DevOps.git
-
Sincronize com o repositório original:
git checkout dev git pull upstream dev git push origin dev
-
Crie uma branch a partir de
dev:git checkout -b feature/nome-da-feature
-
Implemente sua alteração seguindo os padrões do projeto
-
Faça commits seguindo o padrão:
git commit -m "feat: descrição breve da funcionalidade" git commit -m "fix: descrição breve da correção" git commit -m "docs: atualização de documentação"
-
Envie para seu fork:
git push origin feature/nome-da-feature
- Abra um Pull Request do seu fork para a branch
devdo repositório original - Descreva claramente as mudanças implementadas
- Aguarde a revisão da equipe de desenvolvimento
- Faça ajustes se solicitado pelos revisores
- Pull Requests são revisados e aprovados na branch
dev - Periodicamente, mudanças aprovadas em
devsão promovidas paramain(produção) - Releases são criadas a partir da branch
main
feat:nova funcionalidadefix:correção de bugdocs:mudanças na documentaçãostyle:formatação, ponto e vírgula, etc (sem mudança de código)refactor:refatoração de códigotest:adição ou modificação de testeschore:mudanças em ferramentas, configurações, etc
- Siga as convenções do Java e Spring Boot
- Mantenha os testes atualizados
- Documente métodos públicos com Javadoc
- Use nomes descritivos para variáveis e métodos
Agradecemos a todos os contribuidores que ajudam a tornar este projeto melhor!
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.