1
1

# Create Resume TypeScript Interfaces

ready-for-dev
2025-11-30
BMAD Story Context Workflow
docs/sprint-artifacts/1-1-create-resume-typescript-interfaces.md
developer
well-defined TypeScript interfaces for resume data
I have type safety and autocomplete when working with resume content
Create app/types/resume.ts file with header comment
Define ResumeBasics interface (name, label, email, phone, url?, location, profiles, summary)
Define WorkExperience interface (company, position, startDate, endDate?, highlights)
Define Education interface (institution, area, studyType, startDate, endDate?)
Define Skill interface (name, keywords[])
Define Language interface (language, fluency union type)
Define Certification interface (name, issuer, date)
Define Resume interface combining all, export all interfaces
Verify TypeScript compilation with pnpm typecheck
File exists at app/types/resume.ts
ResumeBasics interface includes: name, label, email, phone, url?, location, profiles, summary
WorkExperience interface includes: company, position, startDate, endDate?, highlights
Education interface includes: institution, area, studyType, startDate, endDate?
Skill interface includes: name, keywords[]
Language interface includes: language, fluency (union type)
Certification interface includes: name, issuer, date
Resume interface combines all above with optional languages/certifications
All date fields use YYYY-MM string format
All interfaces are exported
docs/architecture.md

# Resume Export Feature - Architecture Document

Data Architecture
Defines Resume interface based on JSON Resume schema (modified). Includes ResumeBasics, WorkExperience, Education, Skill, Language, Certification interfaces.
docs/epics.md

# Resume Export Feature - Epic Breakdown

Story 1.1: Create Resume TypeScript Interfaces
Acceptance criteria for TypeScript interfaces including all required fields and export requirements.
docs/sprint-artifacts/tech-spec-epic-1.md

# Epic Technical Specification: Resume Data and Types

Data Models and Contracts
Complete TypeScript interface definitions with field types, optional markers, and JSON Resume schema alignment.
docs/prd.md

# nuxt-portfolio - Product Requirements Document

Functional Requirements FR1-4
FR1: System stores resume data in dedicated file. FR2: Resume data structure supports all template sections.
app/types/portfolio.types.ts
types
Profile, Experience, Education, SkillType Reference for existing type patterns in project. Note: Resume types are SEPARATE from portfolio types per FR3.
app/types/blog.ts
types
Blog types Reference for type export patterns used in project.
app/data/portfolio.en.ts
data
portfolioData Reference for data file patterns. Resume data will follow similar structure but be independent.
typescript
^5.9.x
Type definitions and compilation
nuxt
^4.1.3
Auto-imports types from app/types/
Based on JSON Resume standard (modified) - see Architecture doc
Date fields must use YYYY-MM string format (not Date object)
Resume data must be independent from portfolio data (FR3)
Must support future language extension via file naming (resume.{locale}.ts)
File must be at app/types/resume.ts
All interfaces must be exported for use in components
ResumeBasics TypeScript interface interface ResumeBasics { name: string label: string email: string phone: string url?: string location: { city: string; country: string } profiles: Array<{ network: string; url: string; icon?: string }> summary: string } app/types/resume.ts (to be created) Resume TypeScript interface interface Resume { basics: ResumeBasics work: WorkExperience[] education: Education[] skills: Skill[] languages?: Language[] certifications?: Certification[] } app/types/resume.ts (to be created)
TypeScript compiler validates interface correctness at build time. No runtime tests needed for type definitions. Use pnpm typecheck or pnpm build to verify compilation.
TypeScript compilation (pnpm typecheck)
Build process (pnpm build)
Verify file exists after creation
TypeScript compiler validates interface structure
Review date field types are string not Date
Verify imports work in subsequent stories (1.2, 1.3)