gc-guide/src/App.tsx
htlee a0395622ab feat: 인증/라우팅/레이아웃 scaffold 구현
- AuthProvider + ProtectedRoute + AdminRoute (인증 가드)
- LoginPage (Google OAuth), PendingPage, DeniedPage
- AppLayout (사이드바 + 메인 콘텐츠)
- HomePage (퀵링크 카드), GuidePage (섹션 동적 렌더링)
- BrowserRouter 라우팅 구성
- API fetch 래퍼 + 메뉴 네비게이션 유틸
- 타입 정의 (User, Role, AuthResponse, NavItem, Issue)
- CLAUDE.md 상세화 (별도 세션 작업 가이드)
2026-02-14 13:25:20 +09:00

44 lines
2.0 KiB
TypeScript

import { BrowserRouter, Route, Routes } from 'react-router';
import { AuthProvider } from './auth/AuthProvider';
import { ProtectedRoute } from './auth/ProtectedRoute';
import { AdminRoute } from './auth/AdminRoute';
import { AppLayout } from './components/layout/AppLayout';
import { LoginPage } from './pages/LoginPage';
import { PendingPage } from './pages/PendingPage';
import { DeniedPage } from './pages/DeniedPage';
import { HomePage } from './pages/HomePage';
import { GuidePage } from './pages/GuidePage';
function App() {
return (
<AuthProvider>
<BrowserRouter>
<Routes>
{/* Public */}
<Route path="/login" element={<LoginPage />} />
<Route path="/pending" element={<PendingPage />} />
<Route path="/denied" element={<DeniedPage />} />
{/* Protected */}
<Route element={<ProtectedRoute />}>
<Route element={<AppLayout />}>
<Route index element={<HomePage />} />
<Route path="/dev/:section" element={<GuidePage />} />
{/* Admin */}
<Route element={<AdminRoute />}>
<Route path="/admin/users" element={<div className="p-8"><h1 className="text-2xl font-bold"> </h1><p className="text-gray-500 mt-2"> </p></div>} />
<Route path="/admin/roles" element={<div className="p-8"><h1 className="text-2xl font-bold"> </h1><p className="text-gray-500 mt-2"> </p></div>} />
<Route path="/admin/permissions" element={<div className="p-8"><h1 className="text-2xl font-bold"> </h1><p className="text-gray-500 mt-2"> </p></div>} />
<Route path="/admin/stats" element={<div className="p-8"><h1 className="text-2xl font-bold"></h1><p className="text-gray-500 mt-2"> </p></div>} />
</Route>
</Route>
</Route>
</Routes>
</BrowserRouter>
</AuthProvider>
);
}
export default App;