Maintenance log book app — initial scaffold

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>
This commit is contained in:
jtricerolph 2026-07-03 21:28:57 +00:00
commit 6ca395097e
47 changed files with 6727 additions and 0 deletions

32
frontend/src/App.tsx Normal file
View file

@ -0,0 +1,32 @@
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>
)
}