ca-grow-ops-manager/frontend/src/App.tsx
fullsizemalt 32fd739ccf
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
feat: Complete Phases 8-13 implementation
Phase 8: Visitor Management
- Visitor/VisitorLog/AccessZone models
- Check-in/out with badge generation
- Zone occupancy tracking
- Kiosk and management pages

Phase 9: Messaging & Communication
- Announcements with priority levels
- Acknowledgement tracking
- Shift notes for team handoffs
- AnnouncementBanner component

Phase 10: Compliance & Audit Trail
- Immutable AuditLog model
- Document versioning and approval workflow
- Acknowledgement tracking for SOPs
- CSV export for audit logs

Phase 11: Accessibility & i18n
- WCAG 2.1 AA compliance utilities
- react-i18next with EN/ES translations
- User preferences context (theme, font size, etc)
- High contrast and reduced motion support

Phase 12: Hardware Integration
- QR code generation for batches/plants/visitors
- Printable label system
- Visitor badge printing

Phase 13: Advanced Features
- Environmental monitoring (sensors, readings, alerts)
- Financial tracking (transactions, P&L reports)
- AI/ML insights (yield predictions, anomaly detection)
2025-12-11 00:26:25 -08:00

36 lines
1.3 KiB
TypeScript

import { RouterProvider } from 'react-router-dom';
import { AuthProvider } from './context/AuthContext';
import { ToastProvider } from './context/ToastContext';
import { NetworkProvider } from './context/NetworkContext';
import { UndoProvider } from './context/UndoContext';
import { PreferencesProvider } from './context/PreferencesContext';
import { ErrorBoundary } from './components/ErrorBoundary';
import { RateLimitBanner } from './components/ui/RateLimitBanner';
import { registerServiceWorker } from './hooks/useServiceWorker';
import { router } from './router';
// Global styles are imported in main.tsx
// Register service worker in production
registerServiceWorker();
function App() {
return (
<ErrorBoundary>
<PreferencesProvider>
<AuthProvider>
<NetworkProvider>
<ToastProvider>
<UndoProvider>
<RateLimitBanner />
<RouterProvider router={router} />
</UndoProvider>
</ToastProvider>
</NetworkProvider>
</AuthProvider>
</PreferencesProvider>
</ErrorBoundary>
);
}
export default App;