This repo is a fork of Oh My CV!, which is beautifully made — go check out their work.
Changes I made from the original:
- The default template is now as close as possible to CareerCup's resume template.
- The default color is all black.
- Uses web-safe fonts for easier and safer ATS parsing.
- Export as HTML and DOCX.
- And many more...
I'm passionate about helping anyone get a job, which is why I made this fork. Most of the modifications ensure your resume is readable by both ATS systems and humans, so you don’t have to worry about the design.
I can’t guarantee that using this will improve your job search success rate. But I hope it helps.
Highly recommend using Chromium-based browsers, e.g., Chrome or Microsoft Edge.
- Write your resume in Markdown and preview it in real time — smooth experience!
- Works offline (PWA)
- Export to A4 and US Letter PDFs
- Customize page margins, theme colors, line heights, fonts, etc.
- Add icons easily via Iconify (search icons on Icônes)
- TeX support (KaTeX)
- Cross-referencing (useful for academic CVs)
- Case correction (e.g.,
Github→GitHub) - Add line breaks (
\\[10px]) or start a new page (\newpage) like in LaTeX - Automatic page breaking
- Custom CSS support
- Manage multiple resumes
- Data is saved locally in your browser using IndexedDB browser feature (see
localForagerepo for details) - Image Gallery — upload images and reference them in your resume using Markdown or HTML (see below)
The Image Gallery screen lets you upload images and use them directly in your resume.
Once uploaded, each image gets a stable URL in the format /markdown-resume/images/<id> served by a Service Worker — no external hosting needed. You can copy the URL from the gallery and paste it into your Markdown:
Or as an HTML tag:
<img src="/markdown-resume/images/1234567890_abc123" alt="My photo" />When exporting to HTML or DOCX, image references are automatically replaced with inline base64 data URLs so the exported file is fully self-contained.
Privacy: Images are stored entirely inside your browser's IndexedDB — the same storage used for your resumes. They are never uploaded to any server and never leave your computer.
-
Clone the repository:
git clone https://github.com/junian/markdown-resume.git cd markdown-resume -
(Optional) Set up your environment variables. Copy the example file and fill in the values you need:
cp site/.env.example site/.env
See the Environment Variables section for details on each variable.
-
Run the build script:
./build.sh
-
Deploy the contents of the
.output/publicdirectory to any static hosting provider (GitHub Pages, Netlify, Vercel, Nginx, etc.).
Configuration is done via a .env file inside the site folder. You can copy site/.env.example as a starting point:
cp site/.env.example site/.env| Variable | Description |
|---|---|
NUXT_PUBLIC_GOOGLE_FONTS_KEY |
Google Fonts Developer API Key. Required to enable the font picker that lists fonts from Google Fonts. Without this key the font selection will only show locally available fonts. |
NUXT_PUBLIC_GTAG_ID |
Google Analytics 4 Measurement ID (e.g. G-XXXXXXXXXX). Enables GA4 page-view and event tracking. Leave empty to disable analytics. |
NUXT_CLARITY_ID |
Microsoft Clarity Project ID. Enables session recording and heatmap analytics. Leave empty to disable Clarity. |
NUXT_PUBLIC_DISQUS_SHORTNAME |
Disqus shortname for your site. Enables the Disqus comment section. Leave empty to hide comments. |
Clone the repo and install dependencies:
pnpm installBuild the packages:
pnpm run build:pkgStart developing / building the site:
pnpm run dev
pnpm run buildThis project is licensed under the AGPL-3.0 license. See ACKNOWLEDGMENTS for credits.
Made with ☕ by Junian.dev.
