# Paisy — Technology Stack ## Languages & Runtimes | Technology | Version | Usage | |-----------|---------|-------| | Java | 17 (compiler release) | All backend modules | | JavaScript/Node.js | Node 24 (Chainguard) | Answering-machine React frontend | | Groovy | (Jenkins) | Jenkinsfile pipeline scripting | | JavaScript | ES6+ | `gen_trigger.js` — Quidam ISAM trigger generation | | SQL | H2 + Oracle dialects | Database migrations and queries | ## Build System | Tool | Details | |------|---------| | Maven | Multi-module POM, `${revision}` for version injection | | Maven Wrapper | Not used — relies on CI image Maven | | npm | Frontend build for `am-frontend/` | ### Key Maven Commands ```bash # Full build mvn clean install -f java/pom.xml --batch-mode -U -Drevision= # Single module with dependencies mvn clean install -pl modules/cs-modules/ -am -DskipTests # Deploy to Artifactory mvn deploy -f java/pom.xml -DskipTests --batch-mode -U -Drevision= ``` ## Frameworks & Libraries ### Core | Library | Version | Purpose | |---------|---------|---------| | Spring Boot | 3.5.11 | Application framework | | Spring Shell | 3.3.3 | CLI command dispatch | | Lombok | (managed) | Boilerplate reduction (`@Data`, `@Builder`, `@Slf4j`) | | H2 Database | 2.4.240 | Dev/on-prem embedded database | | Flyway | (Spring Boot managed) | Database migrations | | JPA/Hibernate | (Spring Boot managed) | ORM layer | ### Data Processing | Library | Purpose | |---------|---------| | JAXB | XML marshalling/unmarshalling for GKV data exchange | | Apache Commons CSV | Semicolon-delimited CSV (ISO-8859-1) | | Custom `flatfile-parser` | German flat-file format with `@Datenbaustein`/`@DBField` annotations | ### Infrastructure | Technology | Purpose | |-----------|---------| | NATS JetStream | Message broker (subject: `{bbnr}.{ak}.{app}.{stage}[.{type}]`) | | Docker | Container builds for AM, Meldezentrale, NATS | | Kubernetes (EKS) | Cloud deployment target | | Helm | Kubernetes deployment charts (`ferris-wheel/web-service`) | ## CI/CD | Component | Details | |-----------|---------| | Jenkins | Pipeline-as-code via `Jenkinsfile` | | Jenkins Library | `@Library('adp-jenkins')` — shared pipeline library | | Docker Images | `maven:3.9-jdk-17` (main), `maven:3.8.3-jdk-11` (kernpruefung-rest) | | Artifactory | `repository.esi.adp.com/RD-GERMANY/` — Maven + Docker registry | | SonarQube | Code quality scanning (non-release branches) | | Secrets Scan | `secretsScan()` in pipeline | ### Pipeline Stages 1. **Wartungswechsel** — version rotation across past/current/future branches 2. **Build** — Maven compile + test for `java/pom.xml` 3. **Sonar + Secrets** — quality gate + secrets detection 4. **Docker Build** — AM, Meldezentrale, NATS (parallel) 5. **Cherry-pick** — auto-propagate merges upward (past→current→future) 6. **Deploy** — Artifactory publish + Kubernetes deploy 7. **Tag Release** — Git tag on release branches 8. **Version Update** — auto-bump patch version 9. **EusanGen** — standalone sanctions list update (manual or `eusan/*` branch trigger) ## Database | Mode | Engine | Usage | |------|--------|-------| | Development | H2 (file-based) | Local dev, testing, legacy on-prem | | Production | Oracle | Multi-tenant, shared schema per BBNR | ### Migration Naming Convention ``` V{yyyy_MM_dd_HH_mm_ss}__C_{app_revision}_{entity_name}.sql ``` Separate directories: `db/migration/ORACLE/` and `db/migration/H2/` ## Encoding - Source files: **UTF-8** - CSV files: **ISO-8859-1** (German government standard) - Flat files: **ISO-8859-1** (DSRV/ITSG format) ## Docker Registry | Image | Registry Path | |-------|--------------| | Answering Machine | `docker.repository.esi.adp.com/paisy/answering-machine` | | Meldezentrale | `docker.repository.esi.adp.com/paisy/meldezentrale` | | NATS | `docker.repository.esi.adp.com/paisy/nats` | | Kernprüfung REST | `docker.repository.esi.adp.com/paisy/kernpruefung-rest-service` | ## Kubernetes Clusters | Cluster | Namespace | Purpose | |---------|-----------|---------| | `eks-awsadpworldiat-pr` | `paisyservices-dit` | DIT environment (AM, MZ, NATS) | | `eks-awsdev6` | `pa-kernpruefung-rest-service-dev` | Dev (Kernprüfung REST) |