Demo project for skills demonstration
About project: TV shows list type of website with complex backend (microservices architecture)
RUN GUIDE:
Auto:
./mvnw clean install
in root foldercd docker
and start postgres, configured keycloak and services:sudo docker-compose -f compose.yml up -d
Manual:
cd docker
- Start postgres and configured keycloak:
sudo docker-compose -f compose_old.yml up -d
mvn clean install
in root folder andcd services/*-service/target
andjava -jar *.jar
or use IDE to start services-
- Start migration service with environment variable: POSTGRES_SCHEMA=shows;
- Start data service
- Start frontend service;
You're up, frontend address by default is: localhost:8081/
Backend swagger is available at localhost:8080/swagger-ui/index.html
Actuator is available at localhost:8080/actuator/
Default pre configured users: admin admin
; user user
SCREENSHOTS:
Main page (admin) |
Edit page (admin) |
Show info page |
Users page |
Users add show page |
Users added shows page |
Logic error page |
Swagger |
Technology stack:
- Framework: Spring boot 2
- Build: Maven
- ORM: Hibernate
- DB: postgres
- Containers: Docker, Docker-compose
- SSO: Keycloak
- Mapping: Mapstruct
- Errors: zalando/problem
- Http client: feign
- Swagger: springdoc-openapi
- Front: thymeleaf, bootstrap (pain in the ass, should've used separate front)
- Migrations: liquibase
- Utils: Logback, Actuator
- And probabbly something else I forgot
Structure:
- services
Contains backend services- Migration service
Service for database migrations with Liquibase - Shows data service
Service with API to access data about TV-Shows - Frontend service
Frontend service, using thymeleaf
- Migration service
- common
Contains common shared configurations, sources and e.t.c.- data
- enums
- ...
- docker
Contains docker-compose run files for easy running