Skip to content

Commit 573c06a

Browse files
committed
Add claude fille
Signed-off-by: Paolo Di Tommaso <[email protected]>
1 parent 715c594 commit 573c06a

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

CLAUDE.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# CLAUDE.md
2+
3+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4+
5+
## Project Overview
6+
7+
Wave is a containers provisioning service that allows building container images on-demand and acts as a proxy for container registries. It's built with Java/Groovy using the Micronaut framework and follows a microservices architecture.
8+
9+
## Key Commands
10+
11+
### Development
12+
- **Run development server**: `./run.sh` (runs with continuous compilation and file watching)
13+
- **Build project**: `./gradlew assemble` or `make compile`
14+
- **Run tests**: `./gradlew test` or `make check`
15+
- **Run specific test**: `./gradlew test --tests 'TestClassName'`
16+
- **Build container image**: `./gradlew jibDockerBuild` or `make image`
17+
- **Generate code coverage**: `./gradlew jacocoTestReport` (runs automatically after tests)
18+
19+
### Environment Setup
20+
Wave requires several environment variables for registry authentication:
21+
- `DOCKER_USER`/`DOCKER_PAT` for Docker Hub
22+
- `QUAY_USER`/`QUAY_PAT` for Quay.io
23+
- `AWS_ACCESS_KEY_ID`/`AWS_SECRET_ACCESS_KEY` for AWS ECR
24+
- `AZURECR_USER`/`AZURECR_PAT` for Azure Container Registry
25+
26+
## Architecture
27+
28+
### Core Services
29+
- **ContainerBuildService**: Manages container image building (Docker/Kubernetes strategies)
30+
- **ContainerMirrorService**: Handles container mirroring operations
31+
- **ContainerScanService**: Security vulnerability scanning
32+
- **RegistryProxyService**: Acts as proxy between clients and registries
33+
- **BlobCacheService**: Caches container layers and artifacts
34+
- **JobManager**: Handles async job processing and queuing
35+
36+
### Key Controllers
37+
- **ContainerController**: Main API for container provisioning (`/container-token`)
38+
- **BuildController**: Container build operations
39+
- **ScanController**: Security scanning endpoints
40+
- **RegistryProxyController**: Registry proxy functionality
41+
42+
### Storage & Persistence
43+
- Uses PostgreSQL with Micronaut Data JDBC
44+
- Redis for caching and distributed state
45+
- Object storage (AWS S3) for blob/artifact storage
46+
- Kubernetes for production container builds
47+
48+
### Configuration
49+
- Main config: `src/main/resources/application.yml`
50+
- Environment-specific configs in `src/main/resources/application-*.yml`
51+
- Uses Micronaut's configuration system with property injection
52+
53+
## Technology Stack
54+
- **Framework**: Micronaut 4.x with Netty runtime
55+
- **Language**: Groovy with Java 21+
56+
- **Build Tool**: Gradle with custom conventions
57+
- **Container**: JIB for multi-platform builds (AMD64/ARM64)
58+
- **Database**: PostgreSQL with HikariCP connection pooling
59+
- **Cache**: Redis with Jedis client
60+
- **Testing**: Spock 2 framework
61+
- **Metrics**: Micrometer with Prometheus
62+
- **Security**: JWT authentication for Tower integration
63+
64+
## Important Notes
65+
- The codebase uses custom Gradle conventions defined in `buildSrc/`
66+
- Container images are built using Amazon Corretto 25 with jemalloc
67+
- The service requires Kubernetes cluster for production builds
68+
- Rate limiting is implemented using Spillway library
69+
- All async operations use Reactor pattern with Micronaut Reactor
70+
71+
## Release Process
72+
73+
1. Update the `VERSION` file with a semantic version
74+
2. Update the `changelog.txt file with changes against previous release
75+
3. Commit VERSION and changelog.txt file adding the tag `[release]` in the commit comment first line.
76+
4. Git push to upstream master branch.

0 commit comments

Comments
 (0)