KD MEU SS? é um gerador automático de grade horária para alunos da UnB. O sistema recebe as matérias que o aluno deseja cursar, aplica um algoritmo de detecção de conflitos e devolve todas as combinações de turmas possíveis sem sobreposição de horários — incluindo preferência de professor.
O back-end é uma API REST construída com Spring Boot. O front-end é uma página estática em HTML, CSS e TypeScript que consome essa API diretamente.
O coração do projeto é o GerenciadorGrades, que realiza três etapas:
1. Filtragem de preferências Para cada matéria escolhida pelo aluno, o sistema busca na memória todas as turmas disponíveis com aquele nome. Turmas com o mesmo código de horário são agrupadas e seus professores concatenados, permitindo que o aluno veja todas as opções de professor para aquele slot.
2. Geração de combinações A partir das turmas filtradas, o algoritmo percorre recursivamente todas as combinações possíveis (produto cartesiano das turmas por disciplina), seguindo o princípio do "tracinho" — para cada matéria, uma turma é escolhida e combinada com as demais.
3. Verificação de conflitos Cada combinação gerada passa pela verificação de conflitos antes de ser incluída no resultado. O algoritmo compara todos os pares de matérias da combinação e verifica:
- Se as matérias são do mesmo turno (Manhã, Tarde, Noite)
- Se há sobreposição de dias da semana
- Se os intervalos de horas se sobrepõem
Somente combinações sem nenhum conflito são retornadas ao front-end.
Base URL: http://localhost:8080
| Método | Rota | Descrição |
|---|---|---|
POST |
/gradesFiltradas/preferencias |
Recebe a lista de matérias escolhidas e retorna todas as grades possíveis sem conflito |
GET |
/gradesFiltradas/listaMaterias |
Retorna os nomes de todas as matérias disponíveis |
GET |
/gradesFiltradas/listaProfessores |
Retorna os nomes de todos os professores disponíveis |
[
{
"nome": "Cálculo 1",
"professor": "",
"codigo": ""
},
{
"nome": "Introdução à Ciência da Computação",
"professor": "",
"codigo": ""
}
][
{
"materias": [
{
"nome": "Cálculo 1",
"professor": "Prof. Silva",
"codigo": "MAT001A",
"horario": [{ "turno": "M", "dia": [2, 4], "hora": [1, 2] }]
},
{
"nome": "Introdução à Ciência da Computação",
"professor": "Prof. Souza",
"codigo": "CIC001B",
"horario": [{ "turno": "M", "dia": [3, 5], "hora": [3, 4] }]
}
]
}
]- Java 20+
- Maven
# Clone o repositório
git clone https://github.com/i-JSS/KDMeuSS.git
cd KDMeuSS
# Suba a API
./mvnw spring-boot:runA API ficará disponível em http://localhost:8080.
Abra o arquivo src/main/resources/static/index.html diretamente no navegador, ou sirva a pasta static com qualquer servidor HTTP local (ex: Live Server do VS Code). O front já aponta para localhost:8080 por padrão.
KDMeuSS/
├── src/
│ └── main/
│ ├── java/com/joaoseisei/KDMeuSS/
│ │ ├── KDMeuSSApplication.java # Entry point
│ │ ├── Controle.java # REST Controller
│ │ ├── GerenciadorGrades.java # Algoritmo de grades e conflitos
│ │ ├── Dados.java # Dados das matérias em memória
│ │ └── Model/
│ │ ├── Materia.java
│ │ ├── Horario.java
│ │ └── Grade.java
│ └── resources/
│ └── static/ # Front-end (HTML/CSS/TS)
├── Images/ # Screenshots
├── pom.xml
└── README.md