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>
59 lines
1.9 KiB
JSON
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"
|
|
}
|