separate component

This commit is contained in:
DaKheera47 2026-02-15 18:56:41 +00:00
parent 5a5cbb40ac
commit 3b86e56c22
47 changed files with 1960 additions and 191 deletions

View File

@ -0,0 +1,5 @@
This folder stores temp files that Docusaurus' client bundler accesses.
DO NOT hand-modify files in this folder because they will be overwritten in the
next build. You can clear all build artifacts (including this folder) with the
`docusaurus clear` command.

View File

@ -0,0 +1,7 @@
export default [
require("/Users/ssarfaraz/coding/personal/job-ops/docs-site/.docusaurus/docusaurus-plugin-css-cascade-layers/default/layers.css"),
require("/Users/ssarfaraz/coding/personal/job-ops/node_modules/infima/dist/css/default/default.css"),
require("/Users/ssarfaraz/coding/personal/job-ops/node_modules/@docusaurus/theme-classic/lib/prism-include-languages"),
require("/Users/ssarfaraz/coding/personal/job-ops/node_modules/@docusaurus/theme-classic/lib/nprogress"),
require("/Users/ssarfaraz/coding/personal/job-ops/docs-site/src/css/custom.css"),
];

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{"options":{"routeBasePath":"/","sidebarPath":"/Users/ssarfaraz/coding/personal/job-ops/docs-site/sidebars.ts","editUrl":"https://github.com/DaKheera47/job-ops/tree/main/docs-site/","showLastUpdateAuthor":false,"showLastUpdateTime":true,"path":"docs","editCurrentVersion":false,"editLocalizedFiles":false,"tagsBasePath":"tags","include":["**/*.{md,mdx}"],"exclude":["**/_*.{js,jsx,ts,tsx,md,mdx}","**/_*/**","**/*.test.{js,jsx,ts,tsx}","**/__tests__/**"],"sidebarCollapsible":true,"sidebarCollapsed":true,"docsRootComponent":"@theme/DocsRoot","docVersionRootComponent":"@theme/DocVersionRoot","docRootComponent":"@theme/DocRoot","docItemComponent":"@theme/DocItem","docTagsListComponent":"@theme/DocTagsListPage","docTagDocListComponent":"@theme/DocTagDocListPage","docCategoryGeneratedIndexComponent":"@theme/DocCategoryGeneratedIndexPage","remarkPlugins":[],"rehypePlugins":[],"recmaPlugins":[],"beforeDefaultRemarkPlugins":[],"beforeDefaultRehypePlugins":[],"admonitions":true,"includeCurrentVersion":true,"disableVersioning":false,"versions":{},"breadcrumbs":true,"onInlineTags":"warn","id":"default"},"versionsMetadata":[{"versionName":"current","label":"Next","banner":"unreleased","badge":true,"noIndex":false,"className":"docs-version-current","path":"/docs/next","tagsPath":"/docs/next/tags","editUrl":"https://github.com/DaKheera47/job-ops/tree/main/docs-site/docs","isLast":false,"sidebarFilePath":"/Users/ssarfaraz/coding/personal/job-ops/docs-site/sidebars.ts","contentPath":"/Users/ssarfaraz/coding/personal/job-ops/docs-site/docs"},{"versionName":"1.0.0","label":"1.0.0","banner":null,"badge":true,"noIndex":false,"className":"docs-version-1.0.0","path":"/docs/","tagsPath":"/docs/tags","editUrl":"https://github.com/DaKheera47/job-ops/tree/main/docs-site/versioned_docs/version-1.0.0","isLast":true,"routePriority":-1,"sidebarFilePath":"/Users/ssarfaraz/coding/personal/job-ops/docs-site/versioned_sidebars/version-1.0.0-sidebars.json","contentPath":"/Users/ssarfaraz/coding/personal/job-ops/docs-site/versioned_docs/version-1.0.0"}]}

View File

