- Java 17 and Spring Boot 3 for all services
- Spring Security, JPA, Validation, WebFlux and WebSocket
- Spring Cloud (Config Server and Gateway)
- JWT based authentication
- PostgreSQL with Liquibase migrations
- MapStruct for DTO mapping
- Quartz scheduler
- Kafka messaging
- Micrometer and Zipkin for tracing
- Docker and Kubernetes deployment
- JUnit 5, Mockito, Testcontainers for tests
- Uses Lombok to reduce boilerplate
authentication
– microservice for user authenticationconfig-server
– centralized configuration serviceff-tm-back
– main monolithic applicationgateway
– API gateway for routing requestsnotification
– service for sending notifications via Kafka and SSEadmin-server
– Spring Boot Admin UI servicedocker
– Dockerfiles and compose configurationdocs
– project documentation and diagramsk8s
– Kubernetes manifestsscripts
– helper deployment scripts
All running services register with the Admin UI available at
http://localhost:8095
.
- Select Spring Boot -> Application
- Expand "Modify options" -> select "Shorten command line" -> expand "Shorten command line" -> select "classpath file"
- Copy the following Java VM options at Applications VM options field
- "Active profiles" -> dev
db.url = your created postgres db url
db.username = your postgres username
db.password = your postgres password
jwt.secret = jwt secret key
-Dspring.datasource.url=db.url
-Dspring.datasource.username=db.username
-Dspring.datasource.password=db.password
-Djwt.secret=jwt.secret
Swagger is available at: http://localhost:8090/api/swagger-ui/index.html#/
build: docker build . --tag=ff-tm-back:latest -f docker/Dockerfile
run: docker run -p 8090:8090 --env-file docker/.env --name ff-tm-back ff-tm-back:latest
docker-compose: docker-compose up - d
(from /docker
folder)
flowchart TD
client[Client]
gateway[Gateway]
auth[Authentication Service]
monolith[FF-TM-Back Monolith]
notification[Notification Service]
config[Config Server]
kafka[(Kafka)]
client --> gateway
gateway --> auth
gateway --> monolith
gateway --> notification
config <--> gateway
config <--> auth
config <--> monolith
config <--> notification
monolith -- "notification events" --> kafka
kafka --> notification
monolith -- SSE --> client
New branch: {type of task}/{task number}/{short description}
For example: feature/12/added-new-entity
New commit: {task number} - {short description}
For example: 12 - added new entity
Create new .yaml file in changes
The migration name should be like this: <year>.<month>.<sequence_number>-<short_description>.yaml
Example: 2023.03.01-create-task-table.yaml. Year and month of creation are 2023 and 3 (March). Sequence number is 1, because it's the first migration in March. Short description: created new table for tasks.
If changes are made in the view, or a new view is created, a new file must be created in the folder view for this
Not currently supported