From db17f02fcc0afc5aca1786a49fb5028893c333b8 Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Wed, 11 Mar 2026 10:06:17 +0100 Subject: [PATCH] Scaffold cameleer3-server project structure Multi-module Maven project (server-core + server-app) with Spring Boot 3.4.3, Gitea CI workflow, and dependency on cameleer3-common from Gitea Maven registry. Co-Authored-By: Claude Opus 4.6 --- .gitattributes | 1 + .gitea/workflows/ci.yml | 42 +++++++++++ .gitignore | 41 ++++++++++ CLAUDE.md | 42 +++++++++++ cameleer3-server-app/pom.xml | 45 +++++++++++ .../java/com/cameleer3/server/app/.gitkeep | 0 .../src/main/resources/application.yml | 2 + .../java/com/cameleer3/server/app/.gitkeep | 0 cameleer3-server-core/pom.xml | 32 ++++++++ .../java/com/cameleer3/server/core/.gitkeep | 0 .../java/com/cameleer3/server/core/.gitkeep | 0 pom.xml | 74 +++++++++++++++++++ 12 files changed, 279 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitea/workflows/ci.yml create mode 100644 .gitignore create mode 100644 CLAUDE.md create mode 100644 cameleer3-server-app/pom.xml create mode 100644 cameleer3-server-app/src/main/java/com/cameleer3/server/app/.gitkeep create mode 100644 cameleer3-server-app/src/main/resources/application.yml create mode 100644 cameleer3-server-app/src/test/java/com/cameleer3/server/app/.gitkeep create mode 100644 cameleer3-server-core/pom.xml create mode 100644 cameleer3-server-core/src/main/java/com/cameleer3/server/core/.gitkeep create mode 100644 cameleer3-server-core/src/test/java/com/cameleer3/server/core/.gitkeep create mode 100644 pom.xml diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..6313b56c --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 00000000..5f4a5b23 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,42 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + build: + runs-on: ubuntu-latest + container: + image: maven:3.9-eclipse-temurin-17 + steps: + - uses: actions/checkout@v4 + + - name: Configure Gitea Maven Registry + run: | + mkdir -p ~/.m2 + cat > ~/.m2/settings.xml << 'SETTINGS' + + + + gitea + claude + ${env.REGISTRY_TOKEN} + + + + SETTINGS + env: + REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }} + + - name: Cache Maven dependencies + uses: actions/cache@v4 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-maven- + + - name: Build and Test + run: mvn clean verify --batch-mode diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..be46f512 --- /dev/null +++ b/.gitignore @@ -0,0 +1,41 @@ +# Maven +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar + +# IDE +.idea/ +*.iml +.project +.classpath +.settings/ +.factorypath +*.swp +*.swo +*~ +.vscode/ + +# OS +.DS_Store +Thumbs.db + +# Build artifacts +*.jar +!.mvn/wrapper/*.jar +*.war +*.ear +*.class + +# Logs +*.log +logs/ + +# Claude +.claude/ diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..48345a6c --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,42 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project + +Cameleer3 Server — observability server that receives, stores, and serves Camel route execution data and route diagrams from Cameleer3 agents. Pushes config and commands to agents via SSE. + +## Related Project + +- **cameleer3** (`https://gitea.siegeln.net/claude/cameleer3`) — the Java agent that instruments Camel applications +- Protocol defined in `cameleer3-common/PROTOCOL.md` in the agent repo +- This server depends on `com.cameleer3:cameleer3-common` (shared models and graph API) + +## Modules + +- `cameleer3-server-core` — domain logic, storage, agent registry +- `cameleer3-server-app` — Spring Boot web app, REST controllers, SSE, static resources + +## Build Commands + +```bash +mvn clean compile # Compile all modules +mvn clean verify # Full build with tests +``` + +## Run + +```bash +java -jar cameleer3-server-app/target/cameleer3-server-app-1.0-SNAPSHOT.jar +``` + +## Key Conventions + +- Java 17+ required +- Spring Boot 3.4.3 parent POM +- Depends on `com.cameleer3:cameleer3-common` from Gitea Maven registry +- Jackson `JavaTimeModule` for `Instant` deserialization +- Communication: receives HTTP POST data from agents, serves SSE event streams for config push/commands +- Maintains agent instance registry with states: LIVE → STALE → DEAD +- Storage: ClickHouse for structured data, text index for full-text search +- Security: JWT auth, Ed25519 config signing, bootstrap token for registration diff --git a/cameleer3-server-app/pom.xml b/cameleer3-server-app/pom.xml new file mode 100644 index 00000000..039c4c88 --- /dev/null +++ b/cameleer3-server-app/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + + com.cameleer3 + cameleer3-server-parent + 1.0-SNAPSHOT + + + cameleer3-server-app + Cameleer3 Server App + Spring Boot web app with REST controllers and SSE + + + + com.cameleer3 + cameleer3-server-core + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/.gitkeep b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/cameleer3-server-app/src/main/resources/application.yml b/cameleer3-server-app/src/main/resources/application.yml new file mode 100644 index 00000000..11e54c54 --- /dev/null +++ b/cameleer3-server-app/src/main/resources/application.yml @@ -0,0 +1,2 @@ +server: + port: 8081 diff --git a/cameleer3-server-app/src/test/java/com/cameleer3/server/app/.gitkeep b/cameleer3-server-app/src/test/java/com/cameleer3/server/app/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/cameleer3-server-core/pom.xml b/cameleer3-server-core/pom.xml new file mode 100644 index 00000000..3441cfe1 --- /dev/null +++ b/cameleer3-server-core/pom.xml @@ -0,0 +1,32 @@ + + + 4.0.0 + + + com.cameleer3 + cameleer3-server-parent + 1.0-SNAPSHOT + + + cameleer3-server-core + Cameleer3 Server Core + Domain logic, storage, and agent registry + + + + com.cameleer3 + cameleer3-common + + + com.fasterxml.jackson.core + jackson-databind + + + org.junit.jupiter + junit-jupiter + test + + + diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/.gitkeep b/cameleer3-server-core/src/main/java/com/cameleer3/server/core/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/cameleer3-server-core/src/test/java/com/cameleer3/server/core/.gitkeep b/cameleer3-server-core/src/test/java/com/cameleer3/server/core/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..682bb589 --- /dev/null +++ b/pom.xml @@ -0,0 +1,74 @@ + + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 3.4.3 + + + + com.cameleer3 + cameleer3-server-parent + 1.0-SNAPSHOT + pom + + Cameleer3 Server Parent + Observability server for Cameleer3 agents + + + cameleer3-server-core + cameleer3-server-app + + + + UTF-8 + 17 + 2.17.3 + 1.0-SNAPSHOT + + + + + + com.cameleer3 + cameleer3-common + ${cameleer3-common.version} + + + com.cameleer3 + cameleer3-server-core + ${project.version} + + + + + + + gitea + https://gitea.siegeln.net/api/packages/claude/maven + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + +