source: frontend/src/App.js@ 20468d3

Last change on this file since 20468d3 was 20468d3, checked in by MBK <marija.karapandzova@…>, 4 months ago

Add pages and routing for patients, doctors, departments and appointments with api services

  • Property mode set to 100644
File size: 3.1 KB
Line 
1
2import './App.css';
3import React, { useEffect, useState } from 'react';
4import Navbar from './components/Navbar';
5import ProtectedRoute from './components/ProtectedRoute';
6import Login from './pages/Login';
7import PatientList from './pages/patients/PatientList';
8import PatientDetail from './pages/patients/PatientDetail';
9import PatientForm from './pages/patients/PatientForm';
10import DoctorList from './pages/doctors/DoctorList';
11import DoctorDetail from './pages/doctors/DoctorDetail';
12import DoctorForm from './pages/doctors/DoctorForm';v
13import AppointmentList from './pages/appointments/AppointmentList';
14import AppointmentForm from './pages/appointments/AppointmentForm';
15import DepartmentList from './pages/departments/DepartmentList';
16import DepartmentDetail from './pages/departments/DepartmentDetail';
17import DoctorsByDepartment from './pages/departments/DoctorsByDepartment';
18
19
20function App() {
21 const [user, setUser] = useState(null);
22
23 useEffect(() => {
24 const userStr = localStorage.getItem('user');
25 if (userStr) {
26 setUser(JSON.parse(userStr));
27 }
28 }, []);
29
30 return (
31 <Router>
32 <div className="min-h-screen bg-gray-50">
33 {user && <Navbar />}
34 <main className={user ? "container mx-auto px-4 py-8" : ""}>
35 <Routes>
36 <Route path="/login" element={<Login />} />
37
38 <Route path="/" element={
39 <ProtectedRoute>
40 <Dashboard />
41 </ProtectedRoute>
42 } />
43
44 {/* Patient Routes */}
45 <Route path="/patients" element={<ProtectedRoute><PatientList /></ProtectedRoute>} />
46 <Route path="/patients/new" element={<ProtectedRoute><PatientForm /></ProtectedRoute>} />
47 <Route path="/patients/:id" element={<ProtectedRoute><PatientDetail /></ProtectedRoute>} />
48 <Route path="/patients/:id/edit" element={<ProtectedRoute><PatientForm /></ProtectedRoute>} />
49
50 {/* Doctor Routes */}
51 <Route path="/doctors" element={<ProtectedRoute><DoctorList /></ProtectedRoute>} />
52 <Route path="/doctors/new" element={<ProtectedRoute><DoctorForm /></ProtectedRoute>} />
53 <Route path="/doctors/:id" element={<ProtectedRoute><DoctorDetail /></ProtectedRoute>} />
54 <Route path="/doctors/:id/edit" element={<ProtectedRoute><DoctorForm /></ProtectedRoute>} />
55
56 {/* Department Routes */}
57 <Route path="/departments" element={<ProtectedRoute><DepartmentList /></ProtectedRoute>} />
58 <Route path="/departments/:departmentId" element={<ProtectedRoute><DepartmentDetail /></ProtectedRoute>} />
59 <Route path="/departments/:departmentId/doctors" element={<ProtectedRoute><DoctorsByDepartment /></ProtectedRoute>} />
60
61 {/* Appointment Routes */}
62 <Route path="/appointments" element={<ProtectedRoute><AppointmentList /></ProtectedRoute>} />
63 <Route path="/appointments/new" element={<ProtectedRoute><AppointmentForm /></ProtectedRoute>} />
64 </Routes>
65 </main>
66 </div>
67 </Router>
68 );
69
70
71
72 }
73export default App;
Note: See TracBrowser for help on using the repository browser.