Files
shiftcraft/package.json
Clanker 36e0946ee4 feat: complete ShiftCraft — AI-powered shift scheduling SaaS
Complete implementation including:
- Landing page with hero, features, how-it-works, pricing
- Employee management (CRUD with soft delete)
- AI constraint parser (Anthropic Claude API)
- German labor law templates (ArbZG §3, §5, §9)
- HiGHS ILP solver for optimal fair schedules
- Schedule calendar result view (employee × date grid)
- Shift framework configuration (periods + shifts)
- Subscription tiers: Free / Pro / Business
- PocketBase setup script with collection creation + seed data
- .env.example with all required variables documented

Pages: employees, constraints (list/new/templates), schedules (list/new/[id]),
       settings (organization/shifts/billing), dashboard

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 07:47:31 +02:00

59 lines
1.9 KiB
JSON

{
"name": "nuxt-pocketbase-starter",
"private": true,
"type": "module",
"version": "0.0.1",
"scripts": {
"build": "nuxt build",
"generate": "nuxt generate",
"dev": "nuxt dev",
"preview": "nuxt preview",
"postinstall": "nuxt prepare",
"lint": "eslint .",
"typecheck": "nuxt typecheck",
"test": "vitest",
"pocketbase:start": "cd ./pocketbase && docker compose --env-file=../.env up",
"pocketbase:stop": "cd ./pocketbase && docker compose --env-file=../.env down",
"pocketbase:setup": "cd ./pocketbase && deno run --env-file=../.env --allow-env --allow-net setup.ts",
"pocketbase:types": "pocketbase-typegen --db ./pocketbase/pb_data/data.db --out ./app/types/pocketbase.types.ts",
"assets": "npx @capacitor/assets generate --assetPath public --ios --android",
"capacitor:copy:after": "cp creds/fcm-google-services.json android/app/google-services.json"
},
"dependencies": {
"@anthropic-ai/sdk": "^0.90.0",
"@capacitor/android": "^8.3.1",
"@capacitor/app": "^8.1.0",
"@capacitor/core": "^8.3.1",
"@capacitor/ios": "^8.3.1",
"@capacitor/push-notifications": "^8.0.3",
"@iconify-json/lucide": "^1.2.102",
"@iconify-json/simple-icons": "^1.2.78",
"@nuxt/image": "2.0.0",
"@nuxt/ui": "^4.6.1",
"@nuxtjs/i18n": "10.2.4",
"@pinia/nuxt": "0.11.3",
"dotenv": "^17.4.2",
"highs": "^1.8.0",
"nuxt": "^4.4.2",
"pocketbase": "^0.26.8",
"tailwindcss": "^4.2.2",
"zod": "^4.3.6"
},
"devDependencies": {
"@capacitor/cli": "^8.3.1",
"@nuxt/eslint": "^1.15.2",
"@nuxt/test-utils": "^4.0.2",
"@types/node": "^25.6.0",
"@vue/test-utils": "^2.4.6",
"deno": "^2.7.12",
"eslint": "^10.2.0",
"happy-dom": "^20.9.0",
"playwright-core": "^1.59.1",
"pocketbase-typegen": "^1.3.3",
"typescript": "^6.0.3",
"vitest": "^4.1.4",
"vue-tsc": "^3.2.6"
},
"packageManager": "pnpm@10.33.0"
}