Primary question: Does the Apache 2.0 plus commercial-restriction license fit your intended personal vs. commercial use?
RepoDaily adoption score
RepoDaily rates this as 87/100 (strong) for adoption: evidence, installation path, production risk, differentiation, license clarity, and AI/agent fit are scored from the article sources and adoption notes.
5 source(s) across 4 source category/categories, plus a RepoDaily-specific evidence module when available.
7 workflow step(s), 6 next-action step(s), and 6 command/install signal(s) were detected.
Trending momentum is +118 stars, with maintenance/release/issue signals counted when present.
Risk is marked medium, with 4 security note(s) and 3 explicit skip condition(s).
3 opportunity lens item(s), 4 alternative(s), and 4 type-specific section(s) support differentiation.
License source or license wording is present.
3 AI/agent-related signal(s) were detected in the article text and metadata.
Project overview
Magic Resume (JOYCEQL/magic-resume) is a TypeScript online resume editor that combines a modern web stack with AI-assisted writing. The repository lists TanStack Start, Tiptap, Tailwind CSS, Zustand, Shadcn/ui, and Framer Motion as its core stack, and the README explicitly calls out features like real-time preview, custom themes, dark mode, PDF export, auto-save, and local storage.
The project positions itself as a free personal tool, with an official hosted site at https://magicv.art. However, the LICENSE file attaches commercial restrictions on top of Apache 2.0: SaaS/PaaS use, enterprise embedding, and secondary commercial development all require a separate commercial license. This makes the repo unusual for a trending open-source project, because personal and commercial rights diverge sharply.
Recent changelog entries show active iteration. Version 2.0.7 added undo/redo, storage safety checks, and custom section deletion. Version 2.0.6 shipped a Swiss resume template, resume duplication, inline title editing, and conflict resolution for resume file synchronization. The package.json shows concrete dependencies such as @google/generative-ai, puppeteer, pdfjs-dist, html2pdf.js, and sharp, which back the AI and export features.
Why it is trending now
- 118 stars in the trending period with a rank of 16 on RepoDaily, driven by renewed interest in self-hosted AI resume tools.
- Version 2.0.7 shipped undo/redo, error-safe persistence in the resume store, and storage safety checks, addressing core editing reliability.
- Version 2.0.6 added a Swiss template, resume duplication, and robust resume file synchronization with conflict resolution.
- The stack uses recognizable libraries: TanStack Start, Tiptap, Tailwind CSS, Zustand, Shadcn/ui, and Framer Motion.
- The README lists Trendshift visibility, which correlates with social discovery and stars.
Problem it solves
- Job seekers often need a local, privacy-respecting resume editor rather than uploading sensitive work history to opaque third-party SaaS.
- AI-assisted writing is increasingly expected, but many open-source resume builders lack first-class model integration.
- PDF export quality and single-page auto-fitting are common pain points in resume tooling.
- Self-hosting a resume editor usually requires stitching together a frontend, a state store, an AI client, and a PDF pipeline.
How it works
- Clone the repository with git clone git@github.com:JOYCEQL/magic-resume.git and enter the directory.
- Run pnpm install to install dependencies; the project pins pnpm@10.3.0 as its package manager.
- Run pnpm dev to start the Vite dev server and open http://localhost:3000.
- Edit resume content through the Tiptap-based editor; changes are stored locally using Zustand and browser local storage.
- Use AI-assisted writing via the @google/generative-ai dependency, with custom model support noted as completed on the roadmap.
- Export the result to PDF using the export pipeline that includes puppeteer, pdfjs-dist, html2pdf.js, and sharp.
- Deploy with pnpm build or use docker compose up -d, which builds the image and starts the container in the background.
Architecture Read
Magic Resume is a TanStack Start application built with Vite (vite dev, vite build) and a custom Node production server (node server.mjs). State management is handled by Zustand, and the editing surface is built on Tiptap with extensions for color, highlight, link, list, text-align, text-style, and underline.
PDF export is not a single library but a layered pipeline: html2canvas, html2pdf.js, pdfjs-dist, puppeteer, puppeteer-core, @sparticuz/chromium, chrome-aws-lambda, and sharp are all present in package.json. This suggests export can run in both client and server contexts.
AI capabilities are wired through @google/generative-ai and streamdown, with roadmap items for AI-assisted writing and custom models already checked off.
Deployment Notes
- Dockerfile uses node:20-alpine as the base, enables corepack, and runs pnpm install --frozen-lockfile in a deps stage.
- The production image runs as a non-root user nodeapp (uid 1001) under group nodejs (gid 1001).
- The container exposes port 3000 with HOSTNAME=0.0.0.0 and CMD ["node", "server.mjs"].
- Docker Compose is supported: running docker compose up -d builds the application image and starts the container in the background.
- Without Docker, pnpm build produces the Vite build, and pnpm start runs node server.mjs.
Maintenance Risk
The changelog shows a single primary contributor, JOYCEQL, across v2.0.5, v2.0.6, and v2.0.7, with a small number of additional contributors (Jul1en_lin, Zpekii, Liu Zhening) appearing in v2.0.6. Bus factor is a real consideration.
The LICENSE file grants the project maintainers the right to adjust the open-source license and additional terms, and states that contributed code may be used commercially. Contributors and forks should read Section III before contributing.
Alternative Matrix
- RxResuverse/resumake: LaTeX-style resume generation, more developer-oriented, less AI-focused.
- Reactive Resume (AmruthPillai/reactive-resume): full-featured open-source resume builder with a larger community and broader template selection.
- OpenResume (xitanggg/open-resume): simpler React-based resume builder focused on ATS-friendly PDF output.
- FlowCV / Zety: commercial SaaS resume builders with polished UX but no self-hosting path.
Who should pay attention?
Good fit if
- Developers who want a self-hosted resume editor with local storage and AI writing for personal use.
- Teams evaluating TanStack Start, Tiptap, and puppeteer-based PDF pipelines as a reference implementation.
- Contributors interested in resume template design, undo/redo state, or export quality improvements.
Skip for now if
- Anyone planning to offer the software as a SaaS, PaaS, or public tool without obtaining a commercial license.
- Enterprises intending to embed the code into closed-source products or internal business systems.
- Users who need guaranteed long-term maintenance from a large organization rather than a primary-individual maintainer.
Risks and cautions
The codebase is modern and deployable, but the Apache 2.0 plus commercial-restriction license and single-maintainer model create adoption friction.
- Commercial SaaS/PaaS use, enterprise embedding, and secondary commercial development all require a paid commercial license per the LICENSE file.
- Contributors must accept that their code may be used commercially by the maintainer.
- The project has a narrow contributor base, with JOYCEQL as the primary author across recent releases.
- AI integration depends on @google/generative-ai, so users must supply their own model access and consider API costs.
- The Dockerfile runs the production container as non-root user nodeapp (uid 1001), reducing privilege exposure.
- Resume data is stored locally in the browser, which keeps personal content off remote servers by default.
- The pnpm install step uses --frozen-lockfile in Docker, which prevents silent dependency drift during builds.
- AI features rely on external model APIs; users should review how prompt and resume content are transmitted to the model provider.
Alternatives to compare
| Approach | When to use | Trade-off |
|---|---|---|
Reactive Resume | When you need a mature, community-supported open-source resume builder with more templates and no commercial-use clause on top of MIT. | Free, MIT-licensed, self-hostable. |
OpenResume | When you want a lightweight React resume builder focused on ATS-friendly PDF export. | Free and open-source. |
resumake | When you prefer LaTeX-based resume generation with deterministic styling. | Free and open-source. |
FlowCV | When you want a polished hosted SaaS resume builder and do not need self-hosting. | Commercial, subscription-based. |
What this trend reveals
Template Marketplace
The roadmap lists more resume templates and more export formats as unchecked items. A contributor could build a template pack aligned with the Swiss template pattern introduced in v2.0.6.
Check the generate:template-snapshots.ts script and confirm whether templates are registered through a pluggable schema before contributing.
Import Pipeline
Importing PDF and Markdown is on the roadmap. pdfjs-dist and turndown are already dependencies, which lowers the engineering cost of a Markdown/PDF import feature.
Prototype a Markdown importer using turndown and confirm the resume store schema accepts imported sections.
Self-Hosted Career Site
Online resume hosting is on the roadmap and not yet complete. A self-hosted hosting mode could pair with the existing Docker deployment.
Review server.mjs and the TanStack Start routing setup to determine whether a public hosting mode can be added cleanly.
RepoDaily verdict
Magic Resume is a capable TanStack Start resume editor with AI writing, real-time preview, and a layered PDF pipeline, but its Apache 2.0 plus commercial-restriction license makes it best suited for personal self-hosting rather than SaaS deployment.