Merge
Merge your GitHub Profile into a Resume.
Install / Use
/learn @R4M-0/MergeREADME
Support the Project
If Merge is useful to you and you want to support further development:
https://buymeacoffee.com/r4m0
Highlights
- Route-based resume generation via
/<github-username> - GitHub REST API ingestion with validation, caching, and rate-limit handling
- Recruiter-focused Markdown, LaTeX, and PDF resume exports
- Signal-first analysis: languages, repository quality, contribution metrics, and activity recency
- Optional AI-enhanced resume writing via OpenRouter
- Production-ready Next.js 16 App Router setup for Vercel deployment
- Animated UI with dark/light theme support and shareable username routes
Project Structure
merge/
├── app/
│ ├── [username]/page.tsx # Direct route resume generation
│ ├── api/
│ │ ├── resume/route.ts # Resume JSON endpoint
│ │ └── resume/pdf/route.ts # PDF export endpoint
│ ├── globals.css
│ ├── layout.tsx
│ └── page.tsx # Landing page
├── components/
│ └── resume-shell.tsx # Shared UI shell
├── lib/
│ ├── analyze.ts # Signal extraction and focus analysis
│ ├── generate.ts # Resume generation
│ ├── github.ts # GitHub API client and metrics collection
│ ├── pdf.ts # Markdown to PDF rendering
│ └── resume.ts # Resume pipeline orchestration + caching
├── types/
│ └── resume.ts # Shared domain types
├── examples/
│ └── sample-output.md
└── package.json
Requirements
- Node.js 20+
- npm
- GitHub token recommended for higher API rate limits
- OpenRouter API key optional for AI-enhanced writing
Quick Start
- Create
.env.local:
Quick Start
- Create
.env.local:
GITHUB_TOKEN=
OPENROUTER_API_KEY=
NEXT_PUBLIC_STAR_ME_URL=https://github.com/R4M-0/merge
- Install dependencies:
npm install
- Start development:
npm run dev
- Open:
http://localhost:3000
- Test direct username routes:
http://localhost:3000/R4M-0
Environment Variables
GITHUB_TOKEN
Optional but strongly recommended. Used to avoid low unauthenticated GitHub API rate limits.
Use a fine-grained personal access token with read access to public metadata.
OPENROUTER_API_KEY
Optional. When provided, Merge can generate stronger recruiter-style summaries and bullets using an LLM fallback/enhancement path.
If omitted, the app still works using deterministic local generation.
NEXT_PUBLIC_STAR_ME_URL
Optional. Controls the repository link behind the Star Me button in the UI.
Main Features
Resume Generation
- Enter a GitHub username or visit
/<github-username> - Generate recruiter-ready resume content from public GitHub activity
- Export the generated output as Markdown, LaTeX, or PDF
GitHub Analysis
- Public repositories
- Top repositories ranked by signal
- Language distribution
- Pull requests opened
- Pull requests merged
- Issues opened
- External repository contributions
- Last 30 / 90 day activity windows
UI / UX
- Animated landing experience
- Light and dark theme support
- Shareable route-based resume pages
- Copy and download actions for generated outputs
Deployment
- Next.js App Router
- No database required
- Vercel-friendly runtime model
- Server-side caching for generated resumes
API Endpoints
POST /api/resume
Request:
{ "username": "R4M-0" }
Response includes:
- Raw GitHub metrics
- Analysis results
- Generated Markdown
- Generated LaTeX
- Recruiter-focused summary and bullets
POST /api/resume/pdf
Request:
{ "username": "R4M-0", "markdown": "# Resume..." }
Returns downloadable PDF bytes with application/pdf.
Error Handling
Handled scenarios:
- Invalid GitHub username format
- User not found
- GitHub API rate limit exceeded
- Empty or low-activity profiles
- PDF generation failure
- Unexpected upstream/API failures
Local Commands
npm run dev
npm run lint
npm run build
npm run start
npm run typecheck
Deployment (Vercel)
- Push the repository to GitHub.
- Import it into Vercel.
- Set
GITHUB_TOKENand optionallyOPENROUTER_API_KEY. - Deploy.
This project does not require a database or extra server configuration.
