deafmissoula-website/client/src/App.tsx
friday-bot ef8d281b2b v2: MongoDB backend + /manage dashboard
- Replace Express 4 backend with Express 5 + Mongoose 8 + TypeScript 5.8
- Add MongoDB 8.0 container via docker-compose
- Add JWT auth (jose), argon2 password hashing, zod validation, multer uploads
- Models: BoardMember, Event, GalleryItem, Sponsor, Minute, Member, User
- Full CRUD REST API for all content types
- Seed script to populate MongoDB from hardcoded data
- Wire all frontend components to fetch from API (no JSX changes)
- Add /manage dashboard: login + tabs for Board, Events, Gallery, Sponsors, Minutes, Members
- Uploads volume for persistent file storage across deploys
2026-05-27 16:23:12 -06:00

50 lines
1.9 KiB
TypeScript

import React from 'react';
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
import Header from './components/Header';
import Home from './components/Home';
import Calendar from './components/Calendar';
import Minutes from './components/Minutes';
import AboutUs from './components/AboutUs';
import Footer from './components/Footer';
import Bylaws from './components/Bylaws';
import Sponsors from './components/Sponsors';
import MeetBoard from './components/Meet-Board';
import Gallery from './components/Gallery';
import VideoGallery from './components/VideoGallery';
import Resources from './components/Resources';
/* import ComingSoon from './components/ComingSoon'; */
import JoinMCDi from './components/JoinMCDi';
import Manage from './components/Manage';
const App: React.FC = () => {
return (
<Router>
<Routes>
<Route path="/manage/*" element={<Manage />} />
<Route path="/*" element={
<div className="flex flex-col min-h-screen">
<Header />
<main className="flex-grow px-4 sm:px-6 lg:px-8 py-8">
<Routes>
<Route path="/" element={<Home />} />
<Route path="/calendar" element={<Calendar />} />
<Route path="/minutes" element={<Minutes />} />
<Route path="/about" element={<AboutUs />} />
<Route path="/bylaws" element={<Bylaws />} />
<Route path="/sponsors" element={<Sponsors />} />
<Route path="/meet-board" element={<MeetBoard />} />
<Route path="/gallery" element={<Gallery />} />
<Route path="/videos" element={<VideoGallery />} />
<Route path="/resources" element={<Resources />} />
<Route path="/joinmcdi" element={<JoinMCDi />} />
</Routes>
</main>
<Footer />
</div>
} />
</Routes>
</Router>
);
};
export default App;