This is a forum for students discuss topics and share their concerns with their classmates.
The folder api contain all code of API developed in Java with framework SpringBoot. The folder front-end contain the application maked with Vuejs.
.
|-- classmates-forum
|-- api
| |
| `-- ...
|
`-- front-end
|
`-- ...
-
API:
- Maven
- Java 11
-
Application front-end:
- npm
For execute the API or app using Makefile you just need run following commands in root of project:
- For build the API:
make build-api
- For build the app:
make build-app
- For run the API:
make run-api
- For run the app:
make run-app
This will install the required depedencies and run server with the API or application.
When execute the servers:
- api: localhost:8080
- app: localhost:8081
Change for the directory api and run following command to:
-
Build jar with Maven:
mvn package -DskipTests
-
Run API on server:
mvn spring-boot:run
Change for the directory front-end and run following command to:
-
Install dependencies:
npm -i -g
-
Run application with Electron:
npm run electron:serve
If you're just using the API we recommend to install Postman and import the json file in api/Classmates API Documentation.postman_collection to get access to the API's collection with all requests.
- localhost:8080/users (Return a list of users, permission: Logged Account/Admin)
- localhost:8080/topics (Return a list of topics, permission: free permission)
- localhost:8080/posts (Return a list of posts, permission: free permission)
and so on...
O projeto em Java é basicamente uma API REST, feita em SpringBoot, que possibilita criar usuários, criar tópicos, criar posts dentro de tópicos, fazer comentários em posts entre outras coisas (mais informações no documento) e está estruturado da seguinte forma:
.
|-- api
|-- doc
|-- src
|-- main
|-- java (/com/ufal/classmates_forum)
|-- resources
|-- test (/java/com/ufal/classmates_forum)
`-- pom.xml
Onde doc/ é guardado os artefatos utilizados no projeto, em src/ existe o main/java/com/ufal/classmates_forum que é onde está toda a codificação, o test/java/com/ufal/classmates_forum é onde estão localizados os testes, e o pom.xml é onde ficam as dependências.
A estrutura dentro do main/java/com/ufal/classmates_forum:
.
|-- src
|-- main (/java/com/ufal/classmates_forum)
|-- controller
|-- domain
|-- exceptions
|-- repository
`-- ClassmatesForumApplication.java
`-- LoginInterceptor.java
`-- ServicePermition.java
`-- UserLogin.java
Em que domain/ é onde ficam as entidades e repository/ onde ficam as interfaces do Jpa (para CRUD das entidades) que representam o model do sistema;
O controller/ é onde estão todos os controladores, que vaão alimentar as requisições feitas pela aplicação;
Em exceptions/ estão as exceções específicas, criadas para o sistema;
ClassmatesForumApplication.java é a classe principal, criada pelo próprio SpringBoot;
LoginInterceptor.java e ServicePermition.java são classes que fazem/auxiliam o bloqueio de rotas para alguns tipos de requisições;
UserLogin.java é a classe que armazena os usuários que estão logados no sistema.
Além dos padrões de projeto presentes no próprio framework, sentimos a necessidade implementar um Singleton em /java/com/ufal/classmates_forum/UserLogin.java que armazena os usuários que estão logados no sistema.
Modelo Conceitual:
O modelo conceitual utilizado no sistema está no arquivo /api/doc/modelo_entidade-relacionamento.dia
SGBD:
O que está sendo usado é o H2, com armazenamento feito em memória, mas existe a opção de mudar para o MySQL em /api/src/main/resources/application.properties mudando o valor do spring.profiles.active de dev para deploy. Porém, por víes de facilidade, recomendamos deixar o padrão com o H2, principalmente para teste de usabilidade.
Hibernate:
O projeto de banco de dados foi feito em Hibernate
Beyond github with gitflow, we create a trello board to organize team project management, together with scrum techniques in attempt to do a agile development.