Files
Reactive-Resume/package.json
T
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

181 lines
5.7 KiB
JSON

{
"name": "reactive-resume",
"version": "5.0.12",
"description": "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume.",
"license": "MIT",
"author": {
"name": "Amruth Pillai",
"email": "hello@amruthpillai.com",
"url": "https://amruthpillai.com"
},
"repository": {
"type": "git",
"url": "https://github.com/amruthpillai/reactive-resume.git"
},
"type": "module",
"scripts": {
"build": "vp build",
"db:generate": "drizzle-kit generate",
"db:migrate": "drizzle-kit migrate",
"db:pull": "drizzle-kit pull",
"db:push": "drizzle-kit push",
"db:studio": "drizzle-kit studio",
"dev": "vp dev",
"docs:dev": "cd docs && npx mint dev",
"fmt": "vp fmt --check",
"fmt:fix": "vp fmt",
"knip": "knip",
"lingui:extract": "lingui extract --clean --overwrite",
"lint": "vp lint --type-aware",
"lint:fix": "vp lint --type-aware --fix",
"prepare": "vp config",
"preview": "vp preview",
"start": "node .output/server/index.mjs",
"test": "vp test",
"typecheck": "tsgo --noEmit"
},
"dependencies": {
"@ai-sdk/anthropic": "^3.0.58",
"@ai-sdk/google": "^3.0.43",
"@ai-sdk/openai": "^3.0.41",
"@ai-sdk/react": "^3.0.118",
"@aws-sdk/client-s3": "^3.1012.0",
"@base-ui/react": "^1.3.0",
"@better-auth/api-key": "^1.5.5",
"@better-auth/drizzle-adapter": "^1.5.5",
"@better-auth/infra": "^0.1.12",
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@fontsource-variable/ibm-plex-sans": "^5.2.8",
"@hookform/resolvers": "^5.2.2",
"@lingui/core": "^5.9.3",
"@lingui/react": "^5.9.3",
"@modelcontextprotocol/sdk": "^1.27.1",
"@monaco-editor/react": "4.8.0-rc.3",
"@orpc/client": "^1.13.8",
"@orpc/json-schema": "^1.13.8",
"@orpc/openapi": "^1.13.8",
"@orpc/server": "^1.13.8",
"@orpc/tanstack-query": "^1.13.8",
"@orpc/zod": "^1.13.8",
"@phosphor-icons/react": "^2.1.10",
"@phosphor-icons/web": "^2.1.2",
"@sindresorhus/slugify": "^3.0.0",
"@t3-oss/env-core": "^0.13.10",
"@tanstack/react-query": "^5.91.0",
"@tanstack/react-router": "^1.167.5",
"@tanstack/react-router-ssr-query": "^1.166.9",
"@tanstack/react-start": "^1.166.17",
"@tanstack/zod-adapter": "^1.166.9",
"@tiptap/extension-highlight": "^3.20.4",
"@tiptap/extension-table": "^3.20.4",
"@tiptap/extension-text-align": "^3.20.4",
"@tiptap/pm": "^3.20.4",
"@tiptap/react": "^3.20.4",
"@tiptap/starter-kit": "^3.20.4",
"@uiw/color-convert": "^2.9.6",
"@uiw/react-color-colorful": "^2.9.6",
"ai": "^6.0.116",
"ai-sdk-ollama": "^3.8.1",
"bcrypt": "^6.0.0",
"better-auth": "^1.5.5",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"docx": "^9.6.1",
"dompurify": "^3.3.3",
"drizzle-orm": "1.0.0-beta.18-7eb39f0",
"drizzle-zod": "^1.0.0-beta.14-a36c63d",
"es-toolkit": "^1.45.1",
"fast-deep-equal": "^3.1.3",
"fast-json-patch": "^3.1.1",
"fuse.js": "^7.1.0",
"immer": "^11.1.4",
"input-otp": "^1.4.2",
"js-cookie": "^3.0.5",
"jsonrepair": "^3.13.3",
"monaco-editor": "^0.55.1",
"motion": "^12.38.0",
"nodemailer": "^8.0.3",
"pg": "^8.20.0",
"puppeteer-core": "^24.39.1",
"qrcode.react": "^4.2.0",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"react-hook-form": "^7.71.2",
"react-hotkeys-hook": "^5.2.4",
"react-resizable-panels": "^4.7.3",
"react-window": "^2.2.7",
"react-zoom-pan-pinch": "^3.7.0",
"shadcn": "^4.0.8",
"sharp": "^0.34.5",
"sonner": "^2.0.7",
"srvx": "^0.11.12",
"tailwind-merge": "^3.5.0",
"tailwindcss": "^4.2.2",
"ts-pattern": "^5.9.0",
"tw-animate-css": "^1.4.0",
"unique-names-generator": "^4.7.1",
"usehooks-ts": "^3.1.1",
"uuid": "^13.0.0",
"workbox-window": "^7.4.0",
"zod": "^4.3.6",
"zundo": "^2.3.0",
"zustand": "^5.0.12"
},
"devDependencies": {
"@babel/core": "^7.29.0",
"@lingui/babel-plugin-lingui-macro": "^5.9.3",
"@lingui/cli": "^5.9.3",
"@lingui/vite-plugin": "^5.9.3",
"@rolldown/plugin-babel": "^0.2.2",
"@tailwindcss/vite": "^4.2.2",
"@types/bcrypt": "^6.0.0",
"@types/js-cookie": "^3.0.6",
"@types/node": "^25.5.0",
"@types/nodemailer": "^7.0.11",
"@types/pg": "^8.18.0",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@typescript/native-preview": "7.0.0-dev.20260319.1",
"@vitejs/plugin-react": "^6.0.1",
"babel-plugin-macros": "^3.1.0",
"drizzle-kit": "1.0.0-beta.18-7eb39f0",
"jsdom": "^29.0.0",
"knip": "^5.88.0",
"nitro": "3.0.260311-beta",
"node-addon-api": "^8.6.0",
"node-gyp": "^12.2.0",
"npm-check-updates": "^19.6.5",
"tsx": "^4.21.0",
"vite": "npm:@voidzero-dev/vite-plus-core@latest",
"vite-plugin-pwa": "^1.2.0",
"vite-plus": "latest",
"vitest": "npm:@voidzero-dev/vite-plus-test@latest"
},
"packageManager": "pnpm@10.32.1+sha512.a706938f0e89ac1456b6563eab4edf1d1faf3368d1191fc5c59790e96dc918e4456ab2e67d613de1043d2e8c81f87303e6b40d4ffeca9df15ef1ad567348f2be",
"pnpm": {
"overrides": {
"@isaacs/brace-expansion": "^5.0.1",
"ajv": "^8.18.0",
"basic-ftp": "^5.2.0",
"fast-xml-parser": "^5.3.8",
"hono": "^4.11.10",
"lodash": "^4.17.23",
"markdown-it": "^14.1.1",
"minimatch": "^10.2.3",
"qs": "^6.14.2",
"serialize-javascript": "^7.0.4",
"vite": "npm:@voidzero-dev/vite-plus-core@latest",
"vitest": "npm:@voidzero-dev/vite-plus-test@latest"
},
"onlyBuiltDependencies": [
"bcrypt",
"esbuild",
"msw",
"sharp"
]
}
}