@ -0,0 +1,4 @@
{
"name": "docusaurus-plugin-content-docs",
"id": "default"
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,31 @@
{
"id": "extractors/gradcracker",
"title": "Gradcracker Extractor",
"description": "How the Gradcracker crawler builds search URLs and extracts jobs.",
"source": "@site/docs/extractors/gradcracker.md",
"sourceDirName": "extractors",
"slug": "/extractors/gradcracker",
"permalink": "/docs/next/extractors/gradcracker",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/docs/extractors/gradcracker.md",
"tags": [],
"version": "current",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 2,
"frontMatter": {
"id": "gradcracker",
"title": "Gradcracker Extractor",
"description": "How the Gradcracker crawler builds search URLs and extracts jobs.",
"sidebar_position": 2
},
"sidebar": "docsSidebar",
"previous": {
"title": "Extractors Overview",
"permalink": "/docs/next/extractors/overview"
},
"next": {
"title": "JobSpy Extractor",
"permalink": "/docs/next/extractors/jobspy"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "extractors/jobspy",
"title": "JobSpy Extractor",
"description": "How the JobSpy Python wrapper is orchestrated and normalized.",
"source": "@site/docs/extractors/jobspy.md",
"sourceDirName": "extractors",
"slug": "/extractors/jobspy",
"permalink": "/docs/next/extractors/jobspy",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/docs/extractors/jobspy.md",
"tags": [],
"version": "current",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 3,
"frontMatter": {
"id": "jobspy",
"title": "JobSpy Extractor",
"description": "How the JobSpy Python wrapper is orchestrated and normalized.",
"sidebar_position": 3
},
"sidebar": "docsSidebar",
"previous": {
"title": "Gradcracker Extractor",
"permalink": "/docs/next/extractors/gradcracker"
},
"next": {
"title": "Manual Import Extractor",
"permalink": "/docs/next/extractors/manual"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "extractors/manual",
"title": "Manual Import Extractor",
"description": "Import jobs from pasted descriptions and run AI-assisted inference.",
"source": "@site/docs/extractors/manual.md",
"sourceDirName": "extractors",
"slug": "/extractors/manual",
"permalink": "/docs/next/extractors/manual",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/docs/extractors/manual.md",
"tags": [],
"version": "current",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 4,
"frontMatter": {
"id": "manual",
"title": "Manual Import Extractor",
"description": "Import jobs from pasted descriptions and run AI-assisted inference.",
"sidebar_position": 4
},
"sidebar": "docsSidebar",
"previous": {
"title": "JobSpy Extractor",
"permalink": "/docs/next/extractors/jobspy"
},
"next": {
"title": "UKVisaJobs Extractor",
"permalink": "/docs/next/extractors/ukvisajobs"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "extractors/overview",
"title": "Extractors Overview",
"description": "Technical index of supported extractors and how they work.",
"source": "@site/docs/extractors/overview.md",
"sourceDirName": "extractors",
"slug": "/extractors/overview",
"permalink": "/docs/next/extractors/overview",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/docs/extractors/overview.md",
"tags": [],
"version": "current",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 1,
"frontMatter": {
"id": "overview",
"title": "Extractors Overview",
"description": "Technical index of supported extractors and how they work.",
"sidebar_position": 1
},
"sidebar": "docsSidebar",
"previous": {
"title": "Post-Application Tracking",
"permalink": "/docs/next/features/post-application-tracking"
},
"next": {
"title": "Gradcracker Extractor",
"permalink": "/docs/next/extractors/gradcracker"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "extractors/ukvisajobs",
"title": "UKVisaJobs Extractor",
"description": "Authenticated session flow, API pagination, and orchestrator ingestion.",
"source": "@site/docs/extractors/ukvisajobs.md",
"sourceDirName": "extractors",
"slug": "/extractors/ukvisajobs",
"permalink": "/docs/next/extractors/ukvisajobs",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/docs/extractors/ukvisajobs.md",
"tags": [],
"version": "current",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 5,
"frontMatter": {
"id": "ukvisajobs",
"title": "UKVisaJobs Extractor",
"description": "Authenticated session flow, API pagination, and orchestrator ingestion.",
"sidebar_position": 5
},
"sidebar": "docsSidebar",
"previous": {
"title": "Manual Import Extractor",
"permalink": "/docs/next/extractors/manual"
},
"next": {
"title": "Self-Hosting (Docker Compose)",
"permalink": "/docs/next/getting-started/self-hosting"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "features/ghostwriter",
"title": "Ghostwriter",
"description": "Context-aware per-job AI chat assistant behavior and API surface.",
"source": "@site/docs/features/ghostwriter.md",
"sourceDirName": "features",
"slug": "/features/ghostwriter",
"permalink": "/docs/next/features/ghostwriter",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/docs/features/ghostwriter.md",
"tags": [],
"version": "current",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 2,
"frontMatter": {
"id": "ghostwriter",
"title": "Ghostwriter",
"description": "Context-aware per-job AI chat assistant behavior and API surface.",
"sidebar_position": 2
},
"sidebar": "docsSidebar",
"previous": {
"title": "Orchestrator",
"permalink": "/docs/next/features/orchestrator"
},
"next": {
"title": "Post-Application Tracking",
"permalink": "/docs/next/features/post-application-tracking"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "features/orchestrator",
"title": "Orchestrator",
"description": "Job states, ready flow, and PDF generation/regeneration behavior.",
"source": "@site/docs/features/orchestrator.md",
"sourceDirName": "features",
"slug": "/features/orchestrator",
"permalink": "/docs/next/features/orchestrator",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/docs/features/orchestrator.md",
"tags": [],
"version": "current",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 1,
"frontMatter": {
"id": "orchestrator",
"title": "Orchestrator",
"description": "Job states, ready flow, and PDF generation/regeneration behavior.",
"sidebar_position": 1
},
"sidebar": "docsSidebar",
"previous": {
"title": "Self-Hosting (Docker Compose)",
"permalink": "/docs/next/getting-started/self-hosting"
},
"next": {
"title": "Ghostwriter",
"permalink": "/docs/next/features/ghostwriter"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "features/post-application-tracking",
"title": "Post-Application Tracking",
"description": "Gmail-based tracking inbox, smart routing, and review workflow.",
"source": "@site/docs/features/post-application-tracking.md",
"sourceDirName": "features",
"slug": "/features/post-application-tracking",
"permalink": "/docs/next/features/post-application-tracking",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/docs/features/post-application-tracking.md",
"tags": [],
"version": "current",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 3,
"frontMatter": {
"id": "post-application-tracking",
"title": "Post-Application Tracking",
"description": "Gmail-based tracking inbox, smart routing, and review workflow.",
"sidebar_position": 3
},
"sidebar": "docsSidebar",
"previous": {
"title": "Ghostwriter",
"permalink": "/docs/next/features/ghostwriter"
},
"next": {
"title": "Extractors Overview",
"permalink": "/docs/next/extractors/overview"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "getting-started/self-hosting",
"title": "Self-Hosting (Docker Compose)",
"description": "Deploy JobOps with Docker Compose and configure onboarding integrations.",
"source": "@site/docs/getting-started/self-hosting.md",
"sourceDirName": "getting-started",
"slug": "/getting-started/self-hosting",
"permalink": "/docs/next/getting-started/self-hosting",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/docs/getting-started/self-hosting.md",
"tags": [],
"version": "current",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 1,
"frontMatter": {
"id": "self-hosting",
"title": "Self-Hosting (Docker Compose)",
"description": "Deploy JobOps with Docker Compose and configure onboarding integrations.",
"sidebar_position": 1
},
"sidebar": "docsSidebar",
"previous": {
"title": "JobOps Documentation",
"permalink": "/docs/next/"
},
"next": {
"title": "Orchestrator",
"permalink": "/docs/next/features/orchestrator"
}
}

View File

@ -0,0 +1,28 @@
{
"id": "intro",
"title": "JobOps Documentation",
"description": "Documentation index for setup, features, extractors, and common problems.",
"source": "@site/docs/intro.md",
"sourceDirName": ".",
"slug": "/",
"permalink": "/docs/next/",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/docs/intro.md",
"tags": [],
"version": "current",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 1,
"frontMatter": {
"id": "intro",
"title": "JobOps Documentation",
"description": "Documentation index for setup, features, extractors, and common problems.",
"sidebar_position": 1,
"slug": "/"
},
"sidebar": "docsSidebar",
"next": {
"title": "Self-Hosting (Docker Compose)",
"permalink": "/docs/next/getting-started/self-hosting"
}
}

View File

@ -0,0 +1,27 @@
{
"id": "reference/documentation-style-guide",
"title": "Documentation Style Guide",
"description": "Standards for writing user-facing docs in this repository.",
"source": "@site/docs/reference/documentation-style-guide.md",
"sourceDirName": "reference",
"slug": "/reference/documentation-style-guide",
"permalink": "/docs/next/reference/documentation-style-guide",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/docs/reference/documentation-style-guide.md",
"tags": [],
"version": "current",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 2,
"frontMatter": {
"id": "documentation-style-guide",
"title": "Documentation Style Guide",
"description": "Standards for writing user-facing docs in this repository.",
"sidebar_position": 2
},
"sidebar": "docsSidebar",
"previous": {
"title": "FAQ",
"permalink": "/docs/next/reference/faq"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "reference/faq",
"title": "FAQ",
"description": "Frequently asked questions about deployment, docs, and operations.",
"source": "@site/docs/reference/faq.md",
"sourceDirName": "reference",
"slug": "/reference/faq",
"permalink": "/docs/next/reference/faq",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/docs/reference/faq.md",
"tags": [],
"version": "current",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 1,
"frontMatter": {
"id": "faq",
"title": "FAQ",
"description": "Frequently asked questions about deployment, docs, and operations.",
"sidebar_position": 1
},
"sidebar": "docsSidebar",
"previous": {
"title": "Common Problems",
"permalink": "/docs/next/troubleshooting/common-problems"
},
"next": {
"title": "Documentation Style Guide",
"permalink": "/docs/next/reference/documentation-style-guide"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "troubleshooting/common-problems",
"title": "Common Problems",
"description": "Quick fixes for the most frequent setup and runtime issues.",
"source": "@site/docs/troubleshooting/common-problems.md",
"sourceDirName": "troubleshooting",
"slug": "/troubleshooting/common-problems",
"permalink": "/docs/next/troubleshooting/common-problems",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/docs/troubleshooting/common-problems.md",
"tags": [],
"version": "current",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 1,
"frontMatter": {
"id": "common-problems",
"title": "Common Problems",
"description": "Quick fixes for the most frequent setup and runtime issues.",
"sidebar_position": 1
},
"sidebar": "docsSidebar",
"previous": {
"title": "Self-Hosting (Docker Compose)",
"permalink": "/docs/next/getting-started/self-hosting"
},
"next": {
"title": "Common Problems",
"permalink": "/docs/next/troubleshooting/common-problems"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "extractors/gradcracker",
"title": "Gradcracker Extractor",
"description": "How the Gradcracker crawler builds search URLs and extracts jobs.",
"source": "@site/versioned_docs/version-1.0.0/extractors/gradcracker.md",
"sourceDirName": "extractors",
"slug": "/extractors/gradcracker",
"permalink": "/docs/extractors/gradcracker",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/versioned_docs/version-1.0.0/extractors/gradcracker.md",
"tags": [],
"version": "1.0.0",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 2,
"frontMatter": {
"id": "gradcracker",
"title": "Gradcracker Extractor",
"description": "How the Gradcracker crawler builds search URLs and extracts jobs.",
"sidebar_position": 2
},
"sidebar": "docsSidebar",
"previous": {
"title": "Extractors Overview",
"permalink": "/docs/extractors/overview"
},
"next": {
"title": "JobSpy Extractor",
"permalink": "/docs/extractors/jobspy"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "extractors/jobspy",
"title": "JobSpy Extractor",
"description": "How the JobSpy Python wrapper is orchestrated and normalized.",
"source": "@site/versioned_docs/version-1.0.0/extractors/jobspy.md",
"sourceDirName": "extractors",
"slug": "/extractors/jobspy",
"permalink": "/docs/extractors/jobspy",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/versioned_docs/version-1.0.0/extractors/jobspy.md",
"tags": [],
"version": "1.0.0",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 3,
"frontMatter": {
"id": "jobspy",
"title": "JobSpy Extractor",
"description": "How the JobSpy Python wrapper is orchestrated and normalized.",
"sidebar_position": 3
},
"sidebar": "docsSidebar",
"previous": {
"title": "Gradcracker Extractor",
"permalink": "/docs/extractors/gradcracker"
},
"next": {
"title": "Manual Import Extractor",
"permalink": "/docs/extractors/manual"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "extractors/manual",
"title": "Manual Import Extractor",
"description": "Import jobs from pasted descriptions and run AI-assisted inference.",
"source": "@site/versioned_docs/version-1.0.0/extractors/manual.md",
"sourceDirName": "extractors",
"slug": "/extractors/manual",
"permalink": "/docs/extractors/manual",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/versioned_docs/version-1.0.0/extractors/manual.md",
"tags": [],
"version": "1.0.0",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 4,
"frontMatter": {
"id": "manual",
"title": "Manual Import Extractor",
"description": "Import jobs from pasted descriptions and run AI-assisted inference.",
"sidebar_position": 4
},
"sidebar": "docsSidebar",
"previous": {
"title": "JobSpy Extractor",
"permalink": "/docs/extractors/jobspy"
},
"next": {
"title": "UKVisaJobs Extractor",
"permalink": "/docs/extractors/ukvisajobs"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "extractors/overview",
"title": "Extractors Overview",
"description": "Technical index of supported extractors and how they work.",
"source": "@site/versioned_docs/version-1.0.0/extractors/overview.md",
"sourceDirName": "extractors",
"slug": "/extractors/overview",
"permalink": "/docs/extractors/overview",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/versioned_docs/version-1.0.0/extractors/overview.md",
"tags": [],
"version": "1.0.0",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 1,
"frontMatter": {
"id": "overview",
"title": "Extractors Overview",
"description": "Technical index of supported extractors and how they work.",
"sidebar_position": 1
},
"sidebar": "docsSidebar",
"previous": {
"title": "Post-Application Tracking",
"permalink": "/docs/features/post-application-tracking"
},
"next": {
"title": "Gradcracker Extractor",
"permalink": "/docs/extractors/gradcracker"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "extractors/ukvisajobs",
"title": "UKVisaJobs Extractor",
"description": "Authenticated session flow, API pagination, and orchestrator ingestion.",
"source": "@site/versioned_docs/version-1.0.0/extractors/ukvisajobs.md",
"sourceDirName": "extractors",
"slug": "/extractors/ukvisajobs",
"permalink": "/docs/extractors/ukvisajobs",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/versioned_docs/version-1.0.0/extractors/ukvisajobs.md",
"tags": [],
"version": "1.0.0",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 5,
"frontMatter": {
"id": "ukvisajobs",
"title": "UKVisaJobs Extractor",
"description": "Authenticated session flow, API pagination, and orchestrator ingestion.",
"sidebar_position": 5
},
"sidebar": "docsSidebar",
"previous": {
"title": "Manual Import Extractor",
"permalink": "/docs/extractors/manual"
},
"next": {
"title": "Self-Hosting (Docker Compose)",
"permalink": "/docs/getting-started/self-hosting"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "features/ghostwriter",
"title": "Ghostwriter",
"description": "Context-aware per-job AI chat assistant behavior and API surface.",
"source": "@site/versioned_docs/version-1.0.0/features/ghostwriter.md",
"sourceDirName": "features",
"slug": "/features/ghostwriter",
"permalink": "/docs/features/ghostwriter",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/versioned_docs/version-1.0.0/features/ghostwriter.md",
"tags": [],
"version": "1.0.0",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 2,
"frontMatter": {
"id": "ghostwriter",
"title": "Ghostwriter",
"description": "Context-aware per-job AI chat assistant behavior and API surface.",
"sidebar_position": 2
},
"sidebar": "docsSidebar",
"previous": {
"title": "Orchestrator",
"permalink": "/docs/features/orchestrator"
},
"next": {
"title": "Post-Application Tracking",
"permalink": "/docs/features/post-application-tracking"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "features/orchestrator",
"title": "Orchestrator",
"description": "Job states, ready flow, and PDF generation/regeneration behavior.",
"source": "@site/versioned_docs/version-1.0.0/features/orchestrator.md",
"sourceDirName": "features",
"slug": "/features/orchestrator",
"permalink": "/docs/features/orchestrator",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/versioned_docs/version-1.0.0/features/orchestrator.md",
"tags": [],
"version": "1.0.0",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 1,
"frontMatter": {
"id": "orchestrator",
"title": "Orchestrator",
"description": "Job states, ready flow, and PDF generation/regeneration behavior.",
"sidebar_position": 1
},
"sidebar": "docsSidebar",
"previous": {
"title": "Self-Hosting (Docker Compose)",
"permalink": "/docs/getting-started/self-hosting"
},
"next": {
"title": "Ghostwriter",
"permalink": "/docs/features/ghostwriter"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "features/post-application-tracking",
"title": "Post-Application Tracking",
"description": "Gmail-based tracking inbox, smart routing, and review workflow.",
"source": "@site/versioned_docs/version-1.0.0/features/post-application-tracking.md",
"sourceDirName": "features",
"slug": "/features/post-application-tracking",
"permalink": "/docs/features/post-application-tracking",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/versioned_docs/version-1.0.0/features/post-application-tracking.md",
"tags": [],
"version": "1.0.0",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 3,
"frontMatter": {
"id": "post-application-tracking",
"title": "Post-Application Tracking",
"description": "Gmail-based tracking inbox, smart routing, and review workflow.",
"sidebar_position": 3
},
"sidebar": "docsSidebar",
"previous": {
"title": "Ghostwriter",
"permalink": "/docs/features/ghostwriter"
},
"next": {
"title": "Extractors Overview",
"permalink": "/docs/extractors/overview"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "getting-started/self-hosting",
"title": "Self-Hosting (Docker Compose)",
"description": "Deploy JobOps with Docker Compose and configure onboarding integrations.",
"source": "@site/versioned_docs/version-1.0.0/getting-started/self-hosting.md",
"sourceDirName": "getting-started",
"slug": "/getting-started/self-hosting",
"permalink": "/docs/getting-started/self-hosting",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/versioned_docs/version-1.0.0/getting-started/self-hosting.md",
"tags": [],
"version": "1.0.0",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 1,
"frontMatter": {
"id": "self-hosting",
"title": "Self-Hosting (Docker Compose)",
"description": "Deploy JobOps with Docker Compose and configure onboarding integrations.",
"sidebar_position": 1
},
"sidebar": "docsSidebar",
"previous": {
"title": "JobOps Documentation",
"permalink": "/docs/"
},
"next": {
"title": "Orchestrator",
"permalink": "/docs/features/orchestrator"
}
}

View File

@ -0,0 +1,28 @@
{
"id": "intro",
"title": "JobOps Documentation",
"description": "Documentation index for setup, features, extractors, and common problems.",
"source": "@site/versioned_docs/version-1.0.0/intro.md",
"sourceDirName": ".",
"slug": "/",
"permalink": "/docs/",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/versioned_docs/version-1.0.0/intro.md",
"tags": [],
"version": "1.0.0",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 1,
"frontMatter": {
"id": "intro",
"title": "JobOps Documentation",
"description": "Documentation index for setup, features, extractors, and common problems.",
"sidebar_position": 1,
"slug": "/"
},
"sidebar": "docsSidebar",
"next": {
"title": "Self-Hosting (Docker Compose)",
"permalink": "/docs/getting-started/self-hosting"
}
}

View File

@ -0,0 +1,27 @@
{
"id": "reference/documentation-style-guide",
"title": "Documentation Style Guide",
"description": "Standards for writing user-facing docs in this repository.",
"source": "@site/versioned_docs/version-1.0.0/reference/documentation-style-guide.md",
"sourceDirName": "reference",
"slug": "/reference/documentation-style-guide",
"permalink": "/docs/reference/documentation-style-guide",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/versioned_docs/version-1.0.0/reference/documentation-style-guide.md",
"tags": [],
"version": "1.0.0",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 2,
"frontMatter": {
"id": "documentation-style-guide",
"title": "Documentation Style Guide",
"description": "Standards for writing user-facing docs in this repository.",
"sidebar_position": 2
},
"sidebar": "docsSidebar",
"previous": {
"title": "FAQ",
"permalink": "/docs/reference/faq"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "reference/faq",
"title": "FAQ",
"description": "Frequently asked questions about deployment, docs, and operations.",
"source": "@site/versioned_docs/version-1.0.0/reference/faq.md",
"sourceDirName": "reference",
"slug": "/reference/faq",
"permalink": "/docs/reference/faq",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/versioned_docs/version-1.0.0/reference/faq.md",
"tags": [],
"version": "1.0.0",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 1,
"frontMatter": {
"id": "faq",
"title": "FAQ",
"description": "Frequently asked questions about deployment, docs, and operations.",
"sidebar_position": 1
},
"sidebar": "docsSidebar",
"previous": {
"title": "Common Problems",
"permalink": "/docs/troubleshooting/common-problems"
},
"next": {
"title": "Documentation Style Guide",
"permalink": "/docs/reference/documentation-style-guide"
}
}

View File

@ -0,0 +1,31 @@
{
"id": "troubleshooting/common-problems",
"title": "Common Problems",
"description": "Quick fixes for the most frequent setup and runtime issues.",
"source": "@site/versioned_docs/version-1.0.0/troubleshooting/common-problems.md",
"sourceDirName": "troubleshooting",
"slug": "/troubleshooting/common-problems",
"permalink": "/docs/troubleshooting/common-problems",
"draft": false,
"unlisted": false,
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/versioned_docs/version-1.0.0/troubleshooting/common-problems.md",
"tags": [],
"version": "1.0.0",
"lastUpdatedAt": 1539502055000,
"sidebarPosition": 1,
"frontMatter": {
"id": "common-problems",
"title": "Common Problems",
"description": "Quick fixes for the most frequent setup and runtime issues.",
"sidebar_position": 1
},
"sidebar": "docsSidebar",
"previous": {
"title": "Self-Hosting (Docker Compose)",
"permalink": "/docs/getting-started/self-hosting"
},
"next": {
"title": "Common Problems",
"permalink": "/docs/troubleshooting/common-problems"
}
}

View File

@ -0,0 +1,4 @@
{
"name": "docusaurus-plugin-css-cascade-layers",
"id": "default"
}

View File

@ -0,0 +1 @@
@layer docusaurus.infima, docusaurus.theme-common, docusaurus.theme-classic, docusaurus.core, docusaurus.plugin-debug, docusaurus.theme-mermaid, docusaurus.theme-live-codeblock, docusaurus.theme-search-algolia.docsearch, docusaurus.theme-search-algolia;

View File

@ -0,0 +1,4 @@
{
"name": "docusaurus-plugin-debug",
"id": "default"
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,386 @@
/*
* AUTOGENERATED - DON'T EDIT
* Your edits in this file will be overwritten in the next build!
* Modify the docusaurus.config.js file at your site's root instead.
*/
export default {
"title": "JobOps Documentation",
"tagline": "Self-hosted job search automation docs",
"favicon": "img/favicon.ico",
"future": {
"v4": {
"removeLegacyPostBuildHeadAttribute": true,
"useCssCascadeLayers": true
},
"experimental_faster": {
"swcJsLoader": false,
"swcJsMinimizer": false,
"swcHtmlMinimizer": false,
"lightningCssMinimizer": false,
"mdxCrossCompilerCache": false,
"rspackBundler": false,
"rspackPersistentCache": false,
"ssgWorkerThreads": false
},
"experimental_storage": {
"type": "localStorage",
"namespace": false
},
"experimental_router": "browser"
},
"url": "http://localhost:3005",
"baseUrl": "/docs/",
"onBrokenLinks": "throw",
"markdown": {
"hooks": {
"onBrokenMarkdownLinks": "throw",
"onBrokenMarkdownImages": "throw"
},
"format": "mdx",
"mermaid": false,
"emoji": true,
"mdx1Compat": {
"comments": true,
"admonitions": true,
"headingIds": true
},
"anchors": {
"maintainCase": false
}
},
"i18n": {
"defaultLocale": "en",
"locales": [
"en"
],
"path": "i18n",
"localeConfigs": {}
},
"presets": [
[
"classic",
{
"docs": {
"routeBasePath": "/",
"sidebarPath": "./sidebars.ts",
"editUrl": "https://github.com/DaKheera47/job-ops/tree/main/docs-site/",
"showLastUpdateAuthor": false,
"showLastUpdateTime": true
},
"blog": false,
"pages": false,
"theme": {
"customCss": "./src/css/custom.css"
}
}
]
],
"themeConfig": {
"navbar": {
"title": "JobOps Docs",
"logo": {
"alt": "JobOps",
"src": "img/logo.svg"
},
"items": [
{
"type": "docSidebar",
"sidebarId": "docsSidebar",
"position": "left",
"label": "Documentation"
},
{
"to": "/",
"label": "Latest",
"position": "left"
},
{
"type": "docsVersionDropdown",
"position": "right",
"dropdownActiveClassDisabled": true,
"dropdownItemsBefore": [],
"dropdownItemsAfter": []
},
{
"href": "https://github.com/DaKheera47/job-ops",
"label": "GitHub",
"position": "right"
}
],
"hideOnScroll": false
},
"footer": {
"style": "dark",
"links": [
{
"title": "Docs",
"items": [
{
"label": "Introduction",
"to": "/"
},
{
"label": "Self-Hosting",
"to": "/getting-started/self-hosting"
}
]
},
{
"title": "Project",
"items": [
{
"label": "Repository",
"href": "https://github.com/DaKheera47/job-ops"
},
{
"label": "Issues",
"href": "https://github.com/DaKheera47/job-ops/issues"
}
]
}
],
"copyright": "Copyright © 2026 JobOps"
},
"prism": {
"theme": {
"plain": {
"color": "#393A34",
"backgroundColor": "#f6f8fa"
},
"styles": [
{
"types": [
"comment",
"prolog",
"doctype",
"cdata"
],
"style": {
"color": "#999988",
"fontStyle": "italic"
}
},
{
"types": [
"namespace"
],
"style": {
"opacity": 0.7
}
},
{
"types": [
"string",
"attr-value"
],
"style": {
"color": "#e3116c"
}
},
{
"types": [
"punctuation",
"operator"
],
"style": {
"color": "#393A34"
}
},
{
"types": [
"entity",
"url",
"symbol",
"number",
"boolean",
"variable",
"constant",
"property",
"regex",
"inserted"
],
"style": {
"color": "#36acaa"
}
},
{
"types": [
"atrule",
"keyword",
"attr-name",
"selector"
],
"style": {
"color": "#00a4db"
}
},
{
"types": [
"function",
"deleted",
"tag"
],
"style": {
"color": "#d73a49"
}
},
{
"types": [
"function-variable"
],
"style": {
"color": "#6f42c1"
}
},
{
"types": [
"tag",
"selector",
"keyword"
],
"style": {
"color": "#00009f"
}
}
]
},
"darkTheme": {
"plain": {
"color": "#F8F8F2",
"backgroundColor": "#282A36"
},
"styles": [
{
"types": [
"prolog",
"constant",
"builtin"
],
"style": {
"color": "rgb(189, 147, 249)"
}
},
{
"types": [
"inserted",
"function"
],
"style": {
"color": "rgb(80, 250, 123)"
}
},
{
"types": [
"deleted"
],
"style": {
"color": "rgb(255, 85, 85)"
}
},
{
"types": [
"changed"
],
"style": {
"color": "rgb(255, 184, 108)"
}
},
{
"types": [
"punctuation",
"symbol"
],
"style": {
"color": "rgb(248, 248, 242)"
}
},
{
"types": [
"string",
"char",
"tag",
"selector"
],
"style": {
"color": "rgb(255, 121, 198)"
}
},
{
"types": [
"keyword",
"variable"
],
"style": {
"color": "rgb(189, 147, 249)",
"fontStyle": "italic"
}
},
{
"types": [
"comment"
],
"style": {
"color": "rgb(98, 114, 164)"
}
},
{
"types": [
"attr-name"
],
"style": {
"color": "rgb(241, 250, 140)"
}
}
]
},
"additionalLanguages": [],
"magicComments": [
{
"className": "theme-code-block-highlighted-line",
"line": "highlight-next-line",
"block": {
"start": "highlight-start",
"end": "highlight-end"
}
}
]
},
"colorMode": {
"defaultMode": "light",
"disableSwitch": false,
"respectPrefersColorScheme": false
},
"docs": {
"versionPersistence": "localStorage",
"sidebar": {
"hideable": false,
"autoCollapseCategories": false
}
},
"blog": {
"sidebar": {
"groupByYear": true
}
},
"metadata": [],
"tableOfContents": {
"minHeadingLevel": 2,
"maxHeadingLevel": 3
}
},
"baseUrlIssueBanner": true,
"onBrokenAnchors": "warn",
"onDuplicateRoutes": "warn",
"staticDirectories": [
"static"
],
"customFields": {},
"plugins": [],
"themes": [],
"scripts": [],
"headTags": [],
"stylesheets": [],
"clientModules": [],
"titleDelimiter": "|",
"noIndex": false
};

View File

@ -0,0 +1,176 @@
{
"docusaurus-plugin-content-docs": {
"default": {
"path": "/docs/",
"versions": [
{
"name": "current",
"label": "Next",
"isLast": false,
"path": "/docs/next",
"mainDocId": "intro",
"docs": [
{
"id": "extractors/gradcracker",
"path": "/docs/next/extractors/gradcracker",
"sidebar": "docsSidebar"
},
{
"id": "extractors/jobspy",
"path": "/docs/next/extractors/jobspy",
"sidebar": "docsSidebar"
},
{
"id": "extractors/manual",
"path": "/docs/next/extractors/manual",
"sidebar": "docsSidebar"
},
{
"id": "extractors/overview",
"path": "/docs/next/extractors/overview",
"sidebar": "docsSidebar"
},
{
"id": "extractors/ukvisajobs",
"path": "/docs/next/extractors/ukvisajobs",
"sidebar": "docsSidebar"
},
{
"id": "features/ghostwriter",
"path": "/docs/next/features/ghostwriter",
"sidebar": "docsSidebar"
},
{
"id": "features/orchestrator",
"path": "/docs/next/features/orchestrator",
"sidebar": "docsSidebar"
},
{
"id": "features/post-application-tracking",
"path": "/docs/next/features/post-application-tracking",
"sidebar": "docsSidebar"
},
{
"id": "getting-started/self-hosting",
"path": "/docs/next/getting-started/self-hosting",
"sidebar": "docsSidebar"
},
{
"id": "intro",
"path": "/docs/next/",
"sidebar": "docsSidebar"
},
{
"id": "reference/documentation-style-guide",
"path": "/docs/next/reference/documentation-style-guide",
"sidebar": "docsSidebar"
},
{
"id": "reference/faq",
"path": "/docs/next/reference/faq",
"sidebar": "docsSidebar"
},
{
"id": "troubleshooting/common-problems",
"path": "/docs/next/troubleshooting/common-problems",
"sidebar": "docsSidebar"
}
],
"draftIds": [],
"sidebars": {
"docsSidebar": {
"link": {
"path": "/docs/next/",
"label": "intro"
}
}
}
},
{
"name": "1.0.0",
"label": "1.0.0",
"isLast": true,
"path": "/docs/",
"mainDocId": "intro",
"docs": [
{
"id": "extractors/gradcracker",
"path": "/docs/extractors/gradcracker",
"sidebar": "docsSidebar"
},
{
"id": "extractors/jobspy",
"path": "/docs/extractors/jobspy",
"sidebar": "docsSidebar"
},
{
"id": "extractors/manual",
"path": "/docs/extractors/manual",
"sidebar": "docsSidebar"
},
{
"id": "extractors/overview",
"path": "/docs/extractors/overview",
"sidebar": "docsSidebar"
},
{
"id": "extractors/ukvisajobs",
"path": "/docs/extractors/ukvisajobs",
"sidebar": "docsSidebar"
},
{
"id": "features/ghostwriter",
"path": "/docs/features/ghostwriter",
"sidebar": "docsSidebar"
},
{
"id": "features/orchestrator",
"path": "/docs/features/orchestrator",
"sidebar": "docsSidebar"
},
{
"id": "features/post-application-tracking",
"path": "/docs/features/post-application-tracking",
"sidebar": "docsSidebar"
},
{
"id": "getting-started/self-hosting",
"path": "/docs/getting-started/self-hosting",
"sidebar": "docsSidebar"
},
{
"id": "intro",
"path": "/docs/",
"sidebar": "docsSidebar"
},
{
"id": "reference/documentation-style-guide",
"path": "/docs/reference/documentation-style-guide",
"sidebar": "docsSidebar"
},
{
"id": "reference/faq",
"path": "/docs/reference/faq",
"sidebar": "docsSidebar"
},
{
"id": "troubleshooting/common-problems",
"path": "/docs/troubleshooting/common-problems",
"sidebar": "docsSidebar"
}
],
"draftIds": [],
"sidebars": {
"docsSidebar": {
"link": {
"path": "/docs/",
"label": "intro"
}
}
}
}
],
"breadcrumbs": true
}
}
}

View File

@ -0,0 +1,20 @@
{
"defaultLocale": "en",
"locales": [
"en"
],
"path": "i18n",
"currentLocale": "en",
"localeConfigs": {
"en": {
"label": "English",
"direction": "ltr",
"htmlLang": "en",
"calendar": "gregory",
"path": "en",
"translate": false,
"url": "http://localhost:3005",
"baseUrl": "/docs/"
}
}
}

View File

@ -0,0 +1,42 @@
export default {
"__comp---theme-debug-config-23-a-2ff": [() => import(/* webpackChunkName: "__comp---theme-debug-config-23-a-2ff" */ "@theme/DebugConfig"), "@theme/DebugConfig", require.resolveWeak("@theme/DebugConfig")],
"__comp---theme-debug-contentba-8-ce7": [() => import(/* webpackChunkName: "__comp---theme-debug-contentba-8-ce7" */ "@theme/DebugContent"), "@theme/DebugContent", require.resolveWeak("@theme/DebugContent")],
"__comp---theme-debug-global-dataede-0fa": [() => import(/* webpackChunkName: "__comp---theme-debug-global-dataede-0fa" */ "@theme/DebugGlobalData"), "@theme/DebugGlobalData", require.resolveWeak("@theme/DebugGlobalData")],
"__comp---theme-debug-registry-679-501": [() => import(/* webpackChunkName: "__comp---theme-debug-registry-679-501" */ "@theme/DebugRegistry"), "@theme/DebugRegistry", require.resolveWeak("@theme/DebugRegistry")],
"__comp---theme-debug-routes-946-699": [() => import(/* webpackChunkName: "__comp---theme-debug-routes-946-699" */ "@theme/DebugRoutes"), "@theme/DebugRoutes", require.resolveWeak("@theme/DebugRoutes")],
"__comp---theme-debug-site-metadata-68-e-3d4": [() => import(/* webpackChunkName: "__comp---theme-debug-site-metadata-68-e-3d4" */ "@theme/DebugSiteMetadata"), "@theme/DebugSiteMetadata", require.resolveWeak("@theme/DebugSiteMetadata")],
"__comp---theme-doc-item-178-a40": [() => import(/* webpackChunkName: "__comp---theme-doc-item-178-a40" */ "@theme/DocItem"), "@theme/DocItem", require.resolveWeak("@theme/DocItem")],
"__comp---theme-doc-roota-94-67a": [() => import(/* webpackChunkName: "__comp---theme-doc-roota-94-67a" */ "@theme/DocRoot"), "@theme/DocRoot", require.resolveWeak("@theme/DocRoot")],
"__comp---theme-doc-version-roota-7-b-5de": [() => import(/* webpackChunkName: "__comp---theme-doc-version-roota-7-b-5de" */ "@theme/DocVersionRoot"), "@theme/DocVersionRoot", require.resolveWeak("@theme/DocVersionRoot")],
"__comp---theme-docs-root-5-e-9-0b6": [() => import(/* webpackChunkName: "__comp---theme-docs-root-5-e-9-0b6" */ "@theme/DocsRoot"), "@theme/DocsRoot", require.resolveWeak("@theme/DocsRoot")],
"__props---docs-11-b-f70": [() => import(/* webpackChunkName: "__props---docs-11-b-f70" */ "@generated/docusaurus-plugin-content-docs/default/p/docs-7fc.json"), "@generated/docusaurus-plugin-content-docs/default/p/docs-7fc.json", require.resolveWeak("@generated/docusaurus-plugin-content-docs/default/p/docs-7fc.json")],
"__props---docs-docusaurus-debug-content-344-8d5": [() => import(/* webpackChunkName: "__props---docs-docusaurus-debug-content-344-8d5" */ "@generated/docusaurus-plugin-debug/default/p/docs-docusaurus-debug-content-a52.json"), "@generated/docusaurus-plugin-debug/default/p/docs-docusaurus-debug-content-a52.json", require.resolveWeak("@generated/docusaurus-plugin-debug/default/p/docs-docusaurus-debug-content-a52.json")],
"__props---docs-nextbf-1-ba7": [() => import(/* webpackChunkName: "__props---docs-nextbf-1-ba7" */ "@generated/docusaurus-plugin-content-docs/default/p/docs-next-d71.json"), "@generated/docusaurus-plugin-content-docs/default/p/docs-next-d71.json", require.resolveWeak("@generated/docusaurus-plugin-content-docs/default/p/docs-next-d71.json")],
"content---docs-5-d-9-a16": [() => import(/* webpackChunkName: "content---docs-5-d-9-a16" */ "@site/versioned_docs/version-1.0.0/intro.md"), "@site/versioned_docs/version-1.0.0/intro.md", require.resolveWeak("@site/versioned_docs/version-1.0.0/intro.md")],
"content---docs-extractors-gradcracker-529-af3": [() => import(/* webpackChunkName: "content---docs-extractors-gradcracker-529-af3" */ "@site/versioned_docs/version-1.0.0/extractors/gradcracker.md"), "@site/versioned_docs/version-1.0.0/extractors/gradcracker.md", require.resolveWeak("@site/versioned_docs/version-1.0.0/extractors/gradcracker.md")],
"content---docs-extractors-jobspy-80-d-e15": [() => import(/* webpackChunkName: "content---docs-extractors-jobspy-80-d-e15" */ "@site/versioned_docs/version-1.0.0/extractors/jobspy.md"), "@site/versioned_docs/version-1.0.0/extractors/jobspy.md", require.resolveWeak("@site/versioned_docs/version-1.0.0/extractors/jobspy.md")],
"content---docs-extractors-manual-479-cf9": [() => import(/* webpackChunkName: "content---docs-extractors-manual-479-cf9" */ "@site/versioned_docs/version-1.0.0/extractors/manual.md"), "@site/versioned_docs/version-1.0.0/extractors/manual.md", require.resolveWeak("@site/versioned_docs/version-1.0.0/extractors/manual.md")],
"content---docs-extractors-overview-6-d-9-5d6": [() => import(/* webpackChunkName: "content---docs-extractors-overview-6-d-9-5d6" */ "@site/versioned_docs/version-1.0.0/extractors/overview.md"), "@site/versioned_docs/version-1.0.0/extractors/overview.md", require.resolveWeak("@site/versioned_docs/version-1.0.0/extractors/overview.md")],
"content---docs-extractors-ukvisajobs-31-a-da8": [() => import(/* webpackChunkName: "content---docs-extractors-ukvisajobs-31-a-da8" */ "@site/versioned_docs/version-1.0.0/extractors/ukvisajobs.md"), "@site/versioned_docs/version-1.0.0/extractors/ukvisajobs.md", require.resolveWeak("@site/versioned_docs/version-1.0.0/extractors/ukvisajobs.md")],
"content---docs-features-ghostwriter-185-10f": [() => import(/* webpackChunkName: "content---docs-features-ghostwriter-185-10f" */ "@site/versioned_docs/version-1.0.0/features/ghostwriter.md"), "@site/versioned_docs/version-1.0.0/features/ghostwriter.md", require.resolveWeak("@site/versioned_docs/version-1.0.0/features/ghostwriter.md")],
"content---docs-features-orchestrator-24-b-7c5": [() => import(/* webpackChunkName: "content---docs-features-orchestrator-24-b-7c5" */ "@site/versioned_docs/version-1.0.0/features/orchestrator.md"), "@site/versioned_docs/version-1.0.0/features/orchestrator.md", require.resolveWeak("@site/versioned_docs/version-1.0.0/features/orchestrator.md")],
"content---docs-features-post-application-tracking-3-a-9-fd1": [() => import(/* webpackChunkName: "content---docs-features-post-application-tracking-3-a-9-fd1" */ "@site/versioned_docs/version-1.0.0/features/post-application-tracking.md"), "@site/versioned_docs/version-1.0.0/features/post-application-tracking.md", require.resolveWeak("@site/versioned_docs/version-1.0.0/features/post-application-tracking.md")],
"content---docs-getting-started-self-hostingd-3-f-b47": [() => import(/* webpackChunkName: "content---docs-getting-started-self-hostingd-3-f-b47" */ "@site/versioned_docs/version-1.0.0/getting-started/self-hosting.md"), "@site/versioned_docs/version-1.0.0/getting-started/self-hosting.md", require.resolveWeak("@site/versioned_docs/version-1.0.0/getting-started/self-hosting.md")],
"content---docs-next-0-e-3-072": [() => import(/* webpackChunkName: "content---docs-next-0-e-3-072" */ "@site/docs/intro.md"), "@site/docs/intro.md", require.resolveWeak("@site/docs/intro.md")],
"content---docs-next-extractors-gradcrackeraa-2-35e": [() => import(/* webpackChunkName: "content---docs-next-extractors-gradcrackeraa-2-35e" */ "@site/docs/extractors/gradcracker.md"), "@site/docs/extractors/gradcracker.md", require.resolveWeak("@site/docs/extractors/gradcracker.md")],
"content---docs-next-extractors-jobspye-48-bba": [() => import(/* webpackChunkName: "content---docs-next-extractors-jobspye-48-bba" */ "@site/docs/extractors/jobspy.md"), "@site/docs/extractors/jobspy.md", require.resolveWeak("@site/docs/extractors/jobspy.md")],
"content---docs-next-extractors-manuald-05-f39": [() => import(/* webpackChunkName: "content---docs-next-extractors-manuald-05-f39" */ "@site/docs/extractors/manual.md"), "@site/docs/extractors/manual.md", require.resolveWeak("@site/docs/extractors/manual.md")],
"content---docs-next-extractors-overview-749-c9f": [() => import(/* webpackChunkName: "content---docs-next-extractors-overview-749-c9f" */ "@site/docs/extractors/overview.md"), "@site/docs/extractors/overview.md", require.resolveWeak("@site/docs/extractors/overview.md")],
"content---docs-next-extractors-ukvisajobs-389-6c0": [() => import(/* webpackChunkName: "content---docs-next-extractors-ukvisajobs-389-6c0" */ "@site/docs/extractors/ukvisajobs.md"), "@site/docs/extractors/ukvisajobs.md", require.resolveWeak("@site/docs/extractors/ukvisajobs.md")],
"content---docs-next-features-ghostwriterb-88-c5c": [() => import(/* webpackChunkName: "content---docs-next-features-ghostwriterb-88-c5c" */ "@site/docs/features/ghostwriter.md"), "@site/docs/features/ghostwriter.md", require.resolveWeak("@site/docs/features/ghostwriter.md")],
"content---docs-next-features-orchestratorfd-3-3fa": [() => import(/* webpackChunkName: "content---docs-next-features-orchestratorfd-3-3fa" */ "@site/docs/features/orchestrator.md"), "@site/docs/features/orchestrator.md", require.resolveWeak("@site/docs/features/orchestrator.md")],
"content---docs-next-features-post-application-tracking-5-cf-e2f": [() => import(/* webpackChunkName: "content---docs-next-features-post-application-tracking-5-cf-e2f" */ "@site/docs/features/post-application-tracking.md"), "@site/docs/features/post-application-tracking.md", require.resolveWeak("@site/docs/features/post-application-tracking.md")],
"content---docs-next-getting-started-self-hosting-47-e-517": [() => import(/* webpackChunkName: "content---docs-next-getting-started-self-hosting-47-e-517" */ "@site/docs/getting-started/self-hosting.md"), "@site/docs/getting-started/self-hosting.md", require.resolveWeak("@site/docs/getting-started/self-hosting.md")],
"content---docs-next-reference-documentation-style-guideb-28-9f0": [() => import(/* webpackChunkName: "content---docs-next-reference-documentation-style-guideb-28-9f0" */ "@site/docs/reference/documentation-style-guide.md"), "@site/docs/reference/documentation-style-guide.md", require.resolveWeak("@site/docs/reference/documentation-style-guide.md")],
"content---docs-next-reference-faq-656-100": [() => import(/* webpackChunkName: "content---docs-next-reference-faq-656-100" */ "@site/docs/reference/faq.md"), "@site/docs/reference/faq.md", require.resolveWeak("@site/docs/reference/faq.md")],
"content---docs-next-troubleshooting-common-problemsced-1cd": [() => import(/* webpackChunkName: "content---docs-next-troubleshooting-common-problemsced-1cd" */ "@site/docs/troubleshooting/common-problems.md"), "@site/docs/troubleshooting/common-problems.md", require.resolveWeak("@site/docs/troubleshooting/common-problems.md")],
"content---docs-reference-documentation-style-guideefe-1c9": [() => import(/* webpackChunkName: "content---docs-reference-documentation-style-guideefe-1c9" */ "@site/versioned_docs/version-1.0.0/reference/documentation-style-guide.md"), "@site/versioned_docs/version-1.0.0/reference/documentation-style-guide.md", require.resolveWeak("@site/versioned_docs/version-1.0.0/reference/documentation-style-guide.md")],
"content---docs-reference-faqf-1-a-03a": [() => import(/* webpackChunkName: "content---docs-reference-faqf-1-a-03a" */ "@site/versioned_docs/version-1.0.0/reference/faq.md"), "@site/versioned_docs/version-1.0.0/reference/faq.md", require.resolveWeak("@site/versioned_docs/version-1.0.0/reference/faq.md")],
"content---docs-troubleshooting-common-problemsd-94-383": [() => import(/* webpackChunkName: "content---docs-troubleshooting-common-problemsd-94-383" */ "@site/versioned_docs/version-1.0.0/troubleshooting/common-problems.md"), "@site/versioned_docs/version-1.0.0/troubleshooting/common-problems.md", require.resolveWeak("@site/versioned_docs/version-1.0.0/troubleshooting/common-problems.md")],
"plugin---docs-aba-4f5": [() => import(/* webpackChunkName: "plugin---docs-aba-4f5" */ "@generated/docusaurus-plugin-content-docs/default/__plugin.json"), "@generated/docusaurus-plugin-content-docs/default/__plugin.json", require.resolveWeak("@generated/docusaurus-plugin-content-docs/default/__plugin.json")],
"plugin---docs-docusaurus-debugb-38-c84": [() => import(/* webpackChunkName: "plugin---docs-docusaurus-debugb-38-c84" */ "@generated/docusaurus-plugin-debug/default/__plugin.json"), "@generated/docusaurus-plugin-debug/default/__plugin.json", require.resolveWeak("@generated/docusaurus-plugin-debug/default/__plugin.json")],};

View File

@ -0,0 +1,230 @@
import React from 'react';
import ComponentCreator from '@docusaurus/ComponentCreator';
export default [
{
path: '/docs/__docusaurus/debug',
component: ComponentCreator('/docs/__docusaurus/debug', 'e58'),
exact: true
},
{
path: '/docs/__docusaurus/debug/config',
component: ComponentCreator('/docs/__docusaurus/debug/config', '2ce'),
exact: true
},
{
path: '/docs/__docusaurus/debug/content',
component: ComponentCreator('/docs/__docusaurus/debug/content', '11b'),
exact: true
},
{
path: '/docs/__docusaurus/debug/globalData',
component: ComponentCreator('/docs/__docusaurus/debug/globalData', 'f13'),
exact: true
},
{
path: '/docs/__docusaurus/debug/metadata',
component: ComponentCreator('/docs/__docusaurus/debug/metadata', 'bff'),
exact: true
},
{
path: '/docs/__docusaurus/debug/registry',
component: ComponentCreator('/docs/__docusaurus/debug/registry', '830'),
exact: true
},
{
path: '/docs/__docusaurus/debug/routes',
component: ComponentCreator('/docs/__docusaurus/debug/routes', '13e'),
exact: true
},
{
path: '/docs/',
component: ComponentCreator('/docs/', 'd18'),
routes: [
{
path: '/docs/next',
component: ComponentCreator('/docs/next', '86e'),
routes: [
{
path: '/docs/next',
component: ComponentCreator('/docs/next', '732'),
routes: [
{
path: '/docs/next/',
component: ComponentCreator('/docs/next/', 'cd6'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/next/extractors/gradcracker',
component: ComponentCreator('/docs/next/extractors/gradcracker', '65d'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/next/extractors/jobspy',
component: ComponentCreator('/docs/next/extractors/jobspy', 'db9'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/next/extractors/manual',
component: ComponentCreator('/docs/next/extractors/manual', '5fd'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/next/extractors/overview',
component: ComponentCreator('/docs/next/extractors/overview', '0d7'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/next/extractors/ukvisajobs',
component: ComponentCreator('/docs/next/extractors/ukvisajobs', '8b3'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/next/features/ghostwriter',
component: ComponentCreator('/docs/next/features/ghostwriter', '0cf'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/next/features/orchestrator',
component: ComponentCreator('/docs/next/features/orchestrator', '299'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/next/features/post-application-tracking',
component: ComponentCreator('/docs/next/features/post-application-tracking', 'f32'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/next/getting-started/self-hosting',
component: ComponentCreator('/docs/next/getting-started/self-hosting', '6cb'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/next/reference/documentation-style-guide',
component: ComponentCreator('/docs/next/reference/documentation-style-guide', '32c'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/next/reference/faq',
component: ComponentCreator('/docs/next/reference/faq', '3d6'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/next/troubleshooting/common-problems',
component: ComponentCreator('/docs/next/troubleshooting/common-problems', 'e34'),
exact: true,
sidebar: "docsSidebar"
}
]
}
]
},
{
path: '/docs/',
component: ComponentCreator('/docs/', '2b9'),
routes: [
{
path: '/docs/',
component: ComponentCreator('/docs/', '25b'),
routes: [
{
path: '/docs/extractors/gradcracker',
component: ComponentCreator('/docs/extractors/gradcracker', 'de4'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/extractors/jobspy',
component: ComponentCreator('/docs/extractors/jobspy', '3b4'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/extractors/manual',
component: ComponentCreator('/docs/extractors/manual', '77c'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/extractors/overview',
component: ComponentCreator('/docs/extractors/overview', 'b46'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/extractors/ukvisajobs',
component: ComponentCreator('/docs/extractors/ukvisajobs', '3ff'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/features/ghostwriter',
component: ComponentCreator('/docs/features/ghostwriter', '6a0'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/features/orchestrator',
component: ComponentCreator('/docs/features/orchestrator', '19c'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/features/post-application-tracking',
component: ComponentCreator('/docs/features/post-application-tracking', '385'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/getting-started/self-hosting',
component: ComponentCreator('/docs/getting-started/self-hosting', 'e3c'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/reference/documentation-style-guide',
component: ComponentCreator('/docs/reference/documentation-style-guide', '68e'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/reference/faq',
component: ComponentCreator('/docs/reference/faq', 'd50'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/troubleshooting/common-problems',
component: ComponentCreator('/docs/troubleshooting/common-problems', 'b1f'),
exact: true,
sidebar: "docsSidebar"
},
{
path: '/docs/',
component: ComponentCreator('/docs/', 'cb8'),
exact: true,
sidebar: "docsSidebar"
}
]
}
]
}
]
},
{
path: '*',
component: ComponentCreator('*'),
},
];

View File

@ -0,0 +1,169 @@
{
"/docs/__docusaurus/debug-e58": {
"__comp": "__comp---theme-debug-config-23-a-2ff",
"__context": {
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
}
},
"/docs/__docusaurus/debug/config-2ce": {
"__comp": "__comp---theme-debug-config-23-a-2ff",
"__context": {
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
}
},
"/docs/__docusaurus/debug/content-11b": {
"__comp": "__comp---theme-debug-contentba-8-ce7",
"__context": {
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
},
"__props": "__props---docs-docusaurus-debug-content-344-8d5"
},
"/docs/__docusaurus/debug/globalData-f13": {
"__comp": "__comp---theme-debug-global-dataede-0fa",
"__context": {
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
}
},
"/docs/__docusaurus/debug/metadata-bff": {
"__comp": "__comp---theme-debug-site-metadata-68-e-3d4",
"__context": {
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
}
},
"/docs/__docusaurus/debug/registry-830": {
"__comp": "__comp---theme-debug-registry-679-501",
"__context": {
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
}
},
"/docs/__docusaurus/debug/routes-13e": {
"__comp": "__comp---theme-debug-routes-946-699",
"__context": {
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
}
},
"/docs/-d18": {
"__comp": "__comp---theme-docs-root-5-e-9-0b6",
"__context": {
"plugin": "plugin---docs-aba-4f5"
}
},
"/docs/next-86e": {
"__comp": "__comp---theme-doc-version-roota-7-b-5de",
"__props": "__props---docs-nextbf-1-ba7"
},
"/docs/next-732": {
"__comp": "__comp---theme-doc-roota-94-67a"
},
"/docs/next/-cd6": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-next-0-e-3-072"
},
"/docs/next/extractors/gradcracker-65d": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-next-extractors-gradcrackeraa-2-35e"
},
"/docs/next/extractors/jobspy-db9": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-next-extractors-jobspye-48-bba"
},
"/docs/next/extractors/manual-5fd": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-next-extractors-manuald-05-f39"
},
"/docs/next/extractors/overview-0d7": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-next-extractors-overview-749-c9f"
},
"/docs/next/extractors/ukvisajobs-8b3": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-next-extractors-ukvisajobs-389-6c0"
},
"/docs/next/features/ghostwriter-0cf": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-next-features-ghostwriterb-88-c5c"
},
"/docs/next/features/orchestrator-299": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-next-features-orchestratorfd-3-3fa"
},
"/docs/next/features/post-application-tracking-f32": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-next-features-post-application-tracking-5-cf-e2f"
},
"/docs/next/getting-started/self-hosting-6cb": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-next-getting-started-self-hosting-47-e-517"
},
"/docs/next/reference/documentation-style-guide-32c": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-next-reference-documentation-style-guideb-28-9f0"
},
"/docs/next/reference/faq-3d6": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-next-reference-faq-656-100"
},
"/docs/next/troubleshooting/common-problems-e34": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-next-troubleshooting-common-problemsced-1cd"
},
"/docs/-2b9": {
"__comp": "__comp---theme-doc-version-roota-7-b-5de",
"__props": "__props---docs-11-b-f70"
},
"/docs/-25b": {
"__comp": "__comp---theme-doc-roota-94-67a"
},
"/docs/extractors/gradcracker-de4": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-extractors-gradcracker-529-af3"
},
"/docs/extractors/jobspy-3b4": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-extractors-jobspy-80-d-e15"
},
"/docs/extractors/manual-77c": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-extractors-manual-479-cf9"
},
"/docs/extractors/overview-b46": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-extractors-overview-6-d-9-5d6"
},
"/docs/extractors/ukvisajobs-3ff": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-extractors-ukvisajobs-31-a-da8"
},
"/docs/features/ghostwriter-6a0": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-features-ghostwriter-185-10f"
},
"/docs/features/orchestrator-19c": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-features-orchestrator-24-b-7c5"
},
"/docs/features/post-application-tracking-385": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-features-post-application-tracking-3-a-9-fd1"
},
"/docs/getting-started/self-hosting-e3c": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-getting-started-self-hostingd-3-f-b47"
},
"/docs/reference/documentation-style-guide-68e": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-reference-documentation-style-guideefe-1c9"
},
"/docs/reference/faq-d50": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-reference-faqf-1-a-03a"
},
"/docs/troubleshooting/common-problems-b1f": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-troubleshooting-common-problemsd-94-383"
},
"/docs/-cb8": {
"__comp": "__comp---theme-doc-item-178-a40",
"content": "content---docs-5-d-9-a16"
}
}

View File

@ -0,0 +1,31 @@
{
"docusaurusVersion": "3.9.2",
"siteVersion": "0.0.0",
"pluginVersions": {
"docusaurus-plugin-css-cascade-layers": {
"type": "package",
"name": "@docusaurus/plugin-css-cascade-layers",
"version": "3.9.2"
},
"docusaurus-plugin-content-docs": {
"type": "package",
"name": "@docusaurus/plugin-content-docs",
"version": "3.9.2"
},
"docusaurus-plugin-debug": {
"type": "package",
"name": "@docusaurus/plugin-debug",
"version": "3.9.2"
},
"docusaurus-plugin-svgr": {
"type": "package",
"name": "@docusaurus/plugin-svgr",
"version": "3.9.2"
},
"docusaurus-theme-classic": {
"type": "package",
"name": "@docusaurus/theme-classic",
"version": "3.9.2"
}
}
}

View File

@ -0,0 +1,4 @@
{
"type": "localStorage",
"namespace": ""
}

View File

@ -12,7 +12,6 @@ import {
CalendarClock,
ClipboardList,
DollarSign,
PanelRightOpen,
PlusCircle,
} from "lucide-react";
import React from "react";
@ -21,18 +20,10 @@ import { toast } from "sonner";
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import {
Sheet,
SheetContent,
SheetDescription,
SheetHeader,
SheetTitle,
SheetTrigger,
} from "@/components/ui/sheet";
import { formatTimestamp } from "@/lib/utils";
import * as api from "../api";
import { ConfirmDelete } from "../components/ConfirmDelete";
import { GhostwriterPanel } from "../components/ghostwriter/GhostwriterPanel";
import { GhostwriterDrawer } from "../components/ghostwriter/GhostwriterDrawer";
import { JobHeader } from "../components/JobHeader";
import {
type LogEventFormValues,
@ -49,7 +40,6 @@ export const JobPage: React.FC = () => {
const [isLoading, setIsLoading] = React.useState(true);
const [isLogModalOpen, setIsLogModalOpen] = React.useState(false);
const [isDeleteModalOpen, setIsDeleteModalOpen] = React.useState(false);
const [isGhostwriterOpen, setIsGhostwriterOpen] = React.useState(false);
const [eventToDelete, setEventToDelete] = React.useState<string | null>(null);
const [editingEvent, setEditingEvent] = React.useState<StageEvent | null>(
null,
@ -281,119 +271,88 @@ export const JobPage: React.FC = () => {
</CardContent>
</Card>
<Sheet open={isGhostwriterOpen} onOpenChange={setIsGhostwriterOpen}>
<div className="space-y-4">
<div className="space-y-4">
<Card className="border-border/50">
<CardHeader>
<div className="flex items-center justify-between gap-3">
<CardTitle className="flex items-center gap-2 text-base">
<CalendarClock className="h-4 w-4" />
Application details
</CardTitle>
<GhostwriterDrawer job={job} />
</div>
</CardHeader>
<CardContent className="space-y-4">
<div>
<div className="text-[10px] uppercase tracking-wide text-muted-foreground">
Current Stage
</div>
<div className="mt-1 text-sm font-medium">
{currentStage
? STAGE_LABELS[currentStage as ApplicationStage] ||
currentStage
: job?.status}
</div>
</div>
<div>
<div className="text-[10px] uppercase tracking-wide text-muted-foreground">
Outcome
</div>
<div className="mt-1 text-sm font-medium">
{job?.outcome ? job.outcome.replace(/_/g, " ") : "Open"}
</div>
</div>
{job?.closedAt && (
<div>
<div className="text-[10px] uppercase tracking-wide text-muted-foreground">
Closed On
</div>
<div className="mt-1 text-sm font-medium">
{formatTimestamp(job.closedAt)}
</div>
</div>
)}
</CardContent>
</Card>
{tasks.length > 0 && (
<Card className="border-border/50">
<CardHeader>
<div className="flex items-center justify-between gap-3">
<CardTitle className="flex items-center gap-2 text-base">
<CalendarClock className="h-4 w-4" />
Application details
</CardTitle>
<SheetTrigger asChild>
<Button
size="sm"
variant="outline"
className="h-8 gap-1.5 text-xs"
disabled={!job}
>
<PanelRightOpen className="h-3.5 w-3.5" />
Ghostwriter
</Button>
</SheetTrigger>
</div>
<CardTitle className="flex items-center gap-2 text-base">
<CalendarClock className="h-4 w-4" />
Upcoming tasks
</CardTitle>
</CardHeader>
<CardContent className="space-y-4">
<div>
<div className="text-[10px] uppercase tracking-wide text-muted-foreground">
Current Stage
</div>
<div className="mt-1 text-sm font-medium">
{currentStage
? STAGE_LABELS[currentStage as ApplicationStage] ||
currentStage
: job?.status}
</div>
</div>
<div>
<div className="text-[10px] uppercase tracking-wide text-muted-foreground">
Outcome
</div>
<div className="mt-1 text-sm font-medium">
{job?.outcome ? job.outcome.replace(/_/g, " ") : "Open"}
</div>
</div>
{job?.closedAt && (
<div>
<div className="text-[10px] uppercase tracking-wide text-muted-foreground">
Closed On
<CardContent>
<div className="space-y-3">
{tasks.map((task) => (
<div
key={task.id}
className="flex items-start justify-between gap-4"
>
<div className="space-y-1">
<div className="text-sm font-medium text-foreground/90">
{task.title}
</div>
{task.notes && (
<div className="text-xs text-muted-foreground">
{task.notes}
</div>
)}
</div>
<Badge
variant="outline"
className="text-[10px] uppercase tracking-wide"
>
{formatTimestamp(task.dueDate)}
</Badge>
</div>
<div className="mt-1 text-sm font-medium">
{formatTimestamp(job.closedAt)}
</div>
</div>
)}
))}
</div>
</CardContent>
</Card>
{tasks.length > 0 && (
<Card className="border-border/50">
<CardHeader>
<CardTitle className="flex items-center gap-2 text-base">
<CalendarClock className="h-4 w-4" />
Upcoming tasks
</CardTitle>
</CardHeader>
<CardContent>
<div className="space-y-3">
{tasks.map((task) => (
<div
key={task.id}
className="flex items-start justify-between gap-4"
>
<div className="space-y-1">
<div className="text-sm font-medium text-foreground/90">
{task.title}
</div>
{task.notes && (
<div className="text-xs text-muted-foreground">
{task.notes}
</div>
)}
</div>
<Badge
variant="outline"
className="text-[10px] uppercase tracking-wide"
>
{formatTimestamp(task.dueDate)}
</Badge>
</div>
))}
</div>
</CardContent>
</Card>
)}
<SheetContent
side="right"
className="w-full p-0 sm:max-w-none lg:w-[40vw]"
>
<div className="h-full overflow-y-auto p-4">
<SheetHeader>
<SheetTitle>Ghostwriter</SheetTitle>
<SheetDescription>
Chat with context from this job and your writing style.
</SheetDescription>
</SheetHeader>
{job && (
<div className="mt-4">
<GhostwriterPanel job={job} />
</div>
)}
</div>
</SheetContent>
</div>
</Sheet>
)}
</div>
</div>
<LogEventModal

View File

@ -7,7 +7,6 @@ import {
FileText,
Loader2,
MoreHorizontal,
PanelRightOpen,
RefreshCcw,
Save,
XCircle,
@ -25,14 +24,6 @@ import {
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import {
Sheet,
SheetContent,
SheetDescription,
SheetHeader,
SheetTitle,
SheetTrigger,
} from "@/components/ui/sheet";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { Textarea } from "@/components/ui/textarea";
import {
@ -48,7 +39,7 @@ import {
JobHeader,
TailoredSummary,
} from "../../components";
import { GhostwriterPanel } from "../../components/ghostwriter/GhostwriterPanel";
import { GhostwriterDrawer } from "../../components/ghostwriter/GhostwriterDrawer";
import { JobDetailsEditDrawer } from "../../components/JobDetailsEditDrawer";
import { ReadyPanel } from "../../components/ReadyPanel";
import { TailoringEditor } from "../../components/TailoringEditor";
@ -81,7 +72,6 @@ export const JobDetailPanel: React.FC<JobDetailPanelProps> = ({
const [hasUnsavedTailoring, setHasUnsavedTailoring] = useState(false);
const [processingJobId, setProcessingJobId] = useState<string | null>(null);
const [isEditDetailsOpen, setIsEditDetailsOpen] = useState(false);
const [isGhostwriterOpen, setIsGhostwriterOpen] = useState(false);
const saveTailoringRef = useRef<null | (() => Promise<void>)>(null);
const previousSelectedJobIdRef = useRef<string | null>(null);
@ -323,37 +313,7 @@ export const JobDetailPanel: React.FC<JobDetailPanelProps> = ({
return (
<div className="space-y-3">
<div className="flex justify-end">
<Sheet open={isGhostwriterOpen} onOpenChange={setIsGhostwriterOpen}>
<SheetTrigger asChild>
<Button
size="sm"
variant="outline"
className="h-8 gap-1.5 text-xs"
disabled={!selectedJob}
>
<PanelRightOpen className="h-3.5 w-3.5" />
Ghostwriter
</Button>
</SheetTrigger>
<SheetContent
side="right"
className="w-full p-0 sm:max-w-none lg:w-[40vw]"
>
<div className="h-full overflow-y-auto p-4">
<SheetHeader>
<SheetTitle>Ghostwriter</SheetTitle>
<SheetDescription>
Chat with context from this job and your writing style.
</SheetDescription>
</SheetHeader>
{selectedJob && (
<div className="mt-4">
<GhostwriterPanel job={selectedJob} />
</div>
)}
</div>
</SheetContent>
</Sheet>
<GhostwriterDrawer job={selectedJob} />
</div>
<DiscoveredPanel
job={selectedJob}
@ -369,37 +329,7 @@ export const JobDetailPanel: React.FC<JobDetailPanelProps> = ({
return (
<div className="space-y-3">
<div className="flex justify-end">
<Sheet open={isGhostwriterOpen} onOpenChange={setIsGhostwriterOpen}>
<SheetTrigger asChild>
<Button
size="sm"
variant="outline"
className="h-8 gap-1.5 text-xs"
disabled={!selectedJob}
>
<PanelRightOpen className="h-3.5 w-3.5" />
Ghostwriter
</Button>
</SheetTrigger>
<SheetContent
side="right"
className="w-full p-0 sm:max-w-none lg:w-[40vw]"
>
<div className="h-full overflow-y-auto p-4">
<SheetHeader>
<SheetTitle>Ghostwriter</SheetTitle>
<SheetDescription>
Chat with context from this job and your writing style.
</SheetDescription>
</SheetHeader>
{selectedJob && (
<div className="mt-4">
<GhostwriterPanel job={selectedJob} />
</div>
)}
</div>
</SheetContent>
</Sheet>
<GhostwriterDrawer job={selectedJob} />
</div>
<ReadyPanel
job={selectedJob}