https://github.com/mathvsk/jacourses
Projeto de gerenciamento de cursos desenvolvido em Java com Spring Boot. Permite criar, listar, atualizar, ativar/desativar e excluir cursos por meio de uma API REST, com validação de dados e tratamento de exceções. Ideal para controle simples de cursos em sistemas educacionais.
https://github.com/mathvsk/jacourses
java spring-boot
Last synced: about 1 month ago
JSON representation
Projeto de gerenciamento de cursos desenvolvido em Java com Spring Boot. Permite criar, listar, atualizar, ativar/desativar e excluir cursos por meio de uma API REST, com validação de dados e tratamento de exceções. Ideal para controle simples de cursos em sistemas educacionais.
- Host: GitHub
- URL: https://github.com/mathvsk/jacourses
- Owner: mathvsk
- License: mit
- Created: 2025-05-07T09:19:08.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-07T09:32:53.000Z (about 1 year ago)
- Last Synced: 2025-10-04T15:02:25.727Z (9 months ago)
- Topics: java, spring-boot
- Language: Java
- Homepage:
- Size: 37.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Jacourses





**Jacourses** é uma aplicação web desenvolvida em **Java** com **Spring Boot**, voltada para o gerenciamento de cursos. A API permite criar, listar, atualizar, ativar/desativar e excluir cursos de maneira simples e organizada, utilizando um banco de dados **PostgreSQL** para persistência.
---
## Estrutura do Projeto
A organização do código segue o padrão do Spring Boot:
```
src/
├── main/
│ ├── java/
│ │ └── com.matheus.jacourses/
│ │ ├── controllers/ # Camada de controle (API REST)
│ │ ├── useCases/ # Regras de negócio (casos de uso)
│ │ ├── repositories/ # Interfaces de persistência (Spring Data JPA)
│ │ ├── models/ # Entidades JPA
│ │ ├── dtos/ # Data Transfer Objects
│ │ └── exceptions/ # Tratamento de exceções
│ └── resources/
│ └── application.properties # Configurações da aplicação
└── test/
└── java/ # Testes unitários e de integração
```
---
## Tecnologias Utilizadas
- **Java 21**
- **Spring Boot 3.4.5**
- **PostgreSQL**
- **Lombok**
- **Maven**
- **Docker** (opcional para rodar o banco de dados)
---
## Configuração do Ambiente
### Pré-requisitos
- Java 21+
- Maven
- Docker (opcional, mas recomendado)
### Configuração do Banco de Dados
1. Crie um arquivo `.env` na raiz do projeto baseado no `.env-example`:
```env
POSTGRES_USER=seu_usuario
POSTGRES_PASSWORD=sua_senha
POSTGRES_DB=nome_do_banco
```
2. Suba o container com Docker Compose:
```bash
docker-compose up -d
```
---
## Execução da Aplicação
Com o banco de dados em execução, inicie a aplicação:
```bash
./mvnw spring-boot:run
```
A aplicação estará disponível em: [http://localhost:8080](http://localhost:8080)
---
## Endpoints da API
> Base URL: `http://localhost:8080/api/v1/courses`
| Método | Rota | Descrição |
|--------|---------------------|----------------------------------|
| GET | `/` | Lista todos os cursos |
| POST | `/` | Cria um novo curso |
| PUT | `/{id}` | Atualiza um curso existente |
| PATCH | `/{id}/active` | Ativa ou desativa um curso |
| DELETE | `/{id}` | Remove um curso |
### Exemplo de Requisições
#### Criar Curso (POST `/`)
```json
{
"name": "Nome do Curso",
"category": "Categoria do Curso",
"active": true //opcional
}
```
#### Atualizar Curso (PUT `/{id}`)
```json
{
"name": "Novo Nome",
"category": "Nova Categoria"
}
```
---
## Tratamento de Exceções
A aplicação conta com um manipulador global (`GlobalExceptionHandler`) para capturar e padronizar respostas de erro:
| Código HTTP | Situação |
|-------------|---------------------------------------|
| 400 | Erros de validação ou requisições inválidas |
| 404 | Recurso não encontrado |