{ "name": "@reactive-resume/source", "description": "A free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume.", "version": "4.5.3", "license": "MIT", "private": true, "packageManager": "pnpm@10.20.0", "author": { "name": "Amruth Pillai", "url": "https://amruthpillai.com", "email": "hello@amruthpillai.com" }, "repository": { "type": "git", "url": "https://github.com/AmruthPillai/Reactive-Resume.git" }, "scripts": { "dev": "nx run-many -t serve", "test": "pnpm vitest run", "prebuild": "pnpm prisma:generate", "build": "nx run-many -t build", "prestart": "pnpm prisma:migrate", "start": "node dist/apps/server/main", "lint": "nx run-many -t lint", "lint:fix": "nx run-many -t lint --fix", "crowdin:sync": "crowdin push && crowdin pull", "prisma:generate": "pnpm exec prisma generate", "prisma:migrate": "pnpm exec prisma migrate deploy", "prisma:migrate:dev": "pnpm exec prisma migrate dev", "messages:extract": "pnpm exec lingui extract --clean --overwrite" }, "devDependencies": { "@babel/core": "^7.28.5", "@babel/preset-react": "^7.28.5", "@lingui/cli": "^4.14.1", "@lingui/conf": "^4.14.1", "@lingui/swc-plugin": "^4.1.0", "@lingui/vite-plugin": "^4.14.1", "@nestjs/schematics": "^10.2.3", "@nestjs/testing": "^10.4.20", "@nx/eslint": "^19.8.14", "@nx/eslint-plugin": "^19.8.14", "@nx/jest": "^19.8.14", "@nx/js": "^19.8.14", "@nx/nest": "^19.8.14", "@nx/node": "^19.8.14", "@nx/react": "^19.8.14", "@nx/vite": "^19.8.14", "@nx/web": "^19.8.14", "@nx/webpack": "^19.8.14", "@nx/workspace": "^19.8.14", "@swc-node/register": "^1.11.1", "@swc/cli": "^0.4.0", "@swc/core": "^1.13.5", "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/forms": "^0.5.10", "@tailwindcss/typography": "^0.5.19", "@tanstack/eslint-plugin-query": "^5.91.2", "@testing-library/react": "^16.3.0", "@tiptap/core": "^2.27.1", "@types/async-retry": "^1.4.9", "@types/bcryptjs": "^2.4.6", "@types/cookie-parser": "^1.4.10", "@types/express": "^4.17.25", "@types/express-session": "^1.18.2", "@types/file-saver": "^2.0.7", "@types/jest": "^29.5.14", "@types/lodash.debounce": "^4.0.9", "@types/lodash.get": "^4.4.9", "@types/lodash.set": "^4.3.9", "@types/multer": "^1.4.13", "@types/node": "^22.19.0", "@types/nodemailer": "^6.4.21", "@types/papaparse": "^5.3.16", "@types/passport": "^1.0.17", "@types/passport-github2": "^1.2.9", "@types/passport-google-oauth20": "^2.0.17", "@types/passport-local": "^1.0.38", "@types/passport-openidconnect": "^0.1.3", "@types/prismjs": "^1.26.5", "@types/react": "^18.3.26", "@types/react-dom": "^18.3.7", "@types/react-is": "^18.3.1", "@types/retry": "^0.12.5", "@types/sanitize-html": "^2.16.0", "@types/webfontloader": "^1.6.38", "@typescript-eslint/eslint-plugin": "^8.46.3", "@typescript-eslint/parser": "^8.46.3", "@vitejs/plugin-react": "^4.7.0", "@vitejs/plugin-react-swc": "^3.11.0", "@vitest/coverage-v8": "^2.1.9", "@vitest/ui": "^2.1.9", "autoprefixer": "^10.4.21", "babel-plugin-macros": "^3.1.0", "eslint": "^8.57.1", "eslint-config-prettier": "^9.1.2", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-lingui": "^0.11.0", "eslint-plugin-prettier": "^5.5.4", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-tailwindcss": "^3.18.2", "eslint-plugin-unicorn": "^55.0.0", "eslint-plugin-unused-imports": "^3.2.0", "jest": "^29.7.0", "jest-environment-node": "^29.7.0", "jsdom": "^25.0.1", "nx": "^19.8.14", "postcss": "^8.5.6", "postcss-import": "^16.1.1", "postcss-nested": "^6.2.0", "prettier": "^3.6.2", "prettier-plugin-tailwindcss": "^0.7.1", "tailwindcss": "^3.4.18", "tailwindcss-animate": "^1.0.7", "ts-jest": "^29.4.5", "ts-node": "^10.9.2", "turbo": "^2.6.0", "typescript": "^5.9.3", "vite": "^5.4.21", "vite-plugin-dts": "^4.5.4", "vitest": "^2.1.9" }, "dependencies": { "@dnd-kit/core": "^6.3.1", "@dnd-kit/modifiers": "^7.0.0", "@dnd-kit/sortable": "^8.0.0", "@dnd-kit/utilities": "^3.2.2", "@fontsource/ibm-plex-sans": "^5.2.8", "@hookform/resolvers": "^3.10.0", "@lingui/core": "^4.14.1", "@lingui/detect-locale": "^4.14.1", "@lingui/macro": "^4.14.1", "@lingui/react": "^4.14.1", "@nestjs-modules/mailer": "^2.0.2", "@nestjs/axios": "^3.1.3", "@nestjs/common": "^10.4.20", "@nestjs/config": "^3.3.0", "@nestjs/core": "^10.4.20", "@nestjs/jwt": "^10.2.0", "@nestjs/passport": "^10.0.3", "@nestjs/platform-express": "^10.4.20", "@nestjs/serve-static": "^4.0.2", "@nestjs/swagger": "^7.4.2", "@nestjs/terminus": "^10.3.0", "@paralleldrive/cuid2": "^2.3.1", "@phosphor-icons/react": "^2.1.10", "@prisma/client": "^5.22.0", "@radix-ui/react-accordion": "^1.2.12", "@radix-ui/react-alert-dialog": "^1.1.15", "@radix-ui/react-aspect-ratio": "^1.1.7", "@radix-ui/react-avatar": "^1.1.10", "@radix-ui/react-checkbox": "^1.3.3", "@radix-ui/react-context-menu": "^2.2.16", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-hover-card": "^1.1.15", "@radix-ui/react-label": "^2.1.7", "@radix-ui/react-popover": "^1.1.15", "@radix-ui/react-portal": "^1.1.9", "@radix-ui/react-scroll-area": "^1.2.10", "@radix-ui/react-select": "^2.2.6", "@radix-ui/react-separator": "^1.1.7", "@radix-ui/react-slider": "^1.3.6", "@radix-ui/react-slot": "^1.2.3", "@radix-ui/react-switch": "^1.2.6", "@radix-ui/react-tabs": "^1.1.13", "@radix-ui/react-toast": "^1.2.15", "@radix-ui/react-toggle": "^1.1.10", "@radix-ui/react-toggle-group": "^1.1.11", "@radix-ui/react-tooltip": "^1.2.8", "@radix-ui/react-visually-hidden": "^1.2.3", "@sindresorhus/slugify": "^2.2.1", "@swc/helpers": "^0.5.17", "@tanstack/react-query": "^5.90.6", "@tiptap/extension-highlight": "^2.27.1", "@tiptap/extension-image": "^2.27.1", "@tiptap/extension-link": "^2.27.1", "@tiptap/extension-text-align": "^2.27.1", "@tiptap/extension-underline": "^2.27.1", "@tiptap/pm": "^2.27.1", "@tiptap/react": "^2.27.1", "@tiptap/starter-kit": "^2.27.1", "@types/passport-jwt": "^4.0.1", "async-retry": "^1.3.3", "axios": "^1.13.1", "axios-auth-refresh": "^3.3.6", "bcryptjs": "^2.4.3", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", "cookie-parser": "^1.4.7", "dayjs": "^1.11.19", "deepmerge": "^4.3.1", "express-session": "^1.18.2", "file-saver": "^2.0.5", "framer-motion": "^11.18.2", "fuzzy": "^0.1.3", "helmet": "^7.2.0", "immer": "^10.2.0", "jszip": "^3.10.1", "lodash.debounce": "^4.0.8", "lodash.get": "^4.4.2", "lodash.set": "^4.3.2", "minio": "^8.0.6", "nest-raven": "^10.1.0", "nestjs-minio-client": "^2.2.0", "nestjs-prisma": "^0.26.0", "nestjs-zod": "^3.0.0", "nodemailer": "^7.0.10", "openai": "^4.104.0", "otplib": "^12.0.1", "papaparse": "^5.5.3", "passport": "^0.7.0", "passport-github2": "^0.1.12", "passport-google-oauth20": "^2.0.0", "passport-jwt": "^4.0.1", "passport-local": "^1.0.0", "passport-openidconnect": "^0.1.2", "pdf-lib": "^1.17.1", "prisma": "^5.22.0", "prismjs": "^1.30.0", "puppeteer": "^23.11.1", "qrcode.react": "^4.2.0", "react": "^18.3.1", "react-colorful": "^5.6.1", "react-dom": "^18.3.1", "react-helmet-async": "^2.0.5", "react-hook-form": "^7.66.0", "react-parallax-tilt": "^1.7.311", "react-resizable-panels": "^2.1.9", "react-router": "^7.9.5", "react-simple-code-editor": "^0.14.1", "react-zoom-pan-pinch": "^3.7.0", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.2", "sanitize-html": "^2.17.0", "sharp": "^0.34.4", "tailwind-merge": "^2.6.0", "tslib": "^2.8.1", "unique-names-generator": "^4.7.1", "use-breakpoint": "^4.0.10", "use-keyboard-shortcut": "^1.1.6", "usehooks-ts": "^3.1.1", "webfontloader": "^1.6.28", "zod": "^3.25.76", "zod-to-json-schema": "^3.24.6", "zundo": "^2.3.0", "zustand": "^4.5.7" }, "engines": { "node": ">=22.13.1" }, "prisma": { "schema": "tools/prisma/schema.prisma" } }