A ready-to-use, multi-language CV and Cover Letter system for Full Stack Developers.
Simply edit the HTML files with your information, then run one command to automatically generate professional PDF versions in all 8 languages — no browser needed.
Built with pure HTML & CSS. Print-ready, ATS-friendly, and fully customizable.
fullstack-developer-cv/
│
├── src/
│ ├── cv/ ← CV HTML files (8 languages)
│ └── cover-letters/ ← Cover Letter HTML files (8 languages)
│
├── output/
│ ├── cv/ ← Generated CV PDFs
│ └── cover-letters/ ← Generated Cover Letter PDFs
│
├── assets/ ← Static files (profile photo, etc.)
├── scripts/
│ ├── generate_cvs.js ← Node.js — CVs only
│ ├── generate_cover_letters.js ← Node.js — Cover Letters only
│ ├── generate_all.js ← Node.js — All 16 PDFs (8 CVs + 8 CLs)
│ ├── generate_cvs.py ← Python — CVs only
│ ├── generate_cover_letters.py ← Python — Cover Letters only
│ └── generate_all.py ← Python — All 16 PDFs (8 CVs + 8 CLs)
│
├── package.json
└── README.md
| Language | File | PDF Output |
|---|---|---|
| English | cv_en.html |
cv-your-name-en.pdf |
| French | cv_fr.html |
cv-your-name-fr.pdf |
| Spanish | cv_es.html |
cv-your-name-es.pdf |
| German | cv_de.html |
cv-your-name-de.pdf |
| Dutch | cv_nl.html |
cv-your-name-nl.pdf |
| Italian | cv_it.html |
cv-your-name-it.pdf |
| Portuguese | cv_pt.html |
cv-your-name-pt.pdf |
| Arabic (RTL) | cv_ar.html |
cv-your-name-ar.pdf |
| Language | File | PDF Output |
|---|---|---|
| English | cl_en.html |
cl-your-name-en.pdf |
| French | cl_fr.html |
cl-your-name-fr.pdf |
| Spanish | cl_es.html |
cl-your-name-es.pdf |
| German | cl_de.html |
cl-your-name-de.pdf |
| Dutch | cl_nl.html |
cl-your-name-nl.pdf |
| Italian | cl_it.html |
cl-your-name-it.pdf |
| Portuguese | cl_pt.html |
cl-your-name-pt.pdf |
| Arabic (RTL) | cl_ar.html |
cl-your-name-ar.pdf |
- 8 languages including full RTL support (Arabic)
- CV + Cover Letter — complete application package per language
- ATS-friendly — clean semantic HTML, no tables, no images for content
- Print-ready — pixel-perfect A4 layout with
@media printrules - FAANG-style design — inspired by top tech industry CVs
- Automated PDF generation — one command generates all 16 PDFs
- No CSS framework — pure vanilla CSS for full control
- Professional typography — Times New Roman for Latin, Cairo for Arabic
- Fully customizable — just edit the HTML files
- Node.js installed
- Google Chrome installed
git clone https://github.com/AbdellahEdaoudi/fullstack-developer-cv.git
cd fullstack-developer-cvnpm installImportant: Open the scripts in
scripts/and replaceabdellah-edaoudiwith your own full name in all entries.
// Before:
{ html: 'cv_en.html', pdf: 'cv-abdellah-edaoudi-en.pdf' },
{ html: 'cl_en.html', pdf: 'cl-abdellah-edaoudi-en.pdf' },
// After — use your own name:
{ html: 'cv_en.html', pdf: 'cv-your-name-en.pdf' },
{ html: 'cl_en.html', pdf: 'cl-your-name-en.pdf' },- CVs: Open any
src/cv/cv_*.htmland update your name, title, contact info, skills, experience, projects, and education. - Cover Letters: Open any
src/cover-letters/cl_*.htmland personalize the content for each application.
Node.js:
npm run generate:cvs # CVs only → output/cv/
npm run generate:cover-letters # CLs only → output/cover-letters/
npm run generate:all # All 16 PDFs (8 CVs + 8 Cover Letters)Python:
npm run py:cvs
npm run py:cover-letters
npm run py:allPDFs are saved in output/cv/ and output/cover-letters/.
Open any HTML file in Google Chrome, press Ctrl+P, set margins to None, then Save as PDF.
| Tool | Purpose |
|---|---|
| HTML5 + CSS3 | CV/Cover Letter structure & style |
| Puppeteer Core | Headless Chrome PDF generation |
| Python + subprocess | Alternative PDF generation script |
| Google Fonts (Cairo) | Arabic typography |
- Profile photo: Replace
assets/profile.jpgwith your own photo. The HTML files already reference it via../../assets/profile.jpg— keep the same filename to avoid updating anything. - Colors: The primary accent color is
#1d4ed8(blue) — easy to change in the CSS. - Font size: Adjust
font-sizeinbodyto fit more or less content. - Adding sections: Follow the existing
<section>pattern.
Abdellah Edaoudi
Full Stack Web Developer
- GitHub: AbdellahEdaoudi
- LinkedIn: abdellah-edaoudi
- Portfolio: abdellah-edaoudi.vercel.app