Skip to content

v1.0.0 - #18

Merged
code-kasha merged 2 commits into
mainfrom
claude/clever-tesla-9x9ams
Sep 26, 2026
Merged

code-kasha merged 2 commits into
mainfrom
claude/clever-tesla-9x9ams

Conversation

@code-kasha

Copy link
Copy Markdown
Owner

The final release. Once squash-merged, this PR becomes the v1.0.0 commit on main. Tagging that commit v1.0.0 publishes the container image and the GitHub Release.

Backend fixes (found while writing the API reference)

  • Creating and editing a lead now goes through the service layer and records Created and Updated activities. Previously neither was logged. An edit lists the fields it changed, and an edit that changes nothing records nothing.
  • Note edit and delete now use their service functions. A PATCH without content no longer raises a KeyError.
  • The public lead form is rate-limited per client (PUBLIC_LEADS_RATE, default 20/hour).
  • Schema cleanup:
    • The notes and activities lists are documented as plain arrays, matching what they return.
    • No phantom path parameters.
    • Separate operation IDs for PUT and PATCH on notes.
    • CI now runs spectacular --validate --fail-on-warn.
  • Swagger UI and ReDoc are served from the pinned drf-spectacular-sidecar, not cdn.jsdelivr.net/...@latest.
  • 19 new lead API tests: visibility, writes and their activities, filters, search, ordering, pagination, and the public form and its throttle. 99 backend tests in total.

Docs and project files

  • README in the finished-project format:
    • Badges, then the live demo line.
    • Backend architecture: layers, enforced rules, API-first, production settings, tests.
    • Frontend highlights, quick start (Compose, published image, Python + Node), deployment, a developer guide, and where this could go as a CRM.
  • docs/api.md: a full API reference with a roles table, the status pipeline, the activity types, errors and curl examples.
  • LICENSE (MIT), CONTRIBUTING.md, CHANGELOG.md (1.0.0), and PR and issue templates, on the same terms as bharat-post-dir.
  • docs/DEPLOY.md: adds running the published image, CI and releases, and PUBLIC_LEADS_RATE.
  • New screenshots from seeded demo data.

Release pipeline

  • A v* tag runs all checks, then:
    • Publish image checks the tag against frontend/package.json (now lead-platform@1.0.0) and pushes ghcr.io/code-kasha/lead-platform:v1.0.0 and :latest for amd64 and arm64, with OCI labels and annotations.
    • GitHub Release takes its notes from CHANGELOG and attaches schema.yml and SHA256SUMS.
  • The Dockerfile's frontend stage builds on the runner's own platform, so arm64 doesn't run Node under QEMU.
  • The Docker smoke test also checks that Swagger UI's static files are served.

Verified locally

flake8, the migrations check, the schema check (validate, fail-on-warn, no diff), 99 pytest tests, the generated-types diff, ESLint, 74 Vitest tests, and the production build all pass.

🤖 Generated with Claude Code

https://claude.ai/code/session_018oMHDqDASywmwc7ncmxtCY


Generated by Claude Code

…m, clean the schema

- create_lead/update_lead services: creating a lead records a CREATED
  activity (public submissions included) and editing one records an
  UPDATED activity naming the changed fields; lead views and the public
  form go through them, as the service-layer rule requires
- note edits and deletes go through update_lead_note/delete_lead_note,
  which existed but were never called
- POST /api/leads/public/ is throttled per client (PUBLIC_LEADS_RATE,
  default 20/hour)
- schema: lead endpoints declared a phantom `pk` path parameter and note
  endpoints `pk`/`note_pk`; notes and activities lists claimed paginated
  responses but return arrays; PUT on a note had no summary and shared an
  operationId. All fixed; CI now runs spectacular with --fail-on-warn
- 19 new tests for the lead API: visibility by role, create/edit/delete
  permissions, activities, filters, search, ordering, pagination, the
  public form and its rate limit (backend total 99)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018oMHDqDASywmwc7ncmxtCY
- README in the finished-project format: badges, live demo line, backend
  architecture, frontend highlights, quick start, where it could go
- docs/api.md: every endpoint, roles table, status pipeline, timeline,
  errors, with curl examples
- MIT LICENSE, CONTRIBUTING, CHANGELOG (1.0.0), PR and issue templates
- CI: a v* tag publishes a multi-arch image to GHCR and a GitHub Release
  with notes from CHANGELOG; the frontend stage builds natively
- Swagger UI and ReDoc served from the pinned sidecar instead of a CDN
- Fresh screenshots from seeded demo data; version 1.0.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018oMHDqDASywmwc7ncmxtCY
@code-kasha
code-kasha merged commit 7be53f0 into main Sep 26, 2026
6 checks passed
@code-kasha
code-kasha deleted the claude/clever-tesla-9x9ams branch September 26, 2026 17:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants