docs: track CLAUDE.md and update it for the Go legacy backend#5107
docs: track CLAUDE.md and update it for the Go legacy backend#5107mlehotskylf wants to merge 1 commit into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
💤 Files with no reviewable changes (1)
WalkthroughAdds a repository guide covering architecture, workflows, development environments, contribution conventions, and CI references. Removes the ChangesRepository guidance
Estimated code review effort: 1 (Trivial) | ~5 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Pull request overview
Tracks shared repository guidance and updates it for the Go legacy backend.
Changes:
- Adds current backend architecture and development instructions.
- Stops ignoring
CLAUDE.md. - Documents CI, deployment, and licensing conventions.
Reviewed changes
Copilot reviewed 1 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
CLAUDE.md |
Adds versioned repository guidance. |
.gitignore |
Allows CLAUDE.md to be tracked. |
| ## Repository Layout | ||
|
|
||
| - `cla-backend-go/` — **primary backend**, Go. Powers `/v3` (EasyCLA v1, us-east-1) and `/v4` (EasyCLA v2, us-east-2, integrates with LFX Platform + Salesforce). Deployed as AWS Lambdas. | ||
| - `cla-backend/` — Serverless Framework **deployment stack** (us-east-1). No application code of its own (the Python backend has been removed): it deploys Go binaries built elsewhere — the `/v3` API and worker lambdas (dynamo-events, metrics, zipbuilder, gitlab-repository-check, user-subscribe) from `cla-backend-go/`, the `/v1`/`/v2` `legacy-api-lambda` from `cla-backend-legacy/`, and the API Gateway authorizer from `cla-backend/auth/`. |
|
|
||
| ### Module architecture pattern | ||
|
|
||
| Feature modules (e.g. `signatures/`, `approval_list/`, `company/`, `project/`, and everything under `v2/`) follow a consistent three-layer split: |
|
|
||
| ## Conventions | ||
|
|
||
| - **License headers are enforced in CI.** New code files need `// SPDX-License-Identifier: MIT`; docs need `SPDX-License-Identifier: CC-BY-4.0`. `make lint` runs `check-headers.sh`. |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
CLAUDE.md (1)
95-97: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winMake the Speckit plan reference actionable.
“Read the current plan” does not identify a file, command, or link. Document where contributors should find it, or confirm that external tooling resolves this marker before publication.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@CLAUDE.md` around lines 95 - 97, Update the Speckit guidance surrounding the “SPECKIT END” marker to make the plan reference actionable: identify the plan’s file or location, provide the command or link contributors should use, or explicitly confirm that external tooling resolves the marker before publication.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@CLAUDE.md`:
- Around line 95-97: Update the Speckit guidance surrounding the “SPECKIT END”
marker to make the plan reference actionable: identify the plan’s file or
location, provide the command or link contributors should use, or explicitly
confirm that external tooling resolves the marker before publication.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 840ba0d1-38c1-4e92-8bc4-1d8983b44a5c
📒 Files selected for processing (2)
.gitignoreCLAUDE.md
💤 Files with no reviewable changes (1)
- .gitignore
Un-ignore CLAUDE.md (was added to .gitignore in 9b338dc) so the repo guidance is shared, and correct its stale content: the Python v1/v2 backend was removed and /v1,/v2 are now served by the Go cla-backend-legacy module deployed via the cla-backend Serverless stack. Update the repository layout, replace the Python backend section with legacy Go build/run instructions, and fix the CI notes. Note for reviewers: anyone keeping a private local CLAUDE.md must move it aside before pulling this change. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
070e2ba to
93c243b
Compare
| ## Repository Layout | ||
|
|
||
| - `cla-backend-go/` — **primary backend**, Go. Powers `/v3` (EasyCLA v1, us-east-1) and `/v4` (EasyCLA v2, us-east-2, integrates with LFX Platform + Salesforce). Deployed as AWS Lambdas. | ||
| - `cla-backend/` — Serverless Framework **deployment stack** (us-east-1). No application code of its own (the Python backend has been removed): it deploys Go binaries built elsewhere — the `/v3` API and worker lambdas (dynamo-events, metrics, zipbuilder, gitlab-repository-check, user-subscribe) from `cla-backend-go/`, the `/v1`/`/v2` `legacy-api-lambda` from `cla-backend-legacy/`, and the API Gateway authorizer from `cla-backend/auth/`. |
| Feature modules (e.g. `signatures/`, `approval_list/`, `company/`, `project/`, and everything under `v2/`) follow a consistent three-layer split: | ||
|
|
||
| - `handlers.go` — a `Configure(api, service, ...)` function that wires generated swagger operations to service calls. Handlers do request/response translation only. | ||
| - `service.go` — business logic, defined behind an interface; the unit-testable layer. | ||
| - `repository.go` — DynamoDB access. `dbmodels.go` holds table row structs; `converters.go` maps between DB models, generated API models, and internal models. | ||
| - `mocks/` — generated mocks (regenerate with `make mock`, don't edit by hand). |
|
|
||
| Health check: `http://localhost:5000/v2/health` (response includes `X-EasyCLA-Backend: cla-backend-legacy`). Port 5000 matches the Cypress functional-test helpers (`tests/functional/utils/run-single-test-local.sh` with `V=1`/`V=2`). | ||
|
|
||
| Deployment: the built binary is copied into `cla-backend/bin/` and deployed from the `cla-backend` Serverless stack (`yarn deploy:<stage>` from `cla-backend/`). |
Summary
CLAUDE.md(it was added to.gitignorein 9b338dc) so the Claude Code repo guidance is shared and versioned./v1//v2backend has been removed (5d87c67); those endpoints are now served by the Gocla-backend-legacymodule, built asbin/legacy-api-lambdaand deployed via thecla-backendServerless stack on the originalapi.*domains.cla-backend/as the deployment stack (Go binaries only: v3 API, dynamo-events, metrics, zipbuilder, gitlab-repository-check, user-subscribe, legacy API, authorizer) andcla-backend-legacy/as the Go legacy API module with its parity tooling.yarn serve:dev) with legacy-Go build/run instructions (make lambdas,STAGE=dev ADDR=":5000" make run-local, Cypress helpers on :5000).Note for reviewers
Tracking
CLAUDE.mdreverses the earlier decision to gitignore it. Anyone keeping a private localCLAUDE.mdwill need to move it aside before pulling this change (git will refuse to overwrite the untracked file). If the original intent was per-developer private guidance, please say so and this PR can be closed in favor of keeping it local-only.🤖 Generated with Claude Code