-
Notifications
You must be signed in to change notification settings - Fork 2
Technology Stack
CVForge uses a modern client heavy stack. The product is designed as a static export, so most of the editing work happens in the browser.
The app uses Next.js 16.2 with the App Router and Turbopack. Pages live under app, while editor UI lives under components.
React 19.2 powers the runtime UI. Most editor surfaces are client components because they depend on browser state, file uploads, session storage, local storage, and live preview updates.
TypeScript is used across the app so document data, agent tool arguments, and editor callbacks stay explicit.
Tailwind CSS v4 provides the styling layer through global CSS tokens and utility classes. Shared UI primitives follow the shadcn style pattern, with Base UI for low level behavior and lucide react for icons.
The editors use a split workspace with form controls on one side and a paginated preview on the other. The preview is treated as the source of visual truth for export quality.
Export is handled in the browser. The app uses html to image for preview capture and jsPDF for PDF generation. JSON import and export are available for moving document data in and out of CVForge.
Agent Mode uses the OpenAI SDK for chat completions. LangChain DynamicStructuredTool wrappers define the document editing tools, and Zod schemas validate tool arguments before execution.
The agent runtime is split into focused modules.
- Chat builds prompts, streams replies, runs tool loops, and handles clarification flow
- Tools define tool schemas and tool names
- Executor applies pure document updates
- Context sources read uploaded context files and retrieve useful excerpts
- Session state persists agent panel state for the current tab
- Text normalization keeps English and Chinese output tidy
Uploaded reference files are not sent wholesale to the model. CVForge uses MiniSearch as a light browser side full text search engine. The app stores the extracted text, chunks it locally, searches it for the current user request, then injects only relevant excerpts into the agent context.
PDF text extraction uses PDF.js. The app assumes PDFs contain selectable text. Scanned image only PDFs are outside the current scope.
Document state, chat history, context sources, project instructions, clarification state, and recent agent changes use sessionStorage.
LLM configuration uses localStorage.
There is no app database and no user account system.
CVForge Wiki