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>
This commit is contained in:
67
app/utils/planLimits.ts
Normal file
67
app/utils/planLimits.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
export const PLAN_LIMITS = {
|
||||
free: {
|
||||
name: 'Free',
|
||||
price_eur_month: 0,
|
||||
employee_limit: 5,
|
||||
history_months: 1,
|
||||
solve_runs_per_month: 10,
|
||||
ai_parses_per_month: 20,
|
||||
legal_templates: true,
|
||||
pdf_export: false,
|
||||
excel_export: false,
|
||||
support: 'community',
|
||||
stripe_price_id: null,
|
||||
description: 'Für kleine Teams zum Ausprobieren',
|
||||
features: [
|
||||
'Bis zu 5 Mitarbeiter',
|
||||
'10 Schichtpläne/Monat',
|
||||
'Gesetzliche Vorlagen (Deutschland)',
|
||||
'KI-Bedingungserkennung',
|
||||
],
|
||||
},
|
||||
pro: {
|
||||
name: 'Pro',
|
||||
price_eur_month: 29,
|
||||
employee_limit: 25,
|
||||
history_months: 6,
|
||||
solve_runs_per_month: 100,
|
||||
ai_parses_per_month: 200,
|
||||
legal_templates: true,
|
||||
pdf_export: true,
|
||||
excel_export: true,
|
||||
support: 'email',
|
||||
stripe_price_id: 'price_pro_monthly',
|
||||
description: 'Für wachsende Teams',
|
||||
features: [
|
||||
'Bis zu 25 Mitarbeiter',
|
||||
'100 Schichtpläne/Monat',
|
||||
'PDF & Excel Export',
|
||||
'6 Monate Verlauf',
|
||||
'E-Mail Support',
|
||||
],
|
||||
},
|
||||
business: {
|
||||
name: 'Business',
|
||||
price_eur_month: 99,
|
||||
employee_limit: Infinity,
|
||||
history_months: Infinity,
|
||||
solve_runs_per_month: Infinity,
|
||||
ai_parses_per_month: Infinity,
|
||||
legal_templates: true,
|
||||
pdf_export: true,
|
||||
excel_export: true,
|
||||
support: 'priority',
|
||||
stripe_price_id: 'price_business_monthly',
|
||||
description: 'Für große Unternehmen',
|
||||
features: [
|
||||
'Unbegrenzte Mitarbeiter',
|
||||
'Unbegrenzte Schichtpläne',
|
||||
'PDF & Excel Export',
|
||||
'Unbegrenzter Verlauf',
|
||||
'Priority Support',
|
||||
'API-Zugang (demnächst)',
|
||||
],
|
||||
},
|
||||
} as const
|
||||
|
||||
export type PlanTier = keyof typeof PLAN_LIMITS
|
||||
Reference in New Issue
Block a user