라우트 추가 (#2)
Reviewed-on: #2 Co-authored-by: Jinseok (심진석) <jinseok.sim@tf.dabeeo.com> Co-committed-by: Jinseok (심진석) <jinseok.sim@tf.dabeeo.com>
This commit was merged in pull request #2.
This commit is contained in:
@@ -49,10 +49,39 @@ web-app/
|
||||
│ ├── app.css # Tailwind 글로벌 스타일
|
||||
│ ├── routes.ts # 라우트 정의
|
||||
│ ├── routes/
|
||||
│ │ ├── home.tsx # 메인 페이지 (/)
|
||||
│ │ ├── users.tsx # 유저 목록 (/users)
|
||||
│ │ └── catch-all.tsx # 404 처리
|
||||
│ └── welcome/ # Welcome 컴포넌트
|
||||
│ │ ├── catch-all.tsx # 404 처리
|
||||
│ │ ├── code/
|
||||
│ │ │ └── page.tsx # 공통코드 관리
|
||||
│ │ ├── hyper-parameter/
|
||||
│ │ │ └── page.tsx # 하이퍼파라미터 설정
|
||||
│ │ ├── imagery/
|
||||
│ │ │ ├── page.tsx # 영상 목록
|
||||
│ │ │ └── [id]/
|
||||
│ │ │ └── page.tsx # 영상 상세
|
||||
│ │ ├── inference/
|
||||
│ │ │ ├── page.tsx # 추론 목록
|
||||
│ │ │ └── [id]/
|
||||
│ │ │ └── page.tsx # 추론 상세
|
||||
│ │ ├── labeling/
|
||||
│ │ │ ├── label/
|
||||
│ │ │ │ └── page.tsx # 라벨링 작업
|
||||
│ │ │ └── review/
|
||||
│ │ │ └── page.tsx # 라벨링 검수
|
||||
│ │ ├── model/
|
||||
│ │ │ ├── page.tsx # 모델 목록
|
||||
│ │ │ └── [id]/
|
||||
│ │ │ └── page.tsx # 모델 상세
|
||||
│ │ ├── log/
|
||||
│ │ │ ├── audit/
|
||||
│ │ │ │ └── page.tsx # 감사 로그
|
||||
│ │ │ └── system/
|
||||
│ │ │ └── page.tsx # 시스템 로그
|
||||
│ │ ├── login/
|
||||
│ │ │ └── page.tsx # 로그인
|
||||
│ │ ├── schedule/
|
||||
│ │ │ └── page.tsx # 스케줄 관리
|
||||
│ │ └── user/
|
||||
│ │ └── page.tsx # 사용자 관리
|
||||
├── public/ # 정적 파일
|
||||
├── Dockerfile # 프로덕션 빌드 (multi-stage)
|
||||
├── docker-compose.yml # 개발 환경
|
||||
|
||||
@@ -1,9 +1,39 @@
|
||||
import type { RouteConfig } from '@react-router/dev/routes';
|
||||
|
||||
import { index, route } from '@react-router/dev/routes';
|
||||
import { index, route, layout, prefix } from '@react-router/dev/routes';
|
||||
|
||||
export default [
|
||||
index('routes/home.tsx'),
|
||||
route('users', './routes/users.tsx'),
|
||||
layout('./routes/login/layout.tsx', [
|
||||
route('login', './routes/login/page.tsx'),
|
||||
]),
|
||||
layout('./routes/layout.tsx', [
|
||||
...prefix('imagery', [
|
||||
index('./routes/imagery/page.tsx'),
|
||||
route(':imageryId', './routes/imagery/[id]/page.tsx'),
|
||||
]),
|
||||
...prefix('inference', [
|
||||
index('./routes/inference/page.tsx'),
|
||||
route(':inferenceId', './routes/inference/[id]/page.tsx'),
|
||||
]),
|
||||
...prefix('model', [
|
||||
index('./routes/model/page.tsx'),
|
||||
route(':modelId', './routes/model/[id]/page.tsx'),
|
||||
]),
|
||||
...prefix('labeling', [
|
||||
route('label', './routes/labeling/label/page.tsx'),
|
||||
route('review', './routes/labeling/review/page.tsx'),
|
||||
]),
|
||||
...prefix('log', [
|
||||
route('audit', './routes/log/audit/page.tsx'),
|
||||
route('system', './routes/log/system/page.tsx'),
|
||||
]),
|
||||
...prefix('schedule', [
|
||||
index('./routes/schedule/page.tsx'),
|
||||
]),
|
||||
route('code', './routes/code/page.tsx'),
|
||||
route('hyper-parameter', './routes/hyper-parameter/page.tsx'),
|
||||
route('user', './routes/user/page.tsx'),
|
||||
]),
|
||||
|
||||
route('*', './routes/catch-all.tsx'),
|
||||
] satisfies RouteConfig;
|
||||
|
||||
0
web-app/app/routes/code/page.tsx
Normal file
0
web-app/app/routes/code/page.tsx
Normal file
@@ -1,7 +0,0 @@
|
||||
export default function Home() {
|
||||
return (
|
||||
<div>
|
||||
Home
|
||||
</div>
|
||||
);
|
||||
}
|
||||
0
web-app/app/routes/hyper-parameter/page.tsx
Normal file
0
web-app/app/routes/hyper-parameter/page.tsx
Normal file
9
web-app/app/routes/imagery/[id]/page.tsx
Normal file
9
web-app/app/routes/imagery/[id]/page.tsx
Normal file
@@ -0,0 +1,9 @@
|
||||
import type { Route } from './+types/page';
|
||||
|
||||
export default function Page({ params }: Route.ComponentProps) {
|
||||
return (
|
||||
<div>
|
||||
영상 상세 id: {params.imageryId}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
5
web-app/app/routes/imagery/page.tsx
Normal file
5
web-app/app/routes/imagery/page.tsx
Normal file
@@ -0,0 +1,5 @@
|
||||
export default function Page() {
|
||||
return (
|
||||
<div>영상관리 목록</div>
|
||||
);
|
||||
}
|
||||
0
web-app/app/routes/inference/[id]/page.tsx
Normal file
0
web-app/app/routes/inference/[id]/page.tsx
Normal file
7
web-app/app/routes/inference/page.tsx
Normal file
7
web-app/app/routes/inference/page.tsx
Normal file
@@ -0,0 +1,7 @@
|
||||
export default function Page() {
|
||||
return (
|
||||
<div>
|
||||
추론목록
|
||||
</div>
|
||||
)
|
||||
}
|
||||
0
web-app/app/routes/labeling/label/page.tsx
Normal file
0
web-app/app/routes/labeling/label/page.tsx
Normal file
0
web-app/app/routes/labeling/review/page.tsx
Normal file
0
web-app/app/routes/labeling/review/page.tsx
Normal file
10
web-app/app/routes/layout.tsx
Normal file
10
web-app/app/routes/layout.tsx
Normal file
@@ -0,0 +1,10 @@
|
||||
import { Outlet } from 'react-router';
|
||||
|
||||
export default function Layout() {
|
||||
return (
|
||||
<div>
|
||||
기본 레이아웃
|
||||
<Outlet />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
0
web-app/app/routes/log/audit/page.tsx
Normal file
0
web-app/app/routes/log/audit/page.tsx
Normal file
0
web-app/app/routes/log/system/page.tsx
Normal file
0
web-app/app/routes/log/system/page.tsx
Normal file
10
web-app/app/routes/login/layout.tsx
Normal file
10
web-app/app/routes/login/layout.tsx
Normal file
@@ -0,0 +1,10 @@
|
||||
import { Outlet } from 'react-router';
|
||||
|
||||
export default function Layout() {
|
||||
return (
|
||||
<div>
|
||||
인증 레이아웃
|
||||
<Outlet />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
5
web-app/app/routes/login/page.tsx
Normal file
5
web-app/app/routes/login/page.tsx
Normal file
@@ -0,0 +1,5 @@
|
||||
export default function Page() {
|
||||
return (
|
||||
<div>로그인 페이지</div>
|
||||
);
|
||||
}
|
||||
0
web-app/app/routes/model/[id]/page.tsx
Normal file
0
web-app/app/routes/model/[id]/page.tsx
Normal file
0
web-app/app/routes/model/page.tsx
Normal file
0
web-app/app/routes/model/page.tsx
Normal file
0
web-app/app/routes/schedule/page.tsx
Normal file
0
web-app/app/routes/schedule/page.tsx
Normal file
5
web-app/app/routes/user/page.tsx
Normal file
5
web-app/app/routes/user/page.tsx
Normal file
@@ -0,0 +1,5 @@
|
||||
export default function Page() {
|
||||
return (
|
||||
<div>사용자관리</div>
|
||||
);
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
export default function Users() {
|
||||
return (
|
||||
<div className="px-3">
|
||||
유저목록
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -18,4 +18,9 @@ export default tseslint.config(
|
||||
arrowParens: true,
|
||||
}),
|
||||
reactHooks.configs.flat.recommended,
|
||||
{
|
||||
rules: {
|
||||
'@stylistic/jsx-one-expression-per-line': 'off',
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { reactRouter } from "@react-router/dev/vite";
|
||||
import tailwindcss from "@tailwindcss/vite";
|
||||
import { defineConfig } from "vite";
|
||||
import { reactRouter } from '@react-router/dev/vite';
|
||||
import tailwindcss from '@tailwindcss/vite';
|
||||
import { defineConfig } from 'vite';
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [tailwindcss(), reactRouter()],
|
||||
|
||||
Reference in New Issue
Block a user