react-cv is an open-source ReactJS resume/CV template that presents a personal CV as a hosted website and generates a downloadable PDF from that same page through a serverless headless Chrome pipeline. The template takes CV content written as React components and outputs both a live site (demo at cv.crisboarna.com) and a PDF file, and it is maintained by crisboarna under the CC0 public-domain license.
What is react-cv?
react-cv is a free, open-source resume/CV template built with ReactJS, TypeScript, and Webpack, organized as an Nx monorepo with three apps: web, exporter, and infra. It renders a personal CV as a website and provides a Download button that produces a PDF copy using Puppeteer running in an AWS Lambda. The infrastructure is defined with AWS CDK and includes S3, CloudFront, ECR, and Lambda resources.
Key Features
- Live website and PDF output — One ReactJS source renders the CV as a website and, via a Download button, produces a PDF using Chrome's built-in print-to-PDF functionality.
- Serverless PDF generation — An AWS Lambda running a custom Docker container based on the Lambda NodeJS AL3 environment loads the live page with Puppeteer, ensuring selectable, extractable text and a consistent viewport.
- CDN-hosted delivery — The website is served from S3 behind CloudFront using an Origin Access Identity, and the generated PDF is pre-rendered during deployment and stored in S3 for on-demand download with low latency.
- Infrastructure as Code — AWS CDK defines ECR, exporter Lambda, and web stacks, and a CloudFormation custom resource triggers PDF generation during deployment; cfn-diagram generates resource diagrams.
- Nx monorepo structure — The project is split into web, exporter, and infra applications with TypeScript, Webpack, and Docker, enabling per-app build, lint, and test commands via Nx.
- Automated quality gates — GitHub Actions CI, Snyk dependency scanning, Codecov coverage reporting, semantic-release versioning, and Commitizen-friendly commit workflows are configured.
- Enforced test coverage — Jest is used for web and exporter; AWS CDK Assertions is used for infra, with 100% coverage thresholds on exporter and infra and roughly 76–87% coverage on web.
Who should use react-cv?
- Developers building a personal CV site — Clone the repo, replace the React components with your own details, and deploy a live CV with PDF download using the documented CDK commands.
- Job seekers wanting a standout resume — Get a CV that exists both as a hosted web page and a downloadable PDF with selectable text, without maintaining separate documents.
- Developers interested in serverless PDF generation — Study the exporter and infra code to reuse the Puppeteer-in-Lambda and CloudFormation custom resource pattern for any web page.
- Open-source contributors — Submit pull requests to improve the template; the README outlines a contribution workflow and the repository welcomes PRs.
What can you do with react-cv?
- Build a personal CV site: customize the ReactJS components with your experience and education, then deploy to get a live URL and a downloadable PDF of your CV.
- Learn serverless PDF generation: follow the exporter and infra apps to see how a headless Chrome Lambda generates a PDF from a live URL and stores it in S3 via a CloudFormation custom resource.
- Set up a production-grade CI/CD pipeline: use the included GitHub Actions, Snyk, Codecov, semantic-release, and staged CDK deployments (ECR, Exporter, Web) to ship updates.
How does react-cv work?
The CV content is written as a ReactJS website. When you request the PDF, the exporter Lambda runs a Docker container based on the Lambda NodeJS AL3 runtime, launches a headless Chrome browser via Puppeteer, loads the live CV page, and uses Chrome's built-in PDF printing to generate the file. During CDK Web stack deployment, a CloudFormation custom resource invokes the Lambda once and stores the resulting PDF in S3 so subsequent downloads are fast and cost-effective.
FAQ
Is react-cv free?
Yes, react-cv is open source and released under the CC0 public-domain license, so you can use, modify, and distribute it without restriction.
What does react-cv do?
react-cv renders a personal CV as a ReactJS website and generates a PDF copy of that CV using a headless Chrome browser inside an AWS Lambda. The PDF is pre-rendered during deployment and made available for download from S3.
How do I deploy react-cv?
Use nx deploy infra for a single command, or deploy the individual stacks in order: ECR, Exporter, then Web, using the CDK deploy commands documented in the README. Deployment order matters because later stacks depend on earlier ones.
What tech stack does react-cv use?
The template uses ReactJS, TypeScript, Webpack, Nx Monorepo, AWS CDK, S3, CloudFront, ECR, Lambda, Docker, Puppeteer, and Jest, with GitHub Actions for CI.
Does the generated PDF have selectable text?
Yes, because the PDF is generated with Chrome's built-in print-to-PDF feature in a headless browser, the output has selectable, extractable text and a standard rendering viewport.
