A modern, responsive personal website built with Next.js, featuring a markdown-to-HTML resume with PDF export functionality. Designed for GitHub Pages deployment with custom domain support.
- Markdown Resume: Write your resume in markdown with frontmatter metadata
- Bilingual Support: Korean/English resume with language toggle
- PDF Export: Automatic PDF generation with print-optimized styling
- Google Analytics: Privacy-first GA4 integration with GDPR compliance
- Responsive Design: Mobile-first design with Tailwind CSS
- Dark Mode: Automatic dark/light theme switching
- SEO Optimized: Meta tags, Open Graph, structured data
- Iconify Integration: Beautiful icons throughout the interface
- GitHub Pages: Automated deployment with GitHub Actions
- TypeScript: Fully typed codebase with strict type checking
- Testing: Comprehensive test suite with Jest and Testing Library
-
Clone and Install
git clone https://github.com/rajephon/rajephon-dev.git cd rajephon-dev npm install -
Add Your Resume Edit
src/data/resume.mdwith your information:--- name: "Your Name" title: "Your Title" email: "[email protected]" # ... other fields --- # Your Name ## Experience # Your experience here...
-
Start Development Server
npm run dev
Visit
http://localhost:3000 -
Build and Deploy
npm run build npm run deploy
rajephon-dev/
├── src/
│ ├── components/ # React components
│ │ ├── Layout.tsx
│ │ ├── ResumeRenderer.tsx
│ │ ├── LanguageToggle.tsx
│ │ ├── Analytics.tsx
│ │ └── ConsentBanner.tsx
│ ├── pages/ # Next.js pages
│ │ ├── index.tsx # Homepage
│ │ └── resume.tsx # Resume page
│ ├── lib/ # Utilities and config
│ │ ├── config.ts
│ │ ├── markdown.ts
│ │ ├── analytics.ts # GA4 tracking
│ │ ├── consent.ts # GDPR compliance
│ │ └── resume-schema.ts
│ ├── hooks/ # React hooks
│ │ ├── useAnalytics.ts
│ │ ├── useConsent.ts
│ │ └── useLanguageToggle.ts
│ ├── styles/ # CSS and themes
│ │ ├── globals.css
│ │ ├── resume-base.css
│ │ └── themes/
│ └── data/
│ ├── resume.md # English resume
│ └── resume-ko.md # Korean resume
├── scripts/ # Build scripts
├── .github/workflows/ # GitHub Actions
└── public/ # Static assets
Edit src/data/resume.md following the markdown-resume format:
- Use frontmatter for metadata (name, email, etc.)
- Include iconify icons for visual enhancement
- Follow the structured format for consistent styling
- Base styles:
src/styles/resume-base.css - Themes:
src/styles/themes/ - Print styles:
src/styles/print.css
Update src/lib/config.ts with your details:
- Site title and description
- Social links
- SEO settings
- Domain configuration
- Analytics settings
-
Get GA4 Measurement ID:
- Create a Google Analytics 4 property
- Copy the Measurement ID (format: G-XXXXXXXXXX)
-
Local Development:
# Create .env.local file NEXT_PUBLIC_GA_ID=G-XXXXXXXXXX -
GitHub Pages Deployment:
- Go to Repository Settings → Secrets and variables → Actions
- Add new secret:
NEXT_PUBLIC_GA_IDwith your GA4 ID - Analytics will be automatically enabled on deployment
-
Privacy & GDPR Compliance:
- Consent banner automatically appears for EU users
- Respects Do Not Track browser settings
- Users can manage consent preferences
- Analytics disabled without valid consent
# Run all tests
npm test
# Run with coverage
npm run test:coverage
# Run E2E tests
npm run test:e2e
# Type checking
npm run type-checkPDF is generated automatically during deployment:
# Generate PDF locally
npm run generate-pdf
# Validate resume structure
npm run validate-resume- Push to
mainbranch - GitHub Actions builds and deploys automatically
- Site available at
https://yourusername.github.io/repository-name
- Add
CNAMEfile with your domain - Configure DNS records:
Type: A, Name: @, Value: 185.199.108.153 Type: A, Name: @, Value: 185.199.109.153 Type: A, Name: @, Value: 185.199.110.153 Type: A, Name: @, Value: 185.199.111.153
- Framework: Next.js 15 with TypeScript
- Styling: Tailwind CSS with custom themes
- Markdown: Remark/Unified with GFM and math support
- Icons: Iconify with 100,000+ icons
- PDF: Puppeteer for server-side generation
- Testing: Jest, React Testing Library, Playwright
- Deployment: GitHub Actions → GitHub Pages
- ✅ Core Web Vitals optimized
- ✅ Static generation for fast loading
- ✅ Responsive images and assets
- ✅ Print-optimized PDF generation
- ✅ SEO and accessibility compliant
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests:
npm test - Follow Conventional Commits for commit messages
- Submit a pull request
MIT License - see LICENSE for details.
- Inspired by markdown-resume
- Built with Next.js
- Styled with Tailwind CSS
- Icons by Iconify
Built with ❤️ by Rajephon