Luka Fagundes 3e16586d7a feat(jobs): add job listings with AI-powered resume tailoring (#2788)
* feat: add job listings feature with JSearch API integration, resume tailoring, and per-user rate limiting

* feat(jobs): add search filters UI, filter helper functions with tests, and job_search_quota DB migration

* feat(jobs): add pagination with 30 results per page and prev/next navigation

* refactor(job-detail): Adjust sheet width and scroll area height

* feat(ai): Add resume tailoring feature and prompt

* refactor(ai): Revise tailoring prompts and schema for full skill rewrite

* feat(ai): Add reference tailoring and output sanitization

* feat(testing): Add Vitest testing framework

* fix: address PR review - atomic rate limiting, calendar-month quota, skill sync warning, gitignore routeTree.gen.ts

* feat(jobs): Add location filter to job listings

* feat(job-listings): Add DOCX document generation

* feat(job-listings): Enable search by location and on Enter key

* feat(job-listings): Split location filter into city, state, and country

* feat(jobs): Implement job search adapter and JSearch

* Update 'locale/' directory

* feat(resume): Simplify filename generation and add tests

* fix(JSearch): reduce JSearch API usage to 1 request per search to prevent quota exhaustion

* fix(JSearch): Displayed quota amounts on Job Search functionality and settings fixed to pull from RapidAPI/JSearch response

* fix(internal rate limit): Removed internal rate limit and .env.example addition, cloud based implementation handles.

* style(job-filters): Adjust layout of switch filters

* fix(typecheck): Fixed typecheck issues introduced to sync with origin

* feat(jobs): Enhance tailor dialog with apply link and tags

* feat(locale files): updated locale files with the latest build

* feat(jobs): Add job search provider and integrate testing functionality

- Introduced `createJobSearchProvider` function to instantiate a JSearchProvider.
- Enhanced job search provider with methods for searching jobs, retrieving job details, and testing connection.
- Updated `vite.config.ts` to include new testing configurations and plugins.
- Added new dependencies in `package.json` for testing and document generation.
- Removed obsolete `vitest.config.ts` file.
- Improved job search provider tests for better coverage and reliability.

* refactor: Update job search routes and remove obsolete test configurations

- Removed the test configuration from `vite.config.ts`.
- Updated localization files to reflect changes in job search routes, renaming references from `jobs` to `job-search` across multiple languages.
- Adjusted autofix workflow to run formatting without the `--fix` flag for better control over code style adjustments.

* chore: Update dependencies and improve animation performance

- Added `jsdom` as a new dependency in `package.json`.
- Updated `vite-plus` and `vitest` to the latest versions for better compatibility.
- Enhanced animation components with `willChange` styles to optimize rendering performance.
- Adjusted various UI components to improve responsiveness and visual effects.
- Removed obsolete job details functionality from the job search provider and related tests.

* chore(locales): Update localization files for job search improvements

- Modified job search related strings to remove references to "this month" for a more concise format.
- Updated file references in localization entries to reflect changes in the job search component structure.
- Added new strings for API usage, quota remaining, and job fetching error messages across multiple languages.
- Removed obsolete "Monthly Usage" string from localization files.

* chore(dependencies): Update @typescript/native-preview to version 7.0.0-dev.20260319.1

---------

Co-authored-by: Amruth Pillai <im.amruth@gmail.com>
2026-03-19 09:48:02 +01:00
2026-03-18 22:03:24 +01:00
2026-03-18 22:03:24 +01:00
2026-03-18 22:08:12 +01:00
2026-03-18 22:03:24 +01:00
2026-03-18 22:03:24 +01:00
2026-03-18 22:03:24 +01:00
2026-03-18 22:03:24 +01:00
2026-03-18 22:03:24 +01:00
2026-03-18 22:03:24 +01:00
2026-01-19 23:31:54 +01:00
2026-03-18 09:54:10 +01:00
2026-03-18 22:03:24 +01:00
2026-03-18 22:03:24 +01:00
2026-03-18 22:03:24 +01:00
2026-03-18 22:03:24 +01:00
2026-03-18 22:03:24 +01:00
2026-01-21 23:44:48 +01:00
2026-03-18 22:03:24 +01:00
2026-03-18 22:03:24 +01:00

Reactive Resume

Reactive Resume

Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume.

Get Started · Learn More

Reactive Resume version GitHub Stars License Docker Pulls Discord Crowdin Sponsors Donations


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.

Features

Resume Building

  • Real-time preview as you type
  • Multiple export formats (PDF, JSON)
  • 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
  • Custom CSS for advanced 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
Azurill
Bronzor
Bronzor
Chikorita
Chikorita
Ditto
Ditto
Gengar
Gengar
Glalie
Glalie
Kakuna
Kakuna
Lapras
Lapras
Leafish
Leafish
Onyx
Onyx
Pikachu
Pikachu
Rhyhorn
Rhyhorn
Ditgar
Ditgar

Quick Start

The quickest way to run Reactive Resume locally:

# Clone the repository
git clone https://github.com/amruthpillai/reactive-resume.git
cd reactive-resume

# Start all services
docker compose up -d

# Access the app
open http://localhost:3000

Build with Ona

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 Radix UI
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
  • Printer — Headless Chromium service for PDF and screenshot generation
  • SeaweedFS (optional) — S3-compatible storage for file uploads

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:

GitHub Sponsors Open Collective

Other ways to support:

  • Star this repository
  • Report bugs and suggest features
  • Improve documentation
  • Help with translations

Star History

Star History Chart

Contributing

Contributions make open-source thrive. Whether fixing a typo or adding a feature, all contributions are welcome.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

See the development setup guide for detailed instructions on how to set up the project locally.

License

MIT — do whatever you want with it.

S
Description
A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today!
Readme MIT 304 MiB
Languages
TypeScript 99.5%
CSS 0.2%
JavaScript 0.1%