TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기📄 Developer-oriented CV generator — write your résumé in Markdown or JSON and render a clean PDF using customizable HTML templates. Try the editor → github-cv.vercel.app
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A developer-focused CV builder. Write your CV like a README, export it as a PDF.README 전문 보기 ↗
A developer-focused CV builder. Write your CV like a README, export it as a PDF.
# Your Name
Software Engineer
[email protected] · github.com/you · City, Country
════════════════════════════════════════════════════════════
## Experience
────────────────────────────────────────────────────────────
├─ 2022–present
│ Senior Engineer @ Acme Corp
│
│ Led distributed caching project with Go and Redis.
│ Owned backend infrastructure team.
│
└─ 2019–2022
Engineer @ Beta Ltd
Full-stack development with React and Node.js.
├─ / └─) or horizontal for experience & education.json fileStack: item1, item2 into a structured array in JSON modemeta.links[] replaces the old GitHub / LinkedIn / Website fields; unlimited labelled links in the headerlocalStorage| Package | Purpose |
|---|---|
| Next.js 16 | Framework + API routes |
| React 19 | UI |
| Zustand 5 | Persisted state |
| dnd-kit | Drag-and-drop section reordering |
| Sharp | Server-side image processing for ASCII art |
| Tailwind CSS v4 | Editor UI styling |
| @vercel/analytics | Usage analytics |
PDF export uses the browser's native print API (window.print()). No Puppeteer required.
Requirements: Node.js 18+, npm
git clone https://github.com/sudokku/cvgen.git
cd cvgen
npm install
npm run dev
Open http://localhost:3000.
The style panel includes Monaspace Neon, Fira Code, JetBrains Mono, and Cascadia Code. These must be installed on your system to render.
# macOS (Homebrew)
brew install font-monaspace font-fira-code font-jetbrains-mono font-cascadia-code
The app has three panels on desktop, and a tabbed layout on mobile.
| Area | Purpose |
|---|---|
| Left sidebar — Sections tab | Add, delete, reorder sections via drag-and-drop |
| Left sidebar — Meta tab | Name, title, email, phone, location, links, profile photo |
| Left sidebar — Style tab | Preset, font, font size, base colors, semantic colors, JSON colors, render mode |
| Left sidebar — Import tab | EuroPass XML or PDF import |
| Center — Editor | Edit the selected section's content, layout, render mode, and per-section color overrides |
| Right — Preview | Live CV preview, Export PDF button |
Set the section layout to vertical or horizontal in the Editor panel.
### Role @ Company | Period
Description of what you did.
Second line of description.
### Another Role @ Company | Period
More description here.
Each entry renders as an ASCII tree in the preview:
├─ 2022–present
│ Senior Engineer @ Acme Corp
│
│ Led distributed caching project.
│
└─ 2019–2022
Engineer @ Beta Ltd
Full-stack development.
Set layout to list to render as plain markdown instead.
Languages: TypeScript · Go · Python · Rust
Frameworks: Next.js · React · Gin · FastAPI
Infra: Docker · Kubernetes · AWS · Terraform
Category labels (Languages:, Frameworks:, etc.) are coloured with the category semantic token.
In JSON render mode, each category becomes a key with an array of values.
A personal section type renders key-value pairs (date of birth, nationality, gender, etc.).
It is automatically created when importing a EuroPass document that includes demographics.
Date of birth: 15 Jun 1990
Nationality: German
Gender: Male
### Project Name
Brief description of what you built. Stack: TypeScript, React, Node.js
In JSON render mode, Stack: is parsed out and rendered as a separate array:
{
"name": "Project Name",
"description": "Brief description of what you built.",
"stack": ["TypeScript", "React", "Node.js"]
}
Plain content sections support **bold** and `code` inline formatting.
### headings, ## headings, and # headings are also rendered with appropriate weight.
Set document-wide in the Style tab:
| Mode | Behaviour |
|---|---|
md | All sections rendered as markdown-style plain text |
json | Entire CV rendered as a syntax-highlighted JSON document |
per-section | Each section independently toggles between md and json in the Editor |
Drop a EuroPass SkillsPassport file onto the Import tab (desktop sidebar) or the Import sub-tab under Meta (mobile).
| Format | How it works |
|---|---|
.xml | Parsed entirely in the browser — no server round-trip |
.pdf | Sent to /api/import (Node.js route); embedded XML is extracted from the PDF binary and returned to the client, then parsed the same way as a plain XML upload |
What is imported:
| EuroPass field | Maps to |
|---|---|
| Name, headline, email, phone, address | meta fields |
| WebsiteList | meta.links[] — labelled links (GitHub, LinkedIn, etc. auto-detected) |
| Photo (base64) | meta.photoUrl, displayed in the CV header |
| ProfileSummary | custom section — "Summary" |
| Demographics (birthdate, nationality, gender) | personal section — "Personal Information" |
| WorkExperienceList | experience section, vertical timeline layout |
| EducationList | education section, vertical timeline layout |
| Languages + ComputerSkills | skills section |
| Communication / Organisational / JobRelated skills | custom section — "Soft Skills" |
| AchievementList | one section per achievement code; projects type if code is "Projects", otherwise custom |
Your current theme and color settings are preserved on import.
Imported HTML in description fields (lists, bold, italic) is converted to Markdown.
meta.links[] is an array of { label: string; url: string } objects. They appear in the CV header after the email address.
The Meta tab has a dynamic links editor: click + add to add a new entry, edit the label and URL inline, and click × to remove.
CVs created before this feature was added may have the old github, linkedin, and website fields. The Meta tab detects these and shows a one-click Migrate to links list button.
Four built-in presets (GitHub Dark, GitHub Light, Dracula, Nord). Selecting a preset sets all color tokens at once.
background, text, muted, accent / link, border, code bg
Applied to specific content elements in both md and json render modes:
| Token | Applied to |
|---|---|
heading | ## Section Title headings |
subtitle | Section subtitle line |
period | Timeline period tokens (e.g. 2022–present) |
role / degree | Job titles, degree names |
company | Company and institution names |
category | Skills category labels |
project title | Project names |
key, string, number, punctuation — only shown when render mode includes JSON.
Each section has a collapsible Colors panel in the Editor. Any of the semantic tokens plus text, muted, and accent can be overridden per section. Overridden labels appear in blue; click × to reset an individual token or reset all to global to clear all overrides.
ascii and image render mode per photoTwo export options are available from the preview panel:
Click Quick Print. The browser print dialog opens with:
@page { margin: 0 } — no browser-added headers or footersbox-decoration-break: clone — the CV's padding is repeated at every page break, giving consistent gutters on multipage CVs-webkit-print-color-adjust: exactClick Export PDF. This sends the CV to the server, which generates the PDF server-side and embeds rich metadata:
POSTed to /api/pdf/print page (not indexed by robots), which renders the full CV with JSON-LD and Open Graph metadata tagspdf-lib post-processes the PDF:
cvgen: namespacecv-metadata.json as an embedded file — a schema.org/Person JSON-LD document mapping experience → hasOccupation, education → alumniOf, skills → knowsAboutThe exported PDF is machine-readable: any tool that can extract PDF attachments or XMP will find structured CV data inside it.
Requirements: puppeteer must be installed (npm install puppeteer). If it is not available the route returns a 500 with a hint to fall back to Quick Print.
npm test
# or
npx vitest run
Tests use Vitest + jsdom. Config is in vitest.config.ts; test files live under src/__tests__/.
MIT