You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, import and export are implemented as separate buttons with basic file handling. This feature consolidates the import/export workflow into a single, unified dialog with an integrated JSON editor, smart filename generation, and drag-and-drop support.
This improves the user experience significantly:
Single UI entry point for all import/export operations
JSON editing on the fly for fixing LLM-generated data or making adjustments before import
Copy and pasting whole sections or items to different CVs
Smart naming to avoid confusing file versioning (cv-data-en(1).json, cv-data-en(2).json)
Copy individual sections from editor for LLM handoffs
3. Smart Filename Generation
Implement a filename template with auto-populated variables:
Format: {date} {time} {cv-name} {cv-version} {cv-language} {cv-id}.json
or optionally with underscore character {date}_{time}_{cv-name}_{cv-version}_{cv-language}_{cv-id}.json
Examples:
2026-07-07 143022 Projectmanager V1 en abc123.json
Refactor current exportData() and importData() functions into unified dialog
Create ImportExportDialog component with sub-components:
JSONEditor (using Option A or B)
FilenameTemplate (template input with variable preview)
DragDropZone (drag-and-drop file upload)
ValidationPanel (errors/warnings when available)
CSS Updates
Dialog styling matching existing modal design
Editor syntax highlighting (monospace font, line numbers optional)
Diff view styling for Option B
Browser Compatibility
Modern FileReader API for drag-and-drop
JSON.parse() and JSON.stringify() for validation
Benefits
✅ Single, intuitive entry point
✅ Reduced file confusion: Smart naming eliminates cv-data(1), cv-data(2) mess + increase searchability on local machine
✅ LLM-friendly workflow: Copy/paste from any LLM, fix in-editor, import cleanly
✅ Better error handling: Validation catches LLM mistakes before import
✅ Accessibility: Drag-and-drop for users who prefer it over file pickers ➡️ Easier to handle from browsers download dialog
✅ Data integrity: Optional diff viewer ensures users understand what's being imported and/or overwritten.
Overview
Currently, import and export are implemented as separate buttons with basic file handling. This feature consolidates the import/export workflow into a single, unified dialog with an integrated JSON editor, smart filename generation, and drag-and-drop support.
This improves the user experience significantly:
cv-data-en(1).json,cv-data-en(2).json)User Scenarios
Scenario 1: Export Current Dataset
{date} {time} {cv-name} {cv-version} {cv-language} {cv-id}.json{date} {time} - most interesting - {cv-name} {cv-version} {cv-language} {cv-id} - custom sections.json)Scenario 2: Import with LLM-Generated Data
Scenario 3: Working with Multiple CV Versions
cv-data-en.json,cv-data-de.json,cv-data-fr.jsonDeliverables
1. Unified Dialog Component
2. JSON Editor Implementation
Option A (YAGNI — Minimum Viable):**
Option B (Full-Featured and Recommended):**
3. Smart Filename Generation
Implement a filename template with auto-populated variables:
Format:
{date} {time} {cv-name} {cv-version} {cv-language} {cv-id}.jsonor optionally with underscore character
{date}_{time}_{cv-name}_{cv-version}_{cv-language}_{cv-id}.jsonExamples:
User can extend custom strings:
{date}_{time}_{cv-name}_{cv-version}_{cv-language}_{cv-id}_updated_section.json2026-07-07_143022_Car-Mechanic_v3_en_abc123_updated_section.jsonTemplate Variables:
{date}→ YYYY-MM-DD / Format based on user locale or user settings{time}→ HHMMSS / Format vased on user locale or user settings{cv-name}→ Current dataset name (from DB){cv-version}→ CV Version likeV2,V3{cv-language}→ CV languagede,en,fr,...{cv-id}→ Dataset ID from database as unique identifier4. Drag-and-Drop Support
5. Integration with Issue #174
When JSON schema is delivered (issue #174), the editor should:
Technical Considerations
Backend Changes
/api/export/filename-templateendpoint (or similar) that returns pre-filled template valuesFrontend Changes
exportData()andimportData()functions into unified dialogImportExportDialogcomponent with sub-components:JSONEditor(using Option A or B)FilenameTemplate(template input with variable preview)DragDropZone(drag-and-drop file upload)ValidationPanel(errors/warnings when available)CSS Updates
Browser Compatibility
FileReaderAPI for drag-and-dropJSON.parse()andJSON.stringify()for validationBenefits
✅ Single, intuitive entry point
✅ Reduced file confusion: Smart naming eliminates
cv-data(1),cv-data(2)mess + increase searchability on local machine✅ LLM-friendly workflow: Copy/paste from any LLM, fix in-editor, import cleanly
✅ Better error handling: Validation catches LLM mistakes before import
✅ Accessibility: Drag-and-drop for users who prefer it over file pickers ➡️ Easier to handle from browsers download dialog
✅ Data integrity: Optional diff viewer ensures users understand what's being imported and/or overwritten.
Related Issues
Acceptance Criteria