Principais contribuintes do projeto (4 no total): Elson, Mateus, João e Gustavo, responsáveis por backend, frontend e banco de dados do jornal universitário TheClub.
TheClub é uma aplicação web de jornal universitário desenvolvida para organizar e divulgar notícias, eventos, editais e projetos acadêmicos da universidade.
O sistema apoia a comunicação institucional e estudantil, permitindo que diferentes perfis (admin, editor, leitor) participem do fluxo editorial de forma segura e estruturada.
- Portal público para leitura de notícias, eventos e editais
- Painel administrativo para gestão de conteúdo e usuários
- Backend em Java / Spring Boot com autenticação via JWT
- Frontend em React + Vite, consumindo uma API REST
- Banco de dados relacional (MySQL) com mapeamento via JPA, além da admnistração do PHPMyAdmin no MYSQL
- Contêineres de infraestrutura orquestrados com Docker Compose
Stack principal
- Linguagem: Java 17, JavaScript/TypeScript (frontend)
- Backend: Spring Boot, Spring Web, Spring Data JPA, Spring Security (JWT)
- Documentação da API: OpenAPI/Swagger UI
- Frontend: React, Vite, React Router, Context API / hooks
- Banco: MySQL, PHPMyAdmin
- Build: Maven
- Infra: Docker Desktop, Docker Compose
- Ferramentas: IntelliJ IDEA, Figma, Git e GitHub
TheClub/pom.xmldocker-compose.ymlsrc/TheCub/java/app/– Controllers REST (Artigos, Categorias, Eventos, Usuários etc.)dominio/entidades/– Entidades JPA (Artigo, Usuario, Categoria, Comentario...)dto/– DTOs de request/responseenums/– Enums de domínio (StatusArtigo, TipoUsuario etc.)exception/– Exceptions e GlobalExceptionHandlermodel/– Modelos auxiliares de autenticação
lib/config/– Configurações (CORS, Swagger, upload, WebConfig)repository/– Repositórios Spring Data JPAsecurity/– JwtService, filtros, CustomUserDetails, SecurityConfig...– Outras libs internas
servicos_tecnicos/– Serviços (ArtigoService, UsuarioService etc.)ui/– Telas Java
resources/application.properties
the-club-frontend/package.jsonsrc/api/– Configuração base da APIauth/– Contexto de autenticação, rotas protegidascomponents/– Header, Footer, CardNoticia etc.pages/– Páginas públicaspages/admin/– Páginas da área administrativa (Dashboard, NovaNoticia...)routes/– Definição das rotas com React Routerstyles/– CSS / estilos globais
public/
- Listagem de notícias por categoria
- Página de detalhes da notícia (conteúdo, autor, data, comentários)
- Listagem de eventos e editais
- Busca e filtragem de conteúdos
- Layout responsivo para desktop e mobile
- Login com JWT (roles: ADMIN, EDITOR, etc.)
- CRUD de:
- Artigos (com status de publicação)
- Categorias
- Eventos
- Editais
- Usuários
- Moderação de comentários
- Upload de imagens/arquivos associados às matérias
- API RESTful organizada por recursos (
/artigos,/categorias,/usuariosetc.) - Validações com Bean Validation
- Tratamento centralizado de erros com
GlobalExceptionHandler - Repositórios Spring Data JPA e queries especializadas
- Configuração de CORS para integração com o frontend
- Documentação automática com Swagger/OpenAPI (ex.:
/swagger-ui.htmlou/swagger-ui/index.html)
Pré-requisitos:
- Docker
- Docker Compose
Passos:
- Clonar o repositório git clone (https://github.com/ElsonJr01/TGF-engenharia-de-software-e-Banco-de-dados.git)
cd SEU_REPO
- Ajustar variáveis de ambiente (banco, JWT, etc.) se necessário
- Subir tudo com Docker docker-compose up --build
Acessos padrão (ajuste se usar outras portas):
- Backend: http://localhost:8080
- Swagger UI: http://localhost:8080/swagger-ui.html
- Frontend: http://localhost:5173
Pré-requisitos:
- JDK 17+
- Maven
- MySQL rodando (e banco configurado em
application.properties)
Na raiz do backend (onde está o pom.xml) mvn spring-boot:run
Pré-requisitos:
- Node.js (LTS)
- npm ou yarn
O Vite geralmente sobe em http://localhost:5173.
Algumas possíveis melhorias:
- 🔎 Filtro avançado por tags, autores e datas
- 📝 Editor rich text mais completo para criação de noticias
- 📊 Dashboard com métricas de acesso/leitura
- 🌐 Suporte a multilíngue (PT/EN)
- 📱 PWA para acesso offline em dispositivos móveis
Contribuições são muito bem-vindas!
- Faça um fork do repositório
- Crie um branch para sua feature:
git checkout -b feature/minha-feature - Commit suas mudanças:
git commit -m "feat: minha nova feature" - Faça push do branch:
git push origin feature/minha-feature - Abra um Pull Request
Licença de Uso Educacional Não Comercial
Copyright (c) 2025 Elson Sousa, Mateus Almada e João Breder
É concedida permissão, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para usar, copiar, modificar e distribuir o Software apenas para fins educacionais e acadêmicos, não sendo permitido qualquer uso comercial, sujeita às seguintes condições:
-
É estritamente proibido utilizar o Software, total ou parcialmente, para fins comerciais, incluindo, mas não se limitando a:
- venda, aluguel, licenciamento ou sublicenciamento do Software;
- inclusão do Software em produtos ou serviços pagos;
- uso do Software em ambientes cujo objetivo principal seja obtenção de lucro.
-
O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou partes substanciais do Software.
-
Modificações do Software devem deixar claro que se tratam de versões modificadas, não sendo permitido sugerir que os autores originais endossam tais modificações.
O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRA", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM FIM ESPECÍFICO E NÃO VIOLAÇÃO. EM NENHUMA HIPÓTESE OS AUTORES OU DETENTORES DOS DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUAISQUER REIVINDICAÇÕES, DANOS OU OUTRAS RESPONSABILIDADES, SEJA EM AÇÃO CONTRATUAL, EXTRACONTRATUAL OU DE OUTRA NATUREZA, DECORRENTES DE, OU RELACIONADAS COM, O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES COM O SOFTWARE.
TheClub foi desenvolvido como parte de atividades de Engenharia de Software e Banco de Dados, conectando teoria e prática em um cenário real de comunicação universitária. Ele também se integra a ações de extensão, visitas técnicas e eventos acadêmicos, aproximando estudantes, professores e comunidade por meio de tecnologia e jornalismo digital.
