feat: complete release readiness work

- consolidate API ownership and remove dead vendor code

- add Stripe billing, learning paths, and public CV hardening

- add migration, recovery, security, audit, and browser gates
This commit is contained in:
cesnimda
2026-07-31 16:54:16 +02:00
parent a23c3dfc97
commit ce76046a29
1634 changed files with 6889 additions and 135429 deletions
+5 -1
View File
@@ -1,3 +1,7 @@
# ai
TODO: Complete documentation.
`POST /api/cv/ai/assist` supports focused rewrite actions such as shorten, grammar, bullets, summary,
ATS phrasing, and tailoring. Requests always instruct the provider to preserve facts. The response is a
suggestion: the user must apply it to a variant field explicitly.
Usage is counted by the shared AI metering and monthly plan limits.
+6 -1
View File
@@ -1,3 +1,8 @@
# content
TODO: Complete documentation.
The Content tab reads the master profile through `GET /api/cv/outline`. Section order, visibility,
renamed headings, item order, and per-item bullet overrides are saved in `CvVariantSettings`; profile
records remain unchanged. Custom sections belong only to the variant.
Reordering supports native drag-and-drop plus arrow-button keyboard controls. Rich-text input stores a
small plain-text markup whitelist that the server renders safely.
+6 -1
View File
@@ -1,3 +1,8 @@
# customisation
TODO: Complete documentation.
The Customize tab selects a catalog theme and changes the supported theme tokens: accent, fonts,
density, page size, photo treatment, icons, and page-number preference. `CvThemeCatalog` defines the
available first-party themes and plan entitlement. Existing Premium-theme documents remain readable
and exportable after downgrade.
See `docs/architecture/cv-theme-engine.md` for the data model.
+6 -1
View File
@@ -1,3 +1,8 @@
# exports
TODO: Complete documentation.
Authenticated variant export uses `POST /api/cv/variants/{id}/export-pdf`. The server resolves the
variant against the current Career Profile, renders HTML through `ThemedCvRenderer`, and invokes
headless Chromium through `PlaywrightCvPdfExporter`.
Public variants expose the same render through `GET /api/public-cv/{slug}/pdf`; visibility is checked
before rendering and anonymous generation is limited to three requests per public link per minute.
+6 -1
View File
@@ -1,3 +1,8 @@
# overview
TODO: Complete documentation.
The CV Builder turns the Career Profile into named, themed CV variants. A variant stores presentation
settings and stable item references; it never copies or overwrites the master profile. Users edit
content overrides, customize a data-driven theme, preview continuously, retain version history, export
PDF, and optionally publish an unguessable read-only link.
The authoritative design is `docs/architecture/cv-builder.md`.
+5 -1
View File
@@ -1,3 +1,7 @@
# rendering
TODO: Complete documentation.
Rendering is a projection pipeline: Career Profile plus `CvVariantSettings` becomes `CvRenderModel`,
then `ThemedCvRenderer` applies a declarative `CvTheme` to produce HTML. Preview, authenticated PDF,
and public sharing all use this path, preventing format-specific content drift.
See `docs/architecture/cv-rendering.md` and `docs/architecture/cv-theme-engine.md`.
+5 -1
View File
@@ -1,3 +1,7 @@
# themes
TODO: Complete documentation.
Themes are immutable catalog data rather than separate renderer implementations. Each theme declares
layout, colors, typography, spacing, header/photo treatment, ATS suitability, and whether Premium is
required. User overrides are stored on the variant and normalized before rendering.
Add a theme to `CvThemeCatalog`; do not add a new HTML renderer.
+7 -1
View File
@@ -1,3 +1,9 @@
# workflow
TODO: Complete documentation.
1. Maintain factual career data in `/career`.
2. Create or open a named CV variant in `/career/builder`.
3. Select visible content and apply variant-only overrides.
4. Choose a theme and customization tokens while previewing live.
5. Export PDF or explicitly enable a public link.
Autosave appends variant history. AI tools return suggestions only and never save without user action.