Files
portfolio/docs/sprint-artifacts/1-2-create-sample-resume-data-file.md
T
mahdiarghyani a492b0ba05 feat(epic-1): complete resume data foundation - types, data, and composable
Epic 1: Resume Data & Types - All Stories Complete

Story 1.1: Create Resume TypeScript Interfaces 
- Add Resume, ResumeBasics, WorkExperience, Education, Skill, Language, Certification interfaces
- File: app/types/resume.ts
- All interfaces exported with proper TypeScript types
- Date fields use YYYY-MM string format

Story 1.2: Create Sample Resume Data File 
- Add sample resume data with Ali Arghyani profile
- File: app/data/resume.en.ts
- Includes: basics, work (2), education (1), skills (2), languages (2)
- Data independent from portfolio data

Story 1.3: Create Resume Data Composable 
- Add useResumeData composable for reactive data access
- File: app/composables/useResumeData.ts
- Exports: resume ref, formatDate(), getFullName(), getPdfFilename()
- Proper JSDoc documentation

Files Added:
- app/types/resume.ts
- app/data/resume.en.ts
- app/composables/useResumeData.ts
- docs/sprint-artifacts/1-1-create-resume-typescript-interfaces.md
- docs/sprint-artifacts/1-1-create-resume-typescript-interfaces.context.xml
- docs/sprint-artifacts/1-2-create-sample-resume-data-file.md
- docs/sprint-artifacts/1-2-create-sample-resume-data-file.context.xml
- docs/sprint-artifacts/1-3-create-resume-data-composable.md
- docs/sprint-artifacts/1-3-create-resume-data-composable.context.xml

Files Modified:
- docs/sprint-artifacts/sprint-status.yaml (stories 1.1-1.3: backlog → done)

All stories reviewed and approved. Epic 1 complete - data foundation ready for Epic 2 (Resume Preview Page).
2025-11-30 15:06:20 +03:30

7.6 KiB

Story 1.2: Create Sample Resume Data File

Status: done

Story

As a developer, I want a sample resume data file with realistic content, so that I can test the preview and PDF generation with real data.

Acceptance Criteria

AC ID Criteria Testable
AC-1 File exists at app/data/resume.en.ts
AC-2 Exports resumeData of type Resume
AC-3 Contains full name and job title in basics
AC-4 Contains contact info (email, phone, location) in basics
AC-5 Contains at least 2 social profiles with icons (LinkedIn, GitHub)
AC-6 Contains professional summary (2-3 sentences)
AC-7 Contains at least 2 work experiences with 3+ highlights each
AC-8 Contains at least 1 education entry
AC-9 Contains at least 2 skill categories with 4+ keywords each
AC-10 Contains at least 2 languages
AC-11 Data is independent from portfolio data

Tasks / Subtasks

  • Task 1: Create data file (AC: 1)

    • Create app/data/resume.en.ts file
    • Add file header comment
  • Task 2: Import Resume type (AC: 2)

    • Import Resume type from ~/types/resume
    • Export resumeData constant with type annotation
  • Task 3: Define basics section (AC: 3, 4, 5, 6)

    • Add name: string (Ali Arghyani)
    • Add label: string (Senior Frontend Developer)
    • Add email: string
    • Add phone: string
    • Add location: { city, country }
    • Add profiles array with LinkedIn and GitHub (with icons)
    • Add summary (2-3 sentences)
  • Task 4: Define work experience (AC: 7)

    • Add at least 2 work entries
    • Each entry has company, position, startDate, endDate?
    • Each entry has 3+ highlights
  • Task 5: Define education (AC: 8)

    • Add at least 1 education entry
    • Include institution, area, studyType, dates
  • Task 6: Define skills (AC: 9)

    • Add at least 2 skill categories
    • Each category has 4+ keywords
  • Task 7: Define languages (AC: 10)

    • Add at least 2 languages
    • Use fluency union type values
  • Task 8: Verify TypeScript compilation (AC: 1-11)

    • Run pnpm typecheck or build to verify no errors
    • Verify data imports correctly

Dev Notes

Architecture Alignment

  • Schema: Must conform to Resume interface from Story 1.1
  • Location: app/data/ follows Nuxt 4 convention for data files
  • Naming: resume.en.ts supports future i18n extension (resume.fa.ts)
  • Independence: Data must be separate from existing portfolio.en.ts

Key Constraints

  • Date format: YYYY-MM string (e.g., "2022-01")
  • Use "Present" concept via undefined endDate for current positions
  • Iconify icon names for profiles: i-mdi-linkedin, i-mdi-github
  • Fluency values: 'Native' | 'Fluent' | 'Intermediate' | 'Basic'

Sample Data Guidelines

  • Use Ali Arghyani as sample name (per Architecture doc)
  • Use placeholder contact info (not real PII)
  • Work experience should be realistic but fictional
  • Skills should reflect frontend developer profile

Learnings from Previous Story

From Story 1-1-create-resume-typescript-interfaces (Status: done)

  • Types Created: All resume interfaces available at app/types/resume.ts
  • Import Pattern: Use import type { Resume } from '~/types/resume'
  • Interfaces Available: Resume, ResumeBasics, WorkExperience, Education, Skill, Language, Certification
  • Date Format: All date fields are string type for YYYY-MM format
  • Optional Fields: url, endDate, languages, certifications are optional

[Source: docs/sprint-artifacts/1-1-create-resume-typescript-interfaces.md#Dev-Agent-Record]

Project Structure Notes

  • File path: app/data/resume.en.ts
  • Similar pattern to existing app/data/portfolio.en.ts
  • Auto-imported by Nuxt (no manual import needed)

References

  • [Source: docs/architecture.md#Data-Architecture] - Sample data structure
  • [Source: docs/epics.md#Story-1.2] - Acceptance criteria
  • [Source: docs/sprint-artifacts/tech-spec-epic-1.md#Data-Models-and-Contracts] - Schema details
  • [Source: app/types/resume.ts] - TypeScript interfaces to use

Dev Agent Record

Context Reference

  • docs/sprint-artifacts/1-2-create-sample-resume-data-file.context.xml

Agent Model Used

Claude (Kiro Dev Agent - Amelia)

Debug Log References

  • Created app/data/resume.en.ts with sample resume data
  • Imported Resume type from ~/types/resume
  • All sections populated: basics, work (2), education (1), skills (2), languages (2)
  • getDiagnostics: No errors found

Completion Notes List

  • Created app/data/resume.en.ts with header comment
  • Exported resumeData constant with Resume type annotation
  • basics: Ali Arghyani, Senior Frontend Developer, contact info, 2 profiles with icons, summary
  • work: 2 entries (NexaPortal current, Freelance past) with 4 highlights each
  • education: 1 entry (Qom University of Technology, B.Sc. Telecommunications)
  • skills: 2 categories (Frontend: 5 keywords, Tools & DevOps: 5 keywords)
  • languages: 2 entries (Persian Native, English Fluent)
  • Data is independent from portfolio data (no imports from portfolio files)

File List

Action File
Created app/data/resume.en.ts

Change Log

Date Author Change
2025-11-30 SM Agent (Bob) Initial draft created
2025-11-30 Dev Agent (Amelia) Implemented all tasks - created sample resume data file
2025-11-30 Senior Dev Review (AI) Code review completed - APPROVED

Senior Developer Review (AI)

Review Metadata

  • Reviewer: mahdi
  • Date: 2025-11-30
  • Outcome: APPROVE

Summary

All 11 acceptance criteria are fully implemented. All 8 tasks verified with evidence. Data conforms to Resume interface, is independent from portfolio data, and follows project patterns.

Acceptance Criteria Coverage

AC# Description Status Evidence
AC-1 File exists at app/data/resume.en.ts File exists
AC-2 Exports resumeData of type Resume resume.en.ts:9
AC-3 Contains full name and job title resume.en.ts:11-12
AC-4 Contains contact info resume.en.ts:13-19
AC-5 Contains 2+ social profiles with icons resume.en.ts:20-31
AC-6 Contains professional summary resume.en.ts:32-33
AC-7 Contains 2+ work experiences with 3+ highlights resume.en.ts:36-57
AC-8 Contains 1+ education entry resume.en.ts:58-65
AC-9 Contains 2+ skill categories with 4+ keywords resume.en.ts:66-73
AC-10 Contains 2+ languages resume.en.ts:74-83
AC-11 Data independent from portfolio No portfolio imports

Summary: 11 of 11 ACs implemented

Task Completion Validation

Task Marked Verified Evidence
Task 1-8 [x] All verified with file evidence

Summary: 8 of 8 tasks verified, 0 false completions

Architectural Alignment

  • Conforms to Resume interface from app/types/resume.ts
  • File location follows Nuxt 4 convention (app/data/)
  • Naming supports i18n extension (resume.en.ts)
  • Independent from portfolio data

Test Coverage

  • TypeScript compiler validates data structure
  • getDiagnostics: No errors

Security Notes

  • Uses placeholder contact info (not real PII)

Action Items

  • Note: No action items required - implementation is complete and correct