- Add thermal/full-page receipt format toggle (per-device, localStorage) - Full-page receipt uses clean invoice layout matching repair PDF style - Settings page reorganized into tabbed sections (Store, Locations, Modules, Receipt, POS Security, Advanced) - Manager override system: configurable PIN prompt for void, refund, discount, cash in/out - Discount threshold setting: require manager approval above X% - Consumable product type: tracked for internal job costing, excluded from POS search, receipts, and customer-facing totals - Repair line item dialog: product picker dropdown for parts/consumables from inventory - Repair → POS checkout: load ready-for-pickup tickets into repair_payment transactions with proper tax categories (labor=service, parts=goods) - Transaction completion auto-updates repair ticket status to picked_up - POS Repairs dialog with Pickup and New Intake tabs, customer account lookup - Inline price adjustment on cart items: % off, $ off, or set price with live preview - Order-level discount button with same three input modes - Backend: migration 0043 (consumable enum + is_consumable flag), createFromRepairTicket service, ready-for-pickup endpoint - Fix: backend dev script uses --env-file for turbo compatibility Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
42 lines
1.2 KiB
JSON
42 lines
1.2 KiB
JSON
{
|
|
"name": "@lunarfront/backend",
|
|
"version": "0.1.1",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "bun --env-file=../../.env --watch run src/main.ts",
|
|
"start": "bun run src/main.ts",
|
|
"test": "bun test || true",
|
|
"test:watch": "bun test --watch",
|
|
"api-test": "bun run api-tests/run.ts",
|
|
"lint": "eslint src/",
|
|
"db:generate": "bunx drizzle-kit generate",
|
|
"db:migrate": "bunx drizzle-kit migrate",
|
|
"db:seed-dev": "bun run src/db/seeds/dev-seed.ts",
|
|
"db:seed-music": "bun run src/db/seeds/music-store-seed.ts",
|
|
"db:seed-reset-repairs": "bun run src/db/seeds/reset-repairs.ts",
|
|
"db:seed": "bun run src/db/seed.ts"
|
|
},
|
|
"dependencies": {
|
|
"@fastify/cors": "^10",
|
|
"@fastify/jwt": "^9",
|
|
"@fastify/multipart": "^9.4.0",
|
|
"@fastify/rate-limit": "^10.3.0",
|
|
"@lunarfront/shared": "workspace:*",
|
|
"@types/bcryptjs": "^3.0.0",
|
|
"bcryptjs": "^3.0.3",
|
|
"drizzle-orm": "^0.38",
|
|
"fastify": "^5",
|
|
"fastify-plugin": "^5",
|
|
"ioredis": "^5",
|
|
"postgres": "^3",
|
|
"zod": "^4"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^22",
|
|
"drizzle-kit": "^0.30",
|
|
"pino-pretty": "^13",
|
|
"typescript": "^5"
|
|
}
|
|
}
|