Installation
Coffer is deployed as three Docker containers: a PostgreSQL database, a Spring Boot backend, and an Nginx-served Angular frontend.
Prerequisites
Section titled “Prerequisites”- Docker and Docker Compose installed
- Git
- At least 1 GB of available RAM (512 MB allocated to the JVM by default)
Quick start
Section titled “Quick start”1. Clone the repositories
Section titled “1. Clone the repositories”You need all three repositories in the same parent directory:
mkdir coffer && cd coffergit clone https://github.com/verbindolai/coffer2.gitgit clone https://github.com/verbindolai/coffer2-ui.gitgit clone https://github.com/verbindolai/coffer-deploy.git2. Configure environment
Section titled “2. Configure environment”cd coffer-deploycp .env.example .envEdit .env and set at minimum:
# Required — pick a strong passwordDB_PASSWORD=your_secure_database_password
# Recommended — enables Numista catalog integrationNUMISTA_API_KEY=your_numista_api_keySee Configuration for all available options.
3. Build and start
Section titled “3. Build and start”docker compose up -d --buildThis builds both the backend and frontend from source, starts PostgreSQL, runs Liquibase migrations automatically, and starts the application.
4. Access Coffer
Section titled “4. Access Coffer”Open http://localhost (or whatever port you configured via FRONTEND_PORT).
The API documentation is available at http://localhost:8080/swagger-ui.html through the backend container.
Updating
Section titled “Updating”Pull the latest changes and rebuild:
cd coffer-deploygit -C ../coffer2 pullgit -C ../coffer2-ui pulldocker compose up -d --buildDatabase migrations are applied automatically on startup via Liquibase.
Stopping
Section titled “Stopping”docker compose downYour data is preserved in Docker volumes (coffer-db-data and coffer-images). To remove all data:
docker compose down -vArchitecture overview
Section titled “Architecture overview”┌──────────────┐ ┌──────────────────┐ ┌─────────────┐│ Frontend │────▶│ Backend │────▶│ PostgreSQL ││ (Nginx:80) │ │ (Spring:8080) │ │ (:5432) │└──────────────┘ └──────────────────┘ └─────────────┘ │ ┌──────┴──────┐ │ External │ │ APIs │ ├─────────────┤ │ Numista │ │ Swissquote │ └─────────────┘The frontend Nginx server handles static file serving and proxies /api requests to the backend. All three services communicate over an internal Docker network (coffer-network).