Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 57 additions & 6 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -357,18 +357,22 @@ src/
│ ├── admin/ # Admin-specific components
│ ├── operator/ # Operator terminal components
│ ├── ui/ # shadcn/ui base components
│ └── shared/ # Cross-cutting components
├── pages/ # Route pages
│ └── Layout.tsx # Role-based layout router
├── pages/ # Route pages (with barrel exports)
│ ├── admin/ # Admin pages
│ ├── operator/ # Operator pages
│ └── common/ # Shared pages (auth, etc.)
│ │ ├── config/ # Config pages (Stages, Users, etc.)
│ │ └── analytics/ # Analytics pages (OEE, QRM, etc.)
│ ├── auth/ # Auth pages (Auth, AcceptInvitation)
│ ├── operator/ # Operator pages (WorkQueue, etc.)
│ └── common/ # Shared pages (MyPlan, Pricing, Help, etc.)
├── hooks/ # Custom React hooks
├── lib/ # Utility libraries
├── integrations/ # Supabase client
├── i18n/ # Localization
│ └── locales/ # Translation files
│ └── locales/ # Translation files (en, nl, de)
├── styles/ # Global styles
│ └── design-system.css
├── routes.ts # Centralized route definitions
└── theme/ # Theme provider
```

Expand Down Expand Up @@ -549,20 +553,67 @@ function JobCard({ job, onEdit, onDelete }: JobCardProps) {
|------|---------|
| `docs/DESIGN_SYSTEM.md` | Design guidelines (READ FIRST for UI work) |
| `src/styles/design-system.css` | CSS tokens and classes |
| `src/routes.ts` | Centralized route definitions |
| `src/integrations/supabase/client.ts` | Supabase client |
| `src/integrations/supabase/types.ts` | Database types |
| `src/i18n/locales/*/translation.json` | Translations (EN/NL/DE) |
| `src/components/ui/*` | shadcn/ui components |
| `src/theme/ThemeProvider.tsx` | Theme (dark/light/auto) |

### Page Organization

Pages are organized by role with barrel exports (`index.ts`):

```
src/pages/
├── admin/
│ ├── config/ # Config pages
│ │ ├── index.ts # Barrel export
│ │ ├── Stages.tsx
│ │ ├── Materials.tsx
│ │ └── Users.tsx # etc.
│ ├── analytics/ # Analytics pages
│ │ ├── index.ts # Barrel export
│ │ └── OEEAnalytics.tsx # etc.
│ └── Dashboard.tsx # Other admin pages
├── auth/
│ ├── index.ts # Barrel export
│ ├── Auth.tsx
│ └── AcceptInvitation.tsx
├── operator/
│ ├── index.ts # Barrel export
│ └── WorkQueue.tsx # etc.
└── common/
├── index.ts # Barrel export
├── MyPlan.tsx
├── Pricing.tsx
└── Help.tsx # etc.
```

### Adding New Files

Follow existing patterns:
- **Page**: `src/pages/admin/NewFeaturePage.tsx`
- **Admin page**: `src/pages/admin/NewFeature.tsx`
- **Config page**: `src/pages/admin/config/NewConfig.tsx` (add to barrel export)
- **Common page**: `src/pages/common/NewPage.tsx` (add to barrel export)
- **Component**: `src/components/admin/NewFeatureComponent.tsx`
- **Hook**: `src/hooks/useNewFeature.ts`
- **Type**: Add to `src/integrations/supabase/types.ts`

### Import Pattern

Use barrel exports for cleaner imports:

```tsx
// Good - use barrel exports
import { Auth, AcceptInvitation } from "./pages/auth";
import { ApiKeys, Materials, Users } from "./pages/admin/config";
import { MyPlan, Pricing, Help } from "./pages/common";

// Avoid - direct file imports (unless not in barrel)
import Auth from "./pages/auth/Auth";
```

---

## Common Patterns
Expand Down
72 changes: 44 additions & 28 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,18 @@ import { AuthProvider, useAuth } from "./contexts/AuthContext";
import { ThemeProvider } from "./theme/ThemeProvider";
import { NotificationToastProvider } from "./components/NotificationToastProvider";
import { McpActivityToasts } from "./components/admin/McpActivityToasts";
import Auth from "./pages/Auth";
import AcceptInvitation from "./pages/AcceptInvitation";
import WorkQueue from "./pages/operator/WorkQueue";
import MyActivity from "./pages/operator/MyActivity";
import MyIssues from "./pages/operator/MyIssues";
import OperatorTerminal from "./pages/operator/OperatorTerminal";
// Auth pages
import { Auth, AcceptInvitation } from "./pages/auth";

// Operator pages
import { WorkQueue, MyActivity, MyIssues, OperatorTerminal, OperatorView } from "./pages/operator";

// Admin pages
import Dashboard from "./pages/admin/Dashboard";
import IssueQueue from "./pages/admin/IssueQueue";
import ConfigStages from "./pages/admin/ConfigStages";
import FactoryCalendar from "./pages/admin/FactoryCalendar";
import ConfigMaterials from "./pages/admin/ConfigMaterials";
import ConfigResources from "./pages/admin/ConfigResources";
import ConfigUsers from "./pages/admin/ConfigUsers";
import ConfigScrapReasons from "./pages/admin/ConfigScrapReasons";
import OrganizationSettings from "./pages/admin/OrganizationSettings";
import Assignments from "./pages/admin/Assignments";
import ConfigApiKeys from "./pages/admin/ConfigApiKeys";
import ConfigMcpKeys from "./pages/admin/ConfigMcpKeys";
import ConfigWebhooks from "./pages/admin/ConfigWebhooks";
import ConfigMqttPublishers from "./pages/admin/ConfigMqttPublishers";
import McpServerSettings from "./pages/admin/McpServerSettings";
import DataExport from "./pages/admin/DataExport";
import DataImport from "./pages/admin/DataImport";
Expand All @@ -41,19 +33,43 @@ import IntegrationsMarketplace from "./pages/admin/IntegrationsMarketplace";
import Shipments from "./pages/admin/Shipments";
import StepsTemplatesView from "./pages/admin/StepsTemplatesView";
import AnalyticsDashboard from "./pages/admin/Analytics";
import OEEAnalytics from "./pages/admin/analytics/OEEAnalytics";
import ReliabilityAnalytics from "./pages/admin/analytics/ReliabilityAnalytics";
import QRMAnalytics from "./pages/admin/analytics/QRMAnalytics";
import QRMDashboard from "./pages/admin/analytics/QRMDashboard";
import JobsAnalytics from "./pages/admin/analytics/JobsAnalytics";
import QualityAnalytics from "./pages/admin/analytics/QualityAnalytics";
import ApiDocs from "./pages/ApiDocs";
import Pricing from "./pages/Pricing";
import { MyPlan } from "./pages/MyPlan";
import Help from "./pages/common/Help";
import About from "./pages/About";
import PrivacyPolicy from "./pages/common/PrivacyPolicy";
import TermsOfService from "./pages/common/TermsOfService";

// Admin config pages
import {
ApiKeys as ConfigApiKeys,
Materials as ConfigMaterials,
McpKeys as ConfigMcpKeys,
MqttPublishers as ConfigMqttPublishers,
Resources as ConfigResources,
ScrapReasons as ConfigScrapReasons,
Stages as ConfigStages,
Users as ConfigUsers,
Webhooks as ConfigWebhooks,
} from "./pages/admin/config";

// Admin analytics pages
import {
OEEAnalytics,
ReliabilityAnalytics,
QRMAnalytics,
QRMDashboard,
JobsAnalytics,
QualityAnalytics,
} from "./pages/admin/analytics";

// Common pages
import {
ApiDocs,
Pricing,
MyPlan,
Help,
About,
PrivacyPolicy,
TermsOfService,
SubscriptionBlocked,
} from "./pages/common";

// Other pages
import NotFound from "./pages/NotFound";
import { OnboardingWizard } from "./components/onboarding";
import Layout from "./components/Layout";
Expand Down
Loading
Loading