- Vite 기본 템플릿 정리 및 index.html 수정 - guideline.html 기반 디자인 토큰 적용 (index.css) - Feature-based 폴더 구조 (8개 feature 모듈) - 18개 placeholder 페이지 + lazy loading 라우터 - 레이아웃 컴포넌트 (AppLayout, AppHeader, AppSidebar, AuthLayout) - Zustand 스토어 (authStore, uiStore) - API 계층 (Axios client, auth.api) - 타입 정의, 유틸리티, 환경변수 설정 - ErrorBoundary, ProtectedRoute, PublicRoute Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
30 lines
851 B
TypeScript
30 lines
851 B
TypeScript
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
import { RouterProvider } from "react-router-dom";
|
|
import { ThemeProvider } from "next-themes";
|
|
import { Toaster } from "@/components/ui/sonner";
|
|
import { ErrorBoundary } from "@/components/feedback/ErrorBoundary";
|
|
import { router } from "@/routes";
|
|
|
|
const queryClient = new QueryClient({
|
|
defaultOptions: {
|
|
queries: {
|
|
retry: 1,
|
|
staleTime: 5 * 60 * 1000, // 5분
|
|
refetchOnWindowFocus: false,
|
|
},
|
|
},
|
|
});
|
|
|
|
export default function App() {
|
|
return (
|
|
<ErrorBoundary>
|
|
<ThemeProvider attribute="class" defaultTheme="light" enableSystem={false}>
|
|
<QueryClientProvider client={queryClient}>
|
|
<RouterProvider router={router} />
|
|
<Toaster />
|
|
</QueryClientProvider>
|
|
</ThemeProvider>
|
|
</ErrorBoundary>
|
|
);
|
|
}
|