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 -4
View File
@@ -71,9 +71,9 @@ export const CHECKLIST_CATEGORIES: { key: string; label: string }[] = [
// so the workspace is always usable rather than a shell of placeholders.
export type WorkspaceSectionKey =
| "overview" | "job-details" | "analysis" | "match" | "checklist" | "cv" | "cover-letter"
| "portfolio" | "documents" | "interview" | "timeline" | "notes" | "communication";
| "documents" | "interview" | "timeline" | "communication";
export const WORKSPACE_SECTIONS: { key: WorkspaceSectionKey; label: string; milestone?: number }[] = [
export const WORKSPACE_SECTIONS: { key: WorkspaceSectionKey; label: string }[] = [
{ key: "overview", label: "Overview" },
{ key: "job-details", label: "Job Details" },
{ key: "analysis", label: "Analysis" },
@@ -81,14 +81,15 @@ export const WORKSPACE_SECTIONS: { key: WorkspaceSectionKey; label: string; mile
{ key: "checklist", label: "Checklist" },
{ key: "cv", label: "CV" },
{ key: "cover-letter", label: "Cover Letter" },
{ key: "portfolio", label: "Portfolio", milestone: 8 },
{ key: "documents", label: "Documents" },
{ key: "interview", label: "Interview Prep" },
{ key: "timeline", label: "Timeline" },
{ key: "notes", label: "Notes", milestone: 3 },
{ key: "communication", label: "Communication" },
];
export const workspaceSection = (value: string | null): WorkspaceSectionKey =>
WORKSPACE_SECTIONS.some((section) => section.key === value) ? value as WorkspaceSectionKey : "overview";
export const applicationWorkspaceApi = {
overview: (jobId: number) =>
api.get<WorkspaceOverview>(`/jobapplications/${jobId}/workspace`).then((r) => r.data),