* docs: remove .superpowers * feat(dsh-plugin): bring the DeepSeek Harness plugin into the monorepo Moves dsh-plugin-reactive-resume out of its own repository and into packages/dsh-plugin. It stays a published, public npm package — the only one here — but now builds, typechecks, tests, and lints under the same turbo tasks as everything else. The move pays for itself in the drift guard. Standalone, the plugin kept a generated snapshot of the tool names scraped from the live server card at https://rxresu.me, plus a weekly CI job to notice when that snapshot went stale. Sitting next to packages/mcp, it reads MCP_TOOL_NAME directly, so a tool rename breaks the prompt guide on the same pull request instead of days later. The snapshot, the fetch script, and the scheduled job are gone. packages/mcp gains a ./tool-names export so that import goes through the public export map rather than another workspace's src. Also flips autoInstallPeers off. The DeepSeek Harness rc packages declare peers that are host-supplied and, in one case (@deepseek-ai/dsh-type-meta), not published at all, so auto-install 404s the whole workspace. Turning it off drops only optional peers elsewhere; @neodrag/core was the single hard peer that had been arriving implicitly, and it is now declared where it is used. Full typecheck and test suites pass, and pnpm peers check reports nothing new beyond the pre-existing drizzle-orm range mismatch. Tests move from test/ to colocated src/*.test.ts and the build output from lib/ to dist/ to match repository conventions. * fix(dsh-plugin): ship a bundle manifest and target the current Harness `dsh plugin add` warned that the package "declares no dsh.bundle — installed as a plain dependency, not a profile layer", and it was right. Every other Harness plugin, in-box and third-party, ships a cordis.patch.yml and points dsh.bundle.patch at it; that declaration is what joins a package to a profile's bundle stack. Without it the package installed and then sat inert, and the README's hand-written insert row was a workaround for the gap rather than the intended way in. The peer ranges were also a generation behind. They asked for @deepseek-ai/dsh-mcp-client and dsh-system-prompt at ^0.0.1-rc.1, which cannot match the 0.1.0-rc.6 a current harness ships, so the plugin could never have resolved against the thing it targets. Both APIs are unchanged across the bump — StreamableHttpConfig still takes the same six fields and PromptSection still takes name/order/text — so this is a range correction, not a migration. That bump pays for itself elsewhere. The old generation peer-depended on @deepseek-ai/dsh-type-meta, which was never published, and working around that 404 is why merging this package turned autoInstallPeers off for the whole repository and pulled @neodrag/core in by hand. The new generation dropped that peer and publishes every other one, so both changes are reverted and pnpm-workspace.yaml is back to what it was. Because a bundle patch mounts the plugin the moment it is installed, a required apiKey would fail config validation and take the profile down before the user ever had a chance to mint a key. It now defaults to empty and apply() warns and mounts nothing, matching how dsh-honcho-memory handles the same problem. Verified by packing the tarball and installing it into a clean project with default pnpm settings: it resolves, imports, and reports its exports.
Reactive Resume
Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume.
Reactive Resume makes building resumes straightforward. Pick a template, fill in your details, and export to PDF—no account required for basic use. For those who want more control, the entire application can be self-hosted on your own infrastructure.
Built with privacy as a core principle, Reactive Resume gives you complete ownership of your data. The codebase is fully open-source under the MIT license, with no tracking, no ads, and no hidden costs.
Sponsors
Reactive Resume stays free, open-source, and independent because companies choose to support the work behind it. Thank you to every sponsor who helps fund hosting, maintenance, and continued development for the community.
Atlas Cloud supports Reactive Resume as a project sponsor. Atlas Cloud provides a unified AI platform for developers, with access to hundreds of models for chat, image generation, video generation, media processing, and GPU cloud workloads through one API key, one endpoint, and one billing account.
If your company would like to sponsor Reactive Resume, email hello@amruthpillai.com.
Features
Resume Building
- Real-time preview as you type
- Multiple export formats (PDF, JSON, DOCX)
- Drag-and-drop section ordering
- Custom sections for any content type
- Rich text editor with formatting support
Templates
- Professionally designed templates
- A4 and Letter size support
- Customizable colors, fonts, and spacing
- Structured Style Rules for section and text styling
Privacy & Control
- Self-host on your own infrastructure
- No tracking or analytics by default
- Full data export at any time
- Delete your data permanently with one click
Extras
- AI integration (OpenAI, Google Gemini, Anthropic Claude)
- Multi-language support
- Share resumes via unique links
- Import from JSON Resume format
- Dark mode support
- Passkey and two-factor authentication
Templates
Azurill |
Bronzor |
Chikorita |
Ditto |
Gengar |
Glalie |
Kakuna |
Lapras |
Leafish |
Onyx |
Pikachu |
Rhyhorn |
Ditgar |
Meowth |
Scizor |
Quick Start
The quickest way to run Reactive Resume locally:
# Clone the repository
git clone --depth=1 https://github.com/amruthpillai/reactive-resume.git
cd reactive-resume
# Start all services
docker compose up -d
# Access the app
open http://localhost:3000
For detailed setup instructions, environment configuration, and self-hosting guides, see the documentation.
Tech Stack
| Category | Technology |
|---|---|
| Framework | TanStack Start (React 19, Vite) |
| Runtime | Node.js |
| Language | TypeScript |
| Database | PostgreSQL with Drizzle ORM |
| API | ORPC (Type-safe RPC) |
| Auth | Better Auth |
| Styling | Tailwind CSS |
| UI Components | Base UI + shadcn-style package |
| State Management | Zustand + TanStack Query |
Documentation
Comprehensive guides are available at docs.rxresu.me:
| Guide | Description |
|---|---|
| Getting Started | First-time setup and basic usage |
| Self-Hosting | Deploy on your own server |
| Development Setup | Local development environment |
| Project Architecture | Codebase structure and patterns |
| Exporting Your Resume | PDF and JSON export options |
Self-Hosting
Reactive Resume can be self-hosted using Docker. The stack includes:
- PostgreSQL — Database for storing user data and resumes
- SeaweedFS (optional) — S3-compatible storage for file uploads
From v5.1.0 onwards — PDF generation now runs entirely client-side via
@react-pdf/renderer. New deployments no longer require Browserless, Chromium, or any external print service as a dependency. ThePRINTER_*andBROWSERLESS_*environment variables are no longer read and can be removed from your.env.
Pull the latest image from Docker Hub or GitHub Container Registry:
# Docker Hub
docker pull amruthpillai/reactive-resume:latest
# GitHub Container Registry
docker pull ghcr.io/amruthpillai/reactive-resume:latest
See the self-hosting guide for complete instructions.
Support
Reactive Resume is and always will be free and open-source. If it has helped you land a job or saved you time, please consider supporting continued development:
Other ways to support:
- Star this repository
- Report reproducible bugs and suggest actionable features
- Help other users in GitHub Discussions
- Improve documentation
- Help with translations
Star History
Contributing
Contributions make open-source thrive. Whether fixing a typo or adding a feature, all contributions are welcome.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
See the development setup guide for detailed instructions on how to set up the project locally.
Maintainers review the status: needs triage queue
weekly. Triaged bugs become status: confirmed; feature proposals become status: accepted; reports that need details become
status: needs info.
License
MIT — do whatever you want with it.














