Skip to content
Caramel-PuddingPublic

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

AVAILABLE TO SEE HERE

Dynamic PDF Resume Website

A modern, responsive resume website built with Next.js 15 and React 19 that dynamically parses a PDF resume to generate a professional web presentation.

πŸš€ Features

  • Dynamic PDF Parsing: Automatically reads and extracts structured data from LinkedIn-exported PDF resumes
  • Server-Side Rendering: Fast initial page loads with Next.js App Router
  • Modern Tech Stack: Built with Next.js 15, React 19, TypeScript, and Tailwind CSS 4.0
  • Responsive Design: Mobile-first design that looks great on all devices
  • Dark Mode Support: Built-in dark mode with system preference detection
  • Type Safety: Full TypeScript coverage with strict mode enabled
  • Performance Optimized: Turbopack for fast builds and development
  • Code Quality: Comprehensive ESLint configuration with security and accessibility rules

πŸ› οΈ Technology Stack

Core Framework

  • Next.js 15 - React framework with App Router
  • React 19 - Latest React with concurrent features
  • TypeScript 5 - Type safety and enhanced developer experience

Styling & UI

  • Tailwind CSS 4.0 - Utility-first CSS framework
  • Lucide React - Beautiful, customizable icons
  • CSS Grid & Flexbox - Modern layout techniques

PDF Processing

  • pdf-parse - Server-side PDF text extraction
  • Node.js Runtime - Required for PDF processing capabilities

Developer Experience

  • ESLint 9 - Code linting with flat config
  • Prettier - Code formatting
  • Husky - Git hooks for quality assurance
  • Vitest - Fast unit testing framework
  • TypeScript Strict Mode - Enhanced type checking

πŸ“‹ Prerequisites

  • Node.js 18.17+
  • npm, yarn, pnpm, or bun
  • A PDF resume (preferably LinkedIn-exported format)

πŸš€ Getting Started

1. Clone and Install

git clone <repository-url>
cd Resume
npm install

2. Add Your Resume

Place your PDF resume at public/Profile.pdf. The parser is optimized for LinkedIn-exported resumes but can handle other formats.

3. Run Development Server

npm run dev

Open http://localhost:3000 to see your resume website.

4. Build for Production

npm run build
npm start

πŸ“ Available Scripts

Development

  • npm run dev - Start development server with Turbopack
  • npm run build - Build optimized production bundle
  • npm start - Start production server

Code Quality

  • npm run lint - Run ESLint checks (0 warnings policy)
  • npm run lint:fix - Auto-fix linting issues
  • npm run type-check - Run TypeScript type checking
  • npm run validate - Run all checks (type-check + lint + tests)

Testing

  • npm run test - Run tests in watch mode
  • npm run test:run - Run tests once and exit
  • npm run test:ui - Open Vitest UI
  • npm run test:coverage - Generate test coverage report

Maintenance

  • npm run clean - Clear Next.js and build caches
  • npm run clean:full - Full cleanup including coverage reports

πŸ—οΈ Project Structure

src/
β”œβ”€β”€ app/                    # Next.js App Router
β”‚   β”œβ”€β”€ layout.tsx         # Root layout with metadata
β”‚   └── page.tsx           # Main page (async, calls PDF parser)
β”œβ”€β”€ components/            # React components
β”‚   β”œβ”€β”€ About.tsx          # About section with summary
β”‚   β”œβ”€β”€ Experience.tsx     # Work experience timeline
β”‚   β”œβ”€β”€ Header.tsx         # Navigation and contact info
β”‚   └── Footer.tsx         # Social links and download
β”œβ”€β”€ utils/                 # Utility functions
β”‚   └── resume-from-pdf.ts # Core PDF parsing logic
β”œβ”€β”€ types/                 # TypeScript definitions
β”‚   └── resume.ts          # Resume data structures
└── __tests__/             # Test files
    └── page.test.tsx      # Basic page rendering tests

public/
└── Profile.pdf            # Your resume PDF (place here)

πŸ”§ Configuration Files

  • next.config.ts - Next.js configuration with PDF parsing setup
  • eslint.config.mjs - Comprehensive ESLint rules for modern development
  • tsconfig.json - TypeScript configuration with strict mode
  • tailwind.config.ts - Tailwind CSS 4.0 configuration
  • vitest.config.mts - Test configuration with PDF mocking

πŸ“Š PDF Parsing Architecture

The application uses a sophisticated PDF parsing system:

1. Text Extraction

  • Uses pdf-parse library for raw text extraction
  • Handles various PDF encoding formats
  • Preserves document structure and spacing

