Files
Reactive-Resume/packages/api/package.json
T
Amruth Pillai 725be158c0 feat(deploy): deploy Vercel as frontend and backend services
Vercel now deploys Reactive Resume as two services in one project:
`frontend` serves the static Vite build from apps/web/dist, and
`backend` runs the Hono server Function from apps/server. Top-level
rewrites send server-owned paths (/api, /uploads, /mcp, /.well-known,
robots.txt, sitemap.xml, llms.txt, schema.json, index.html) and every
path without a file extension to `backend`, so HTML shells keep their
injected SEO metadata. Paths with a file extension go to `frontend`.

The service builder needs a few accommodations:

- apps/server/vercel.mjs replaces api/index.mjs as the entrypoint,
  because a service entrypoint must exist before the build runs.
- `outputDirectory: "."` stops the builder from using the Docker
  entrypoint in dist/ as the Function handler.
- The builder loads external CommonJS dependencies through pnpm links
  that it leaves out of the Function. ioredis and react-reconciler are
  now bundled with their dependencies, and bcrypt is replaced with
  bcryptjs, which reads and writes the same $2b$ hashes.

The Vercel compatibility workflow now builds with the services
framework and loads a copy of the backend Function outside the
checkout, so a dependency missing from the Function fails CI. The stale
PDFKit trace checks are removed.

Existing Vercel installations must set Framework Preset to Services
before redeploying; the self-hosting guide documents this.
2026-09-30 00:17:24 +02:00

79 lines
2.9 KiB
JSON

{
"name": "@reactive-resume/api",
"version": "0.0.0",
"type": "module",
"private": true,
"exports": {
"./context": "./src/context.ts",
"./features/agent/runs": "./src/features/agent/runs.ts",
"./features/agent/streams": "./src/features/agent/streams.ts",
"./features/flags": "./src/features/flags/index.ts",
"./features/resume/export": "./src/features/resume/export.ts",
"./features/resume/legacy-styles-migration": "./src/features/resume/legacy-styles-migration.ts",
"./features/resume/public-pdf": "./src/features/resume/public-pdf.ts",
"./features/resume/social-meta": "./src/features/resume/social-meta.ts",
"./features/storage": "./src/features/storage/index.ts",
"./routers": "./src/routers/index.ts",
"./features/storage/transport": "./src/features/storage/transport.ts"
},
"scripts": {
"typecheck": "tsgo --noEmit",
"test": "vitest run --passWithNoTests",
"test:coverage": "vitest run --coverage --passWithNoTests",
"test:ci": "vitest run --reporter=default --reporter=github-actions --reporter=json --reporter=junit --outputFile.json=reports/vitest-results.json --outputFile.junit=reports/vitest-junit.xml --passWithNoTests",
"test:agent": "vitest run --reporter=agent --reporter=json --outputFile.json=reports/vitest-results.json --passWithNoTests"
},
"dependencies": {
"@ai-sdk/anthropic": "^4.0.68",
"@ai-sdk/cerebras": "^3.0.59",
"@ai-sdk/cohere": "^4.0.52",
"@ai-sdk/deepseek": "^3.0.56",
"@ai-sdk/fireworks": "^3.0.62",
"@ai-sdk/google": "^4.0.85",
"@ai-sdk/groq": "^4.0.52",
"@ai-sdk/mistral": "^4.0.54",
"@ai-sdk/openai": "^4.0.81",
"@ai-sdk/openai-compatible": "^3.0.59",
"@ai-sdk/perplexity": "^5.0.3",
"@ai-sdk/togetherai": "^3.0.60",
"@ai-sdk/xai": "^5.0.12",
"@aws-sdk/client-s3": "^3.1143.0",
"@orpc/client": "^1.15.4",
"@orpc/experimental-ratelimit": "^1.15.4",
"@orpc/server": "^1.15.4",
"@reactive-resume/ai": "workspace:*",
"@reactive-resume/auth": "workspace:*",
"@reactive-resume/db": "workspace:*",
"@reactive-resume/env": "workspace:*",
"@reactive-resume/pdf": "workspace:*",
"@reactive-resume/resume": "workspace:*",
"@reactive-resume/schema": "workspace:*",
"@reactive-resume/utils": "workspace:*",
"@vercel/blob": "^2.8.0",
"ai": "^7.0.122",
"bcryptjs": "^3.0.3",
"better-auth": "1.7.6",
"drizzle-orm": "1.0.0-rc.4",
"drizzle-zod": "1.0.0-beta.14-a36c63d",
"fflate": "^0.8.3",
"ioredis": "^6.0.0",
"jsonrepair": "^3.15.0",
"ollama-ai-provider-v2": "^4.0.1",
"resumable-stream": "^2.2.13",
"sanitize-html": "^2.17.7",
"sharp": "^0.35.5",
"tokenx": "^2.1.0",
"ts-pattern": "^5.9.0",
"zod": "^4.6.5"
},
"devDependencies": {
"@reactive-resume/config": "workspace:*",
"@types/pg": "^8.23.1",
"@types/sanitize-html": "^2.16.2",
"@typescript/native-preview": "7.0.0-dev.20260707.2",
"es-toolkit": "^1.52.0",
"pg": "^8.23.0",
"typescript": "^7.0.2"
}
}