#!/usr/bin/env node /** Generate special sports-center routes (non-CRUD) */ import fs from "node:fs"; import path from "node:path"; const APP = path.resolve(import.meta.dirname, "..", "app/sports-center"); const routes = [ ["health", "HealthPage", "health"], ["capabilities", "CapabilitiesPage", "capabilities"], ["analytics", "AnalyticsPage", "analytics"], ["reports", "ReportsPage", "analytics"], ["notifications", "NotificationsPage", "analytics"], ["integrations/crm", "CrmIntegrationPage", "integrations"], ["integrations/accounting", "AccountingIntegrationPage", "integrations"], ["integrations/loyalty", "LoyaltyIntegrationPage", "integrations"], ["integrations/communication", "CommunicationIntegrationPage", "integrations"], ["integrations/ai", "AiInsightsPage", "integrations"], ["reception", "ReceptionCheckInPage", "reception"], ["reception/check-in", "ReceptionCheckInPage", "reception"], ["reception/qr-scanner", "QrScannerPage", "reception"], ["athlete", "AthleteHomePage", "athlete"], ["athlete/workout", "AthleteWorkoutPage", "athlete"], ["athlete/progress", "AthleteProgressPage", "athlete"], ["athlete/profile", "AthleteProfilePage", "athlete"], ["athlete/membership", "AthleteHomePage", "athlete"], ["athlete/qr", "QrScannerPage", "reception"], ["athlete/nutrition", "AthleteHomePage", "athlete"], ["athlete/bookings", "AthleteHomePage", "athlete"], ["athlete/achievements", "AthleteHomePage", "athlete"], ["athlete/attendance", "AthleteHomePage", "athlete"], ["athlete/measurements", "AthleteHomePage", "athlete"], ["coach", "OwnerDashboard", "dashboard"], ["coach/messages", "NotificationsPage", "analytics"], ["coach/schedule", "OwnerDashboard", "dashboard"], ["parent", "OwnerDashboard", "dashboard"], ["cashier", "OwnerDashboard", "dashboard"], ["support", "NotificationsPage", "analytics"], ["admin", "CapabilitiesPage", "capabilities"], ["calendar", "SessionsPage", "sessions"], ["classes", "SessionsPage", "sessions"], ["qr-access", "QrScannerPage", "reception"], ["exercise-library", "ExercisesPage", "exercises"], ["workout-programs", "TrainingProgramsPage", "trainingPrograms"], ["challenges", "CompetitionsPage", "competitions"], ["audit-logs", "HealthPage", "health"], ]; for (const [route, exportName, moduleFile] of routes) { const dir = path.join(APP, route); fs.mkdirSync(dir, { recursive: true }); fs.writeFileSync( path.join(dir, "page.tsx"), `"use client";\n\nexport { ${exportName} as default } from "@/modules/sports-center/features/${moduleFile}";\n` ); fs.writeFileSync( path.join(dir, "loading.tsx"), `import { LoadingState } from "@/components/ds";\n\nexport default function Loading() {\n return ;\n}\n` ); fs.writeFileSync( path.join(dir, "error.tsx"), `"use client";\n\nimport { ErrorState } from "@/components/ds";\n\nexport default function Error({ error, reset }: { error: Error; reset: () => void }) {\n return ;\n}\n` ); console.log("Special route:", route); } console.log(`Done. ${routes.length} special routes.`);