2. Section Detection

  • Identifies resume sections (Contact, Summary, Experience, etc.)
  • Uses pattern matching for section headers
  • Handles variations in formatting

3. Experience Parsing

  • Date-anchored parsing for work experience
  • Extracts company names, roles, dates, and locations
  • Parses project details and technology stacks
  • Handles complex nested information

4. Data Normalization

  • Unicode normalization for consistent text
  • Link extraction and validation
  • Technology stack categorization
  • Contact information formatting

🎨 Customization

Styling

The project uses Tailwind CSS 4.0 for styling. Key customization points:

  • Colors: Modify the color palette in tailwind.config.ts
  • Typography: Font stacks and sizing defined in global styles
  • Components: Each component has its own styling in the respective .tsx file

PDF Parser

To adapt the parser for different resume formats:

  1. Modify patterns in src/utils/resume-from-pdf.ts
  2. Update type definitions in src/types/resume.ts
  3. Adjust component rendering logic as needed

Content Structure

The resume data structure supports:

  • Contact information with social links
  • Professional summary with highlights
  • Work experience with detailed project sections
  • Technology stacks and skills
  • Education and certifications

🚦 Development Workflow

Code Quality Standards

  • TypeScript Strict Mode: All code must pass strict type checking
  • ESLint Rules: Comprehensive rules covering security, accessibility, and code quality
  • Zero Warnings Policy: Build fails if any ESLint warnings exist
  • Testing: Unit tests for critical functionality
  • Git Hooks: Pre-commit hooks ensure code quality

Recommended Development Flow

  1. Make changes in development mode (npm run dev)
  2. Run validation suite (npm run validate)
  3. Fix any issues before committing
  4. Test production build (npm run build)

🌐 Deployment

Vercel (Recommended)

The easiest deployment option:

# Install Vercel CLI
npm i -g vercel

# Deploy
vercel

Other Platforms

The application can be deployed on any platform supporting Node.js:

  • Netlify: Add build command npm run build
  • Railway: Supports Next.js out of the box
  • Digital Ocean: Use App Platform with Node.js preset

Environment Considerations

  • Ensure Node.js runtime is available for PDF parsing
  • Upload your Profile.pdf to the public directory
  • Set appropriate memory limits for PDF processing

πŸ”’ Security Features

  • Content Security Policy: Configured for safe PDF processing
  • Input Validation: PDF content is sanitized and validated
  • Dependency Security: Regular security updates and vulnerability scanning
  • TypeScript Safety: Prevents common runtime errors

πŸ§ͺ Testing

The project features a robust testing infrastructure with comprehensive test coverage across multiple test suites:

Testing Framework

  • Vitest: Fast, modern testing framework with native TypeScript support
  • React Testing Library: Component testing with user-centric approach
  • jsdom: Browser environment simulation for DOM testing

Test Coverage

  • UI Utilities: Comprehensive testing of helper functions (cn(), getDomain(), etc.)
  • Component Testing: Full coverage of React components with accessibility checks
  • PDF Parser: Mocked PDF processing for consistent, fast test execution
  • Error Boundaries: Robust error handling and recovery testing
  • Integration Tests: End-to-end component interaction testing

Testing Approach

  • Isolated Test Runs: Proper cleanup between tests prevents interference
  • Flexible Matchers: Regex-based text matching for complex DOM structures
  • Multiple Element Handling: Smart queries for duplicate content scenarios
  • Accessibility Testing: ARIA attributes and semantic structure validation
  • Error Simulation: Comprehensive error boundary and failure case testing

Test Organization

src/__tests__/
β”œβ”€β”€ component tests/       # React component behavior
β”œβ”€β”€ utility tests/         # Pure function testing
β”œβ”€β”€ integration tests/     # Multi-component scenarios
β”œβ”€β”€ setup.ts              # Global test configuration
└── helpers/              # Shared testing utilities

Quality Metrics

  • High Test Pass Rate: Comprehensive test coverage across all major components
  • Zero Warning Policy: All tests must pass without warnings
  • Consistent Patterns: Standardized testing approaches across components
  • CI/CD Ready: Automated testing in continuous integration pipelines

πŸ“ˆ Performance

  • Turbopack: Fast development builds and hot reloading
  • Static Generation: Pre-rendered pages for optimal performance
  • Image Optimization: Built-in Next.js image optimization
  • Bundle Analysis: Monitor and optimize bundle size
  • Caching Strategy: Efficient caching for PDF parsing results

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run the validation suite (npm run validate)
  5. Submit a pull request

πŸ“„ License

This project is open source and available under the MIT License.

πŸ”— Learn More

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages