Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stephanyecunto/capycourses
CapyCourses: Plataforma de cursos online com catálogo diversificado, filtros e avaliações. Desenvolvido em Java e JavaFX para uma experiência desktop robusta. Projeto open-source, contribuições são bem-vindas! Licença MIT.
https://github.com/stephanyecunto/capycourses
css java javafx maven
Last synced: 26 days ago
JSON representation
CapyCourses: Plataforma de cursos online com catálogo diversificado, filtros e avaliações. Desenvolvido em Java e JavaFX para uma experiência desktop robusta. Projeto open-source, contribuições são bem-vindas! Licença MIT.
- Host: GitHub
- URL: https://github.com/stephanyecunto/capycourses
- Owner: StephanyeCunto
- License: other
- Created: 2024-10-20T20:36:37.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2025-01-20T13:13:35.000Z (about 1 month ago)
- Last Synced: 2025-01-20T13:23:30.385Z (about 1 month ago)
- Topics: css, java, javafx, maven
- Language: Java
- Homepage:
- Size: 31.4 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# 🦫 CapyCourses - A Jornada do Saber Começa Aqui! 📚
> Transformando o aprendizado em uma experiência extraordinária com tecnologia e inovação.
[](https://github.com/StephanyeCunto/CapyCourses/actions/workflows/ci-cd.yml)
[](https://www.oracle.com/java/)
[](https://openjfx.io/)
[](LICENSE)
[](https://wakatime.com/badge/github/StephanyeCunto/CapyCourses)
[](https://wakatime.com/badge/user/cfd3175d-aa54-44f0-b0c6-befacccd6793/project/b49cdaa5-fd26-4250-b17e-2c68c5875e52)---
## 📋 Sumário
- [Sobre o Projeto](#-sobre-o-projeto)
- [Funcionalidades](#-funcionalidades)
- [Tecnologias](#-tecnologias)
- [Começando](#-começando)
- [Estrutura do Projeto](#-estrutura-do-projeto)
- [Metodologia](#-metodologia)
- [Interface](#-interface)
- [Contribuição](#-contribuição)
- [Roadmap](#-roadmap)
- [Licença](#-licença)
- [FAQ](#-faq)
- [Contribuições Futuras](#-contribuições-futuras)
- [Segurança](#-segurança)
- [Diagrama Entidade Relacionamento](#-diagrama-entidade-relacionamento)
- [Comunicação](#-comunicação)
- [Feedback](#-feedback)
- [Roadmap Detalhado](#-roadmap-detalhado)
- [Licenciamento](#-licenciamento)
- [Agradecimentos](#-agradecimentos)
---## 🎯 Sobre o Projeto
O **CapyCourses** é uma plataforma de ensino online desenvolvida em JavaFX, projetada para oferecer uma experiência de aprendizado moderna, intuitiva e envolvente. Nossa missão é democratizar o conhecimento através de uma interface amigável e recursos inovadores.
### 🦫 Por que CapyCourses?
| Característica | Descrição |
|-------------------------|---------------------------------------------------------------------------|
| 🎨 *Design Moderno* | Interface elegante com suporte a temas claro/escuro. |
| 📱 *Responsividade* | Adaptável a diferentes dispositivos e resoluções. |
| 🔒 *Segurança* | Sistema robusto de autenticação e permissões. |
| 🚀 *Performance* | Otimizado para máxima eficiência. |
| 🌟 *Experiência* | Foco na usabilidade e satisfação do usuário. |
| 🦫 *Comunidade* | Ambiente colaborativo com fóruns e interação entre alunos e professores. |---
## ✨ Funcionalidades
### 🎓 Gerenciamento de Cursos
- Criação e edição de cursos.
- Organização por categorias e níveis de dificuldade.
- Sistema de avaliação e feedback.
- Acompanhamento de progresso do aluno.
- Emissão de certificados personalizados.### 👥 Perfis de Usuário
- **Aluno**: Acesso a cursos, materiais e fóruns.
- **Professor**: Criação e gerenciamento de cursos.
- **Administrador**: Controle total da plataforma.### 📚 Recursos de Aprendizado
- Biblioteca digital com materiais complementares.
- Fórum de discussão para interação entre alunos e professores.
- Vídeos, quizzes e materiais interativos.
- Certificados personalizados ao concluir cursos.### ⚙️ Personalização
- Modo escuro/claro.
- Configurações de perfil personalizadas.
- Preferências salvas.
- Notificações personalizáveis.### 🛠️ Ferramentas Avançadas
- Dashboard de desempenho com métricas detalhadas.
- Relatórios de progresso e desempenho.---
## 🛠️ Tecnologias
### Core
| Tecnologia | Versão | Descrição |
|:----------:|:------:|:---------:|
|  | 17+ | Backend e lógica principal |
|  | 19+ | Interface gráfica |
|  | 3.6+ | Gestão de dependências |### Dependências
| Tecnologia | Versão | Descrição |
|:----------:|:------:|:---------:|
|  | 1.18+ | Redução de boilerplate |
|  | 2.0+ | Validação de formulários |
|  | 6.0+ | Persistência de dados |
|  | 5.0+ | Testes unitários |---
### Ferramentas de Desenvolvimento
- **VS Code**: IDE principal.
- **Git**: Controle de versão.
- **Scene Builder**: Design de interfaces JavaFX.---
## 🚀 Começando
### Pré-requisitos
Certifique-se de ter instalado:
- Java 17+
- JavaFX 19+
- Maven 3.6+```bash
# Verifique as versões instaladas
java -version
mvn -version
```## Instalação
```bash
# Clone o repositório
git clone https://github.com/StephanyeCunto/CapyCourses.git# Entre no diretório
cd CapyCourses# Instale as dependências
mvn clean install# Execute o projeto
mvn javafx:run
```
---
## 🔧 Integração Contínua (CI)O projeto utiliza **GitHub Actions** para garantir a qualidade do código. A cada push ou pull request, o pipeline de CI é executado para:
- Compilar o projeto.
- Executar testes automatizados.
- Verificar a qualidade do código.[](https://github.com/StephanyeCunto/CapyCourses/actions/workflows/ci-cd.yml)
### Como Funciona?
1. **Compilação**: O projeto é compilado usando o Maven (`mvn clean package`).
2. **Testes**: Os testes automatizados são executados (`mvn test`).
3. Análise Estática: O código é verificado com o PMD (`mvn pmd:check`).
4. Verificação de Dependências: As dependências são analisadas com OWASP Dependency-Check (`mvn org.owasp:dependency-check-maven:check`).
5. **Status**: O badge acima mostra o status atual do CI (✅ passando ou ❌ falhando).### Como Verificar?
- Clique no badge **CI Status** para ver os detalhes da execução do pipeline na aba **Actions** do GitHub.---
## 🗂️ Estrutura do Projeto
```bash
src/
├── com/
│ ├── login_cadastro/ # Autenticação
│ ├── paginaInicial/ # Páginas principais
│ ├── model/ # Entidades
│ └── controller/ # Controladores
├── resources/
│ ├── views/ # Arquivos FXML
│ ├── css/ # Estilos
│ └── images/ # Recursos visuais
```
## 📈 MetodologiaUtilizamos **Scrum** como framework ágil, com:
- 🔄 Sprints de 2 semanas
- 📊 Planejamento iterativo e priorização de tarefas.
- 👥 Daily meetings para acompanhamento do progresso.
- 📝 Retrospectivas para melhoria contínua.### Padrões de Projeto
- 🏗️ **MVC (Model-View-Controller)**: Separação de responsabilidades entre modelos, visualizações e controladores.
- 🔒 **Singleton**: Garantia de que apenas uma instância de uma classe seja criada.
- 🗃️ **DAO (Data Access Object)**: Abstração de acesso a dados para persistência.
- 🧩 **Factory**: Criação de objetos de forma flexível e desacoplada.### Ferramentas de Gestão
- **Trello**: Para gerenciamento de tarefas e acompanhamento de sprints.
- **GitHub Projects**: Para organização de issues e pull requests.
- **Discord**: Para comunicação diária e reuniões da equipe.---
## 🖼️ Interface
### Tela de Login (Modo Escuro)
### Tela Inicial Aluno (Modo Claro)
*Mais screenshots disponíveis na [galeria completa](https://github.com/StephanyeCunto/CapyCourses/tree/main/img)*
---
## 👥 Contribuição
1. Fork o projeto.
2. Crie sua branch (`git checkout -b feature/AmazingFeature`).
3. Commit suas mudanças (`git commit -m 'Add: nova funcionalidade'`).
4. Push para a branch (`git push origin feature/AmazingFeature`).
5. Abra um Pull Request.### Diretrizes de Contribuição
- 📝 **Documentação**: Mantenha a documentação atualizada.
- 🧪 **Testes**: Adicione testes unitários e de integração para novas funcionalidades.
- 🧹 **Clean Code**: Siga as boas práticas de codificação.
- 🔄 **Revisão**: Submeta seu código para revisão antes de merge.### Boas Práticas
- Use nomes descritivos para branches, commits e variáveis.
- Documente novas funcionalidades no README ou em arquivos específicos.
- Respeite o padrão de código definido no projeto.---
## 🗺 Roadmap
### Em Andamento
- [x] Interface responsiva.
- [ ] Integração com banco de dados.
- [ ] Sistema de permissões avançado.### Próximas Etapas
- [ ] Módulo de análise de desempenho.
- [ ] API REST para integração com outras plataformas.
- [ ] Suporte a múltiplos idiomas.### Futuro
- [ ] Integração com serviços de pagamento.
- [ ] Aplicativo móvel (Android/iOS).
- [ ] Inteligência Artificial para recomendações personalizadas.---
## 📄 Licença
Distribuído sob a licença MIT. Veja `LICENSE` para mais informações.
---
## ❓ FAQ
### Perguntas Frequentes
#### 1. Como reportar um bug?
- Abra uma **issue** no GitHub com a descrição do problema.
- Inclua:
- Passos para reproduzir o bug.
- Capturas de tela ou vídeos, se aplicável.
- Informações sobre o ambiente (SO, versão do Java, etc.).#### 2. Como sugerir uma nova funcionalidade?
- Crie uma **issue** com a label `enhancement`.
- Descreva sua ideia de forma clara e detalhada.
- Explique como a funcionalidade beneficiaria os usuários.#### 3. Como configurar o ambiente de desenvolvimento?
- Siga o guia na seção [Configuração do Ambiente](#-configuração-do-ambiente).
- Se encontrar problemas, consulte a [documentação oficial do JavaFX](https://openjfx.io/).#### 4. Onde posso encontrar mais screenshots da interface?
- Acesse a [Galeria de Screenshots](#-galeria-de-screenshots) no README.
- Ou visite o diretório `img/` no repositório.#### 5. Como contribuir para o projeto?
- Siga as diretrizes na seção [Contribuição](#-contribuição).
- Leia o [Código de Conduta](CODE_OF_CONDUCT.md) antes de começar.#### 6. Onde posso obter suporte?
- Entre em contato conosco via:
- **Discord**: [Link do servidor](#)
- **E-mail**: [email protected]---
## 🔮 Contribuições Futuras
### Lista de Desejos
- [ ] Suporte a cursos offline.
- [ ] Integração com Google Classroom.
- [ ] Gamificação (badges e rankings).
- [ ] Suporte a múltiplos idiomas.### Como Contribuir para Novas Funcionalidades
1. Verifique o [Roadmap](#-roadmap) para ver se a funcionalidade já está planejada.
2. Crie uma issue com a label `enhancement` para discutir a ideia.
3. Após aprovação, siga as diretrizes de contribuição.---
## 🔒 Segurança
### Política de Segurança
- **Reporte Vulnerabilidades**: Envie um e-mail para [email protected].
- **Boas Práticas**:
- Nunca compartilhe credenciais de acesso.
- Use senhas fortes e autenticação de dois fatores (2FA).
- Mantenha suas dependências atualizadas.### Auditoria de Código
- Realizamos auditorias periódicas para garantir a segurança do código.
- Utilizamos ferramentas como [PMD](https://pmd.github.io) para análise estática.---
## 📉 Diagrama Entidade Relacionamento
```mermaid
erDiagram
CourseSettings ||--o{ courses : configures
CourseSettings {
int id PK
date dateStart
string durationTotal
boolean isCertificate
boolean isDateEnd
boolean isGradeMiniun
string title
boolean visibility
}student_courses ||--o{courses : has
student_courses ||--o{ students : has
student_courses ||--o{questions : has
student_courses ||--o{lessons : has
student_courses ||--o{lesson_progress : has
courses ||--o{ modules : contains
courses {
int id PK
string categoria
string description
string name
string nivel
float rating
string title
int courseSettings_id FK
int teacher_id FK
}modules ||--o{ lessons : includes
modules {
int id PK
string description
string duration
int moduleNumber
string title
int course_id FK
int questionaire_id FK
}lessons {
int id PK
string description
string duration
string materials
int moduleNumber
int numberOfLesson
string title
string video_link
int module_id FK
}modules ||--o{ questionaire : has
questionaire {
int id PK
string description
string number
string score
string title
int module_id FK
}questionaire ||--o{ questions : contains
questions {
int id PK
string answers
string correct_answers
string evaluation_criteria
string expected_answer
string multiple_correct_answers
string number
string score
string text
string type
int questionaire_id FK
}questions ||--o{ StudentAnswer : has
users ||--o{ students : has
users {
int id PK
datetime dateRegister
string email
string name
string password
string typeUser
}students {
int id PK
string areaOfInterest
string cpf
datetime dateOfBirth
string education
string telephone
int user_id FK
}teachers {
int id PK
string areaOfInterest
string cpf
datetime dateOfBirth
string education
string telephone
int user_id FK
}courses ||--o{ students : enrolls
courses ||--o{ teachers : managed_byStudentAnswer {
int id PK
string answer
boolean isCorrect
float score
int question_id FK
int questionaire_id FK
int student_id FK
}users ||--O{ forums : create
forums ||--o{ forum_comments : has
forums {
int id PK
string author
string category
int commentsCount
datetime dateTime
string description
int likeCount
string question
string title
int viewCount
}forum_comments {
int id PK
datetime commentDate
string commentText
string userName
int forum_id FK
}lesson_progress {
int id PK
boolean completed
datetime completionDate
int lesson_id FK
int student_course_id FK
}student_courses {
int id PK
int completedLessons
int completedQuestionaires
date completionDate
float grade
int progress
date startDate
string status
int totalLessons
int totalQuestionaires
int course_id FK
int student_id FK
}
```---
## 🔍 Análise Estática com PMD
O **PMD** é uma ferramenta de análise estática de código que ajuda a identificar problemas comuns, más práticas e potenciais vulnerabilidades no código-fonte. Ele é amplamente utilizado para garantir que o código siga boas práticas de desenvolvimento e mantenha um alto padrão de qualidade.
### Por que Usamos o PMD?
- **Identificação de Code Smells**: Detecta padrões de código que podem indicar más práticas ou complexidade desnecessária, como métodos muito longos, classes excessivamente grandes ou duplicação de código.
- **Prevenção de Bugs**: Identifica problemas antes que eles se tornem bugs em produção.
- **Padronização**: Garante que o código siga boas práticas e padrões consistentes.
- **Gratuito e Open-Source**: Totalmente gratuito e com suporte da comunidade.### Como o PMD é Integrado ao CapyCourses?
O PMD é executado automaticamente em cada push ou pull request através do **GitHub Actions**. Ele verifica o código em busca de problemas e gera relatórios que são usados para corrigir e melhorar o código.#### Configuração do PMD no Projeto
O PMD está configurado no arquivo `pom.xml` do projeto, utilizando o plugin Maven:```xml
org.apache.maven.plugins
maven-pmd-plugin
3.20.0
category/java/bestpractices.xml
category/java/errorprone.xml
category/java/design.xml
false
check
```
#### Regras Utilizadas
- **Best Practices**: Verifica boas práticas de codificação.
- **Error Prone**: Detecta erros comuns que podem levar a bugs.
- **Design**: Identifica problemas de design, como classes com muitas responsabilidades.#### Como Executar o PMD Localmente
Para executar o PMD localmente e verificar o código, use o seguinte comando Maven:```bash
mvn pmd:check
```
Os relatórios serão gerados em `target/pmd.xml` e `target/pmd.html`.### Benefícios do PMD para o CapyCourses
- **Melhoria da Qualidade do Código**: Identifica e corrige problemas antes que se tornem bugs.
- **Padronização**: Garante que o código siga boas práticas e padrões consistentes.
- **Prevenção de Vulnerabilidades**: Detecta potenciais problemas de segurança.---
## 📢 Comunicação
### Canais de Comunicação
- **Discord**: [Link do servidor](#)
- Canais disponíveis:
- `#geral`: Discussões gerais.
- `#suporte`: Ajuda com problemas técnicos.
- `#sugestões`: Ideias para novas funcionalidades.
- **Fórum**: [Link do fórum](#)
- Discussões técnicas e compartilhamento de conhecimento.### Reuniões da Comunidade
- **Quando**: Toda quarta-feira às 20h (GMT-3).
- **Onde**: Canal `#reuniões` no Discord.
- **Agenda**:
- Apresentação de novas funcionalidades.
- Discussão de issues abertas.
- Planejamento de sprints.---
## 📝 Feedback
### Formulário de Feedback
- [Link do formulário](#)
- Nos ajude a melhorar! Deixe seu feedback sobre:
- Usabilidade.
- Funcionalidades.
- Problemas encontrados.### Agradecimentos
- Seu feedback é valioso para nós! Contribuidores que forneceram feedback significativo serão reconhecidos na seção [Agradecimentos](#-agradecimentos).---
## 🗺 Roadmap Detalhado
### Cronograma
| Etapa | Status | Prazo Estimado |
|------------------------|--------------|----------------|
| Interface responsiva | Concluído | Out/2023 |
| Integração com banco | Em andamento | Dez/2023 |
| Sistema de permissões | Planejado | Jan/2024 |
| API REST | Planejado | Mar/2024 |### Prioridades
1. Finalizar integração com banco de dados.
2. Implementar sistema de permissões avançado.
3. Desenvolver módulo de análise de desempenho.---
## 📜 Licenciamento
### Licenças de Dependências
| Dependência | Licença |
|-------------------|---------------|
| JavaFX | GPL v2 |
| Lombok | MIT |
| Hibernate | LGPL |
| JUnit 5 | EPL 2.0 |### Política de Uso
- O projeto é distribuído sob a licença MIT.
- Você pode usar, modificar e distribuir o código, desde que inclua a licença original.---
## 🙏 Agradecimentos
### Contribuidores
- [Stephanye Cunto](https://github.com/StephanyeCunto)
- [Julio Bossigia](https://github.com/juliobossigia)### Reconhecimentos Especiais
- Agradecemos a todos que contribuíram com feedback, código e ideias para o projeto.---
CapyCourses - Desenvolvido com 🧡 pela equipe CapyCourses
Transformando a educação, uma capivara de cada vez 🦫