Quickstart
Building Spring Boot apps
To build the backend services:
# In the project's /backend directory
mvn clean install spring-boot:repackage
# or
mvn clean install -DskipTests=true spring-boot:repackage
info
dev is the active by default profile.
The build supports the following Maven project profiles: dev and test.
# In the project's /backend directory
mvn clean install -Pdev spring-boot:repackage
mvn clean install -Ptest spring-boot:repackage
Docker Compose
To build the project:
export DOCKER_DEFAULT_PLATFORM=linux/arm64
# export DOCKER_DEFAULT_PLATFORM=windows/amd64
docker compose build --no-cache
With a single command, you can create and start all the services:
docker compose up
The containers may take a minute or two to startup.
info
Docker Compose will look for an .env file in the current working directory.
Navigate to:
https://serendipity.localhost
To stop the services:
docker compose stop
To remove the services and the associated data, run:
docker compose down -v --remove-orphans
docker volume prune -f
# docker system df
# docker system prune --all --volumes --force
tip
The -v flag deletes all volumes, including process data, users, and other persisted state. Omit -v if you want to keep your data.
To check the environment variables inside your container:
docker inspect -f \
'{{range $index, $value := .Config.Env}}{{println $value}}{{end}}' \
serendipity-bff
To check the logs inside your container:
docker container logs postgres
docker container logs pgadmin
docker container logs serendipity-identity-service
docker container logs serendipity-party-service
docker container logs serendipity-web-bff
docker container logs nginx
docker container logs orchestration
docker container logs connectors
docker container logs optimize
docker container logs identity
docker container logs postgres
docker container logs keycloak
docker container logs elasticsearch
docker container logs web-modeler-db
docker container logs mailpit
docker container logs web-modeler-restapi
docker container logs web-modeler-websockets
docker container logs console
References
Build tools
- Apache docs: Maven
Spring Boot
- Spring Boot docs: Spring Boot Maven Plugin Reference Guide
- Spring Boot docs: Create an OCI image
- Spring Boot docs: OAuth2 Client
- Spring Boot docs: Spring Boot Actuator
System hardening
- Australian Signals Directorate: Implementing Certificates, TLS, HTTPS and Opportunistic TLS
- Cloudflare docs: Cipher suites recommendations
OAuth 2.0
- IETF: The OAuth 2.0 Authorization Framework
- IETF: OAuth 2.0 Token Exchange
- IETF: The OAuth 2.0 Authorization Framework: Bearer Token Usage
- IETF: Resource Indicators for OAuth 2.0
- IETF: JSON Web Token (JWT)
- IETF: JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens
- IETF: OAuth 2.0 Dynamic Client Registration Protocol
- IETF: OAuth 2.0 for Browser-Based Applications
- Spring docs: Implementation Guidelines for Browser-Based Applications
Additional resources
- GitHub: Checking for existing SSH keys
- GitHub: Generating a new SSH key
- GitHub: Adding a new SSH key to your GitHub account
- GitHub: Testing your SSH connection
- GitHub: Switching remote URLs from HTTPS to SSH