Magic Resume
JOYCEQL/magic-resume — TanStack Start と Zustand で作られた、AI支援つきオンライン履歴書エディタ。
Magic Resume は、履歴書を入力しながらプレビューし、テンプレート・テーマ・並び替え・PDF出力まで一画面で扱うオンラインエディタ。README ではリアルタイムプレビュー、カスタムテーマ、ダークモード、自動保存、ローカル保存、AI支援ライティングが主要機能として挙げられている。
設計の中心は「履歴書データを一つの構造体として持ち、編集UI・プレビュー・テンプレート・エクスポートへ同じデータを流す」こと。見た目はテンプレートで差し替え、内容は Zustand store に集約している。
空の履歴書か初期データつき履歴書を生成。表示言語に応じて初期状態も切り替える。
基本情報、職歴、学歴、プロジェクト、資格、独自セクションを store 経由で更新。
テンプレート registry から選ばれた React コンポーネントが同じ履歴書データを描画。
テーマ色、フォント、余白、セクション順、表示/非表示、1ページ自動縮小を調整。
JSON、Markdown、PDFとして保存。必要に応じてローカルディレクトリとの同期も行う。
Resume Store
useResumeStore が複数履歴書、アクティブ履歴書、各セクション更新、テンプレート変更、ファイル同期をまとめる。永続化キーは resume-storage。
ResumeData
基本情報、学歴、職歴、プロジェクト、資格、カスタム項目、グローバル設定を一つの型に集める。表示順と有効/無効は menuSections が持つ。
Template Registry
classic、modern、left-right、timeline、minimalist、elegant、creative、editorial を registry で統一管理する。
Rich Text
Tiptap と Markdown 変換の補助関数で、本文フィールドをリッチテキストとして編集し、Markdown出力時は HTML 由来の内容を整える。
Server Routes
/api/polish、/api/grammar、/api/resume-import が外部モデル呼び出しを担当。Gemini、Doubao、DeepSeek、OpenAI互換エンドポイントを扱う。
PDF / JSON / MD
JSONとMarkdownはブラウザ側で生成し、PDFはプレビュー DOM と抽出したCSSをPDF生成サービスへ渡す。画像は data URL 化して出力を安定させる。
| 経路 | 役割 | 返却 |
|---|---|---|
/api/polish | Markdown形式の履歴書文面を、より専門的で簡潔な表現へ改善する。 | ストリームテキスト |
/api/grammar | 中国語履歴書の誤字と重大な句読点ミスだけを検出する。 | JSON |
/api/resume-import | テキストまたは画像から履歴書構造を抽出し、アプリのデータ形へ近づける。 | { resume } |
| 形式 | 処理 | 主な用途 |
|---|---|---|
| JSON | ResumeData をそのまま整形保存。 | バックアップ、再インポート、同期 |
| Markdown | 表示中セクションを順序付きで本文化し、HTML本文はMarkdownへ変換。 | テキスト提出、LLM入力 |
| プレビューDOMを複製し、CSSと画像を整えてPDF生成サービスへ送る。 | 応募書類として配布 |
ai-config-storage に選択モデルとモデルID/エンドポイント設定を保持。
モデル種別ごとの URL、ヘッダ、必須設定を AI_MODEL_CONFIGS で切り替え。
文章改善、校正ハイライト、インポート結果を store とプレビューに戻す。
README上の最短起動手順はシンプル。パッケージマネージャは pnpm@10.3.0 が指定されている。
git clone git@github.com:JOYCEQL/magic-resume.git
cd magic-resume
pnpm install
pnpm dev
ビルドは pnpm build。Docker Compose ではアプリイメージをビルドしてバックグラウンド起動する手順がREADMEにある。
ライセンスファイルは Apache License 2.0 本文に加えて、商用利用に関する追加制限を明記している。個人の非商用利用は無料、SaaS提供・商用製品への組み込み・商用運用目的の二次開発には事前の商用ライセンス取得が必要、という構成。
resume-storage に永続化され、許可されたディレクトリへJSON同期できる。ブラウザ環境と権限に依存するため、ファイル同期は補助経路として理解するとよい。
- GitHub: JOYCEQL/magic-resume — プロジェクト本体
- README.md — 機能、技術スタック、起動手順、ロードマップ
- LICENSE — Apache License 2.0 と追加の商用利用制限