Overview
CV Builder uses a strongly-typed data structure defined inlib/types.ts. All resume data is stored as a single CVData object containing personal information, experience, education, and other sections.
Core Data Type
The main data structure that represents a complete resume:lib/types.ts
User’s personal contact information and profile
Array of work experience entries
Array of education entries
Array of personal or professional projects
Array of awards, certifications, or achievements
Array of languages with proficiency levels
Array of technical and professional skills
Order in which sections appear in the resume
References text (e.g., “Available upon request”)
Sections hidden from preview and PDF export
Selected resume template (‘default’ | ‘rhyhorn’ | ‘nexus’)
Section Types
PersonalInfo
Personal contact information and profile:lib/types.ts
Full name of the person
Email address
Phone number
Physical address or location
Current or desired job title
Professional summary or bio
Personal website URL
LinkedIn profile URL
GitHub profile URL
URL to profile image (Firebase Storage URL)
Experience
Work experience entries:lib/types.ts
Unique identifier (generated with nanoid)
Company or organization name
Job title or position
Start date (ISO string or formatted)
End date (ISO string or formatted)
Whether this is the current position
Job responsibilities and achievements
Education
Education entries:lib/types.ts
Unique identifier
School or institution name
Degree or qualification obtained
Start date
End date or expected graduation
Additional details, honors, or coursework
Project
Project entries:lib/types.ts
Unique identifier
Project name
Project date or date range
Technologies used (comma-separated)
Project description and outcomes
Achievement
Award or achievement entries:lib/types.ts
Unique identifier
Achievement or award title
Issuing organization
Date received
Language
Language proficiency entries:lib/types.ts
Unique identifier
Language name
Proficiency level (e.g., “Native”, “Fluent”, “Intermediate”)
Skill
Skill entries:lib/types.ts
Unique identifier
Skill category name
Comma-separated list of specific skills
Skill category type
Section Management
SectionId Type
Available resume sections:lib/types.ts
Default Section Order
lib/types.ts
Version Control Types
CVVersion
Saved version of a resume:lib/types.ts
CVDocument
Firestore document structure:lib/types.ts
Merge Types
Types used for conflict resolution during sync:FieldConflict
lib/types.ts
Section where the conflict occurred
Specific field name or item ID
Value from local (browser) storage
Value from Firebase server
Value from last sync (common ancestor)
Human-readable conflict description
MergeResult
lib/types.ts
Merged resume data
Array of detected conflicts
Whether any conflicts were detected
Initial Data
The default empty resume structure:lib/types.ts