- Refine blog typography with optimized font sizes and line heights for better readability
- Adjust heading margins and sizes (h1-h4) for improved visual hierarchy
- Implement custom bullet styling with primary color indicators for lists
- Add highlighted key phrases styling with left border accent for emphasized content
- Create new BlogShare component for social sharing functionality
- Add Callout and PullQuote content components for enhanced blog formatting
- Introduce resume-button.css for improved button styling
- Update blog post template with slug-based routing support
- Add new blog post "Career Change: From Huawei to Frontend" in English and Persian
- Enhance portfolio components (Hero, Skills, AIStack, etc.) with refined styling
- Improve RTL language support with better spacing and alignment for Persian content
- Add blog hero image asset (big-career-change.webp)
- Update i18n translations for new blog content and UI improvements
- Optimize code block and inline code styling with CSS variables for consistency
- Refine blockquote styling with better contrast and spacing
- Update LanguageSwitcher component width from 76px to 77px on small screens for better alignment
- Adjust PDF generation CSS padding from 1rem to 1.2rem for improved content spacing
- Increase section margin-bottom from 1.5rem to 1.85rem for better visual separation
- Enhance section heading margins and padding for improved readability
- Adjust work experience block spacing from 1rem to 1.15rem
- Refine bullet list spacing with margin-bottom increased to 0.38rem
- Improve line-height values across paragraphs (1.82rem) and list items (1.52rem) for better readability
- Update CSS comments to reflect readability improvements rather than page-fitting constraints
- Ensure consistent spacing between web and PDF versions while maintaining 2-page layout
- Remove outdated SSG testing guide documentation
- Remove duplicate test-ssg.md file
- Add LinkedIn post draft for future content
- Refine ResumeHeader spacing and contact information layout
- Consolidate contact details into single line with improved gap spacing
- Add whitespace-nowrap to prevent contact info wrapping
- Update resume data with refined professional information
- Improve ResumePreview component styling and spacing
- Reduce top margin on header from mb-10 to mb-8 for better visual hierarchy
- Update section spacing from mb-8 to mb-12 for improved visual hierarchy
- Refine heading padding and margins for consistent section styling
- Adjust work experience highlights spacing and add leading-relaxed for readability
- Implement markdown bold text parsing in job highlights using new composable
- Add color-coded icons in resume header (red for location, green for phone, amber for email, blue for website)
- Reorganize contact information into two lines for better layout organization
- Standardize icon sizing with explicit w-4 h-4 dimensions across header
- Create useMarkdownText composable for markdown formatting utilities
- Update resume data and PDF export endpoint to support enhanced styling
- Improve print styling consistency across all resume components
- Update section spacing from mb-6 to mb-8 for better visual separation
- Enhance heading styles with text-blue-700, increased padding (pb-1.5), and letter-spacing
- Improve typography hierarchy by changing font-semibold to font-bold for titles
- Increase spacing between list items and skill categories for better readability
- Add font-medium styling to dates and institution names for improved emphasis
- Enhance bullet point styling with explicit color and font-weight in experience highlights
- Reorganize ResumeHeader contact section with improved link styling and layout
- Promote Portfolio website link with bold styling and blue color for better visibility
- Adjust print-specific spacing to maintain consistency across screen and print layouts
- Update resume data with refined content structure
- Archive outdated resume content technical specification document
- Remove serverless function memory and duration settings for PDF endpoint
- Simplify vercel.json configuration by eliminating unused function constraints
- Keep rewrites configuration intact for analytics script routing
- Reduces configuration complexity as PDF generation may be handled differently
- Update development acceleration metric from 40% to up to 50%
- Reflect more accurate performance improvement claims based on recent project outcomes
- Enhance credibility of AI-first engineering approach in professional positioning
- Add print media queries to main.css for proper PDF export formatting
- Ensure white background and light color scheme when printing
- Refactor ResumeAdditionalInfo component to display skills in categorized format
- Remove languages and certifications from additional info section
- Add ResumeLanguages component for dedicated language display
- Optimize spacing with print-specific margin utilities across all resume sections
- Improve text wrapping and hyphenation in ResumeExperience component
- Enhance ResumeHeader layout with print-optimized image sizing
- Update resume data structure to support new component organization
- Add research documentation on mentioning AI skills in resume
- Update PDF export endpoint to work with refactored component structure
- Remove outdated chat history file
- Update professional summary to reflect accurate experience level (3+ years instead of 5+)
- Simplify job highlights for NexaPortal position to focus on key achievements
- Limit technical skills display to top 3 categories for cleaner resume layout
- Update contact information (email and portfolio URL) with current details
- Refactor ResumeAdditionalInfo component to use computed property for key skills filtering
- Modify certifications display format to show issuer and summary instead of name and issuer
- Adjust spacing in additional information section (mb-3 to mb-2 for languages)
- Add chat history documentation for resume content strategy research
- Update resume content tech spec documentation with latest guidelines
- Add "View Resume" button to Hero component with responsive design (desktop/mobile variants)
- Implement gradient styling with hover animations and pulse effect on desktop button
- Wrap Hero content in flex container for proper button alignment
- Remove client:only directive from TopNav component in default layout
- Add semantic <main> tag wrapper around slot content in default layout
- Implement layoutKey computed property to force re-render on route changes
- Add scrollToTop meta and onMounted scroll reset to resume page
- Add "Back to Home" navigation button to resume page with print-safe styling
- Improve resume page background with white/dark mode support
- Add print media query to hide navigation elements during printing
- Enhance user navigation flow between home and resume pages
- Update resume data with comprehensive professional summary and optimized work experience highlights
- Add resume content tech-spec and strategy documentation for 2025 best practices
- Create resume guidelines reference document for content consistency
- Enhance PDF composable with openPdf preview function alongside downloadPdf
- Expand CSS banner hiding rules to block certificates.dev promotional content
- Add research documentation on resume best practices and ATS optimization
- Update i18n translations for resume content in English and Persian
- Include sample Ali Arghyani resume PDF template in design assets
- Refactor resume.en.ts with improved professional positioning and achievement metrics
- Update API route documentation for PDF generation story artifacts
- Establish foundation for Epic 4 sprint planning with tech specifications
Story 3-1: Create PDF Generation API Route
- Add server/api/resume/pdf.get.ts with Puppeteer integration
- Support both dev (puppeteer) and prod (puppeteer-core + chromium)
- Navigate to /resume?print=true for WYSIWYG capture
- Return PDF with proper headers (Content-Type, Content-Disposition)
- Add error handling with 500 status and JSON response
- Update vercel.json with function config (memory: 1024, maxDuration: 10)
Story 3-2: Create PDF Download Composable
- Add app/composables/useResumePdf.ts
- Implement isGenerating ref for loading state
- Implement downloadPdf() with blob handling
- Add toast notifications for errors
- Revoke object URL to prevent memory leaks
Story 3-3: Connect Download Button to PDF Generation
- Update ResumeDownloadButton.vue to use useResumePdf()
- Bind :loading and :disabled to isGenerating
- Connect @click to downloadPdf
- Remove placeholder handler
Dependencies Added:
- puppeteer ^24.31.0
- puppeteer-core ^24.31.0
- @sparticuz/chromium ^141.0.0
Closes Epic 3
Closes Story 3-1, 3-2, 3-3
- Add useResumePdf composable for client-side PDF download handling
- Implement /api/resume/pdf server endpoint for PDF generation
- Add puppeteer and @sparticuz/chromium dependencies for PDF rendering
- Add puppeteer-core for headless browser automation
- Update Vercel configuration to support PDF generation
- Include loading state management and error handling with toast notifications
- Implement blob download with automatic filename generation
- Add memory leak prevention through object URL revocation