Multi-department fault log: NewBook-synced room locations + manual locations with categories, six-state task flow (submitted/in progress/ hold-parts/hold-later/temporary fix/fixed), photos per stage, priorities with unusable flag and per-task NewBook out-of-order push, costs on resolve, comment/audit thread, recurring task templates with note-to-template carryover, asset register, contractor register with document attachments, staff/contractor allocation, occupancy-aware summary filter, searchable history with CSV export, email notifications. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
32 lines
1.2 KiB
TypeScript
32 lines
1.2 KiB
TypeScript
import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'
|
|
import AuthGate from './components/AuthGate'
|
|
import Layout from './components/Layout'
|
|
import Summary from './pages/Summary'
|
|
import HistoryPage from './pages/History'
|
|
import Assets from './pages/Assets'
|
|
import Contractors from './pages/Contractors'
|
|
import Recurring from './pages/Recurring'
|
|
import Locations from './pages/Locations'
|
|
import Settings from './pages/Settings'
|
|
|
|
export default function App() {
|
|
return (
|
|
<BrowserRouter basename="/maintenance">
|
|
<AuthGate>
|
|
<Layout>
|
|
<Routes>
|
|
<Route path="/" element={<Navigate to="/summary" replace />} />
|
|
<Route path="/summary" element={<Summary />} />
|
|
<Route path="/history" element={<HistoryPage />} />
|
|
<Route path="/assets" element={<Assets />} />
|
|
<Route path="/contractors" element={<Contractors />} />
|
|
<Route path="/recurring" element={<Recurring />} />
|
|
<Route path="/locations" element={<Locations />} />
|
|
<Route path="/settings" element={<Settings />} />
|
|
<Route path="*" element={<Navigate to="/summary" replace />} />
|
|
</Routes>
|
|
</Layout>
|
|
</AuthGate>
|
|
</BrowserRouter>
|
|
)
|
|
}
|