Files
red/teressa-copeland-homes/package.json
Chandler Copeland c81e8ea838 feat(05-01): add preparePdf utility and fields/prepare API routes
- Installed @cantoo/pdf-lib for server-side PDF mutation
- Created src/lib/pdf/prepare-document.ts with preparePdf function using atomic tmp->rename write pattern
- form.flatten() called before drawing signature rectangles
- Created GET/PUT /api/documents/[id]/fields routes for signature field storage
- Created POST /api/documents/[id]/prepare route that calls preparePdf and transitions status to Sent
- Fixed pre-existing null check error in scripts/debug-inspect2.ts (Rule 3: blocking build)
- Build compiles successfully with 2 new API routes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 23:54:41 -06:00

51 lines
1.4 KiB
JSON

{
"name": "teressa-copeland-homes",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "eslint",
"db:generate": "drizzle-kit generate",
"db:migrate": "drizzle-kit migrate",
"db:seed": "tsx scripts/seed.ts",
"seed:forms": "DOTENV_CONFIG_PATH=.env.local npx tsx scripts/seed-forms.ts",
"db:studio": "drizzle-kit studio",
"scrape:forms": "DOTENV_CONFIG_PATH=.env.local npx tsx scripts/scrape-skyslope-forms.ts"
},
"dependencies": {
"@cantoo/pdf-lib": "^2.6.3",
"@vercel/blob": "^2.3.1",
"adm-zip": "^0.5.16",
"bcryptjs": "^3.0.3",
"drizzle-orm": "^0.45.1",
"lucide-react": "^0.577.0",
"next": "16.2.0",
"next-auth": "5.0.0-beta.30",
"nodemailer": "^7.0.13",
"postgres": "^3.4.8",
"react": "19.2.4",
"react-dom": "19.2.4",
"react-pdf": "^10.4.1",
"zod": "^4.3.6"
},
"devDependencies": {
"@tailwindcss/postcss": "^4",
"@types/adm-zip": "^0.5.8",
"@types/bcryptjs": "^2.4.6",
"@types/node": "^20",
"@types/nodemailer": "^7.0.11",
"@types/react": "^19",
"@types/react-dom": "^19",
"dotenv": "^17.3.1",
"drizzle-kit": "^0.31.10",
"eslint": "^9",
"eslint-config-next": "16.2.0",
"playwright": "^1.58.2",
"tailwindcss": "^4",
"tsx": "^4.21.0",
"typescript": "^5"
}
}