| Tool | Version | Install |
|------|---------|---------|
| Java | 17 | brew install temurin@17 |
| Maven | via wrapper | — (use ./mvnw) |
| Node.js | 20 LTS | brew install node@20 |
| Docker Desktop | latest | https://www.docker.com/products/docker-desktop/ |
| PostgreSQL client | any | brew install postgresql |
Node 25 (odd) works but is not LTS — use Node 20 for production parity.
cd /Users/sarkout/projects/prive/europeLogin
# Postgres + Redis only (no app containers)
docker-compose -f docker-compose.local.yml up -d
# Verify
docker ps # europe-login-db, europe-login-redis should be healthy
Default local credentials (see docker-compose.local.yml):
europelogin / europelogin123 on port 5434, database europelogindbredis123 on port 6380cd backend
# Run (Flyway migrations run automatically)
./mvnw spring-boot:run
# Or build + run jar
./mvnw clean package -DskipTests
java -jar target/europe-login-backend-*.jar
Swagger UI: http://localhost:8091/swagger-ui.html Health check: http://localhost:8091/actuator/health
application.yml)| Variable | Default | Purpose |
|----------|---------|---------|
| DB_HOST | localhost | Postgres host |
| DB_PORT | 5434 | Postgres port |
| DB_PASSWORD | europelogin123 | Postgres password |
| REDIS_HOST | localhost | Redis host |
| REDIS_PORT | 6380 | Redis port |
| REDIS_PASSWORD | redis123 | Redis password |
| JWT_SECRET | (insecure default) | JWT signing key — change in prod |
| BSN_ENCRYPTION_KEY | (insecure default) | AES-256 key — must be 32 chars |
| KVK_VALIDATION_ENABLED | true | Set false for dev/test |
| PSD2_ENABLED | true | Set false to skip bank step |
| PSD2_SECRET_ID | — | GoCardless secret ID |
| PSD2_SECRET_KEY | — | GoCardless secret key |
cd frontend/europe-login-portal
npm install
npm start # → http://localhost:4301
The Angular dev server proxies /api/* to http://localhost:8091 via proxy.conf.json.
cd backend
# All tests (unit + Cucumber BDD)
./mvnw test
# Skip tests (build only)
./mvnw clean package -DskipTests
Tests use H2 in-memory database (no Postgres needed) and a mock Redis (TestRedisConfig).
KvK validation is disabled via europe-login.kvk.validation-enabled: false in application-test.yml.
cd frontend/europe-login-portal
# Unit tests (Karma/Jasmine, headless Chrome)
npm run test:ci
# Lint
npm run lint
# Build
npm run build
Requires both backend and frontend running:
# Terminal 1: backend
cd backend && ./mvnw spring-boot:run
# Terminal 2: frontend
cd frontend/europe-login-portal && npm start
# Terminal 3: E2E
cd frontend/europe-login-portal && npm run e2e
# Connect via psql
psql -h localhost -p 5434 -U europelogin -d europelogindb
# Or via docker exec
docker exec -it europe-login-db psql -U europelogin europelogindb
docker exec -it europe-login-redis redis-cli -a redis123
| Problem | Fix |
|---------|-----|
| Error: could not find '@angular/build:application' | npm install in frontend/europe-login-portal |
| Backend fails to start: Unable to acquire JDBC Connection | Check docker-compose up is running |
| JWT Illegal base64 character '-' | The JWT secret must be base64-encoded (no raw strings with hyphens) |
| KvK validation fails | Set KVK_VALIDATION_ENABLED=false or provide a real KVK_API_KEY |
| Tests fail with Redis errors | Tests use mock Redis — ensure @Import(TestRedisConfig.class) is on CucumberSpringConfiguration |
Reacties