diff --git a/src/app/routes/AppRouter.tsx b/src/app/routes/AppRouter.tsx index 135ad88..1fd83d5 100644 --- a/src/app/routes/AppRouter.tsx +++ b/src/app/routes/AppRouter.tsx @@ -1,29 +1,30 @@ import { createBrowserRouter, RouterProvider } from "react-router-dom"; import { ROUTE_PATH } from "@/app/routes/routeConstants"; -import OverviewPage from "@/pages/overview/Overview"; -import ResourcesPage from "@/pages/overview/Resources"; -import MembersPage from "@/pages/overview/Members"; +import ProjectOverviewPage from "@/pages/overview/ProjectOverview"; +import TeamResourcesPage from "@/pages/overview/TeamResources"; +import TeamMembersPage from "@/pages/overview/TeamMembers"; -import EnvironmentPage from "@/pages/onboarding/Environment"; -import SetupPage from "@/pages/onboarding/Setup"; -import RunPage from "@/pages/onboarding/Run"; -import StructurePage from "@/pages/onboarding/Structure"; -import OnboardingResourcesPage from "@/pages/onboarding/Resources"; +import FrontendOnboardingPage from "@/pages/onboarding/FrontendOnboarding"; +import BackendOnboardingPage from "@/pages/onboarding/BackendOnboarding"; -import WorkflowPage from "@/pages/dev-guide/Workflow"; -import GitPage from "@/pages/dev-guide/Git"; -import ReviewPage from "@/pages/dev-guide/Review"; -import TestPage from "@/pages/dev-guide/Test"; +import CommonDevGuidePage from "@/pages/dev-guide/CommonDevGuide"; +import FrontendDevGuidePage from "@/pages/dev-guide/FrontendDevGuide"; +import BackendDevGuidePage from "@/pages/dev-guide/BackendDevGuide"; -import FrontendIntroPage from "@/pages/frontend/Intro"; -import DesignSystemPage from "@/pages/frontend/DesignSystem"; -import TechStackPage from "@/pages/frontend/TechStack"; -import FrontendIssuesPage from "@/pages/frontend/Issues"; +import FrontendGettingStartPage from "@/pages/frontend/GettingStart"; +import FrontenDesignSystemPage from "@/pages/frontend/DesignSystem"; +import FrontendKeyFeaturesPage from "@/pages/frontend/KeyFeatures"; +import FrontendTechStackPage from "@/pages/frontend/TechStack"; +import FrontendTroubleShootingPage from "@/pages/frontend/TroubleShooting"; +import FrontendPerformancePage from "@/pages/frontend/Performance"; +import FrontendCiCdPage from "@/pages/frontend/CiCd"; -import BackendArchPage from "@/pages/backend/Architecture"; -import BackendERDPage from "@/pages/backend/Erd"; -import BackendIssuesPage from "@/pages/backend/Issues"; +import BackendErdPage from "@/pages/backend/Erd"; +import BackendArchitecturePage from "@/pages/backend/Architecture"; +import BackendTroubleShootingPage from "@/pages/backend/TroubleShooting"; +import BackendPerformancePage from "@/pages/backend/Performance"; +import BackendTechStackPage from "@/pages/backend/TechStack"; import DeployCIPage from "@/pages/deployment/Ci"; import DeployCDPage from "@/pages/deployment/Cd"; @@ -40,35 +41,84 @@ const router = createBrowserRouter([ path: "/", element: , children: [ - { path: ROUTE_PATH.OVERVIEW_PROJECT_OVERVIEW, element: }, - { path: ROUTE_PATH.OVERVIEW_RESOURCES, element: }, - { path: ROUTE_PATH.OVERVIEW_MEMBERS, element: }, + // 프로젝트 개요 + { path: ROUTE_PATH.OVERVIEW.PROJECT, element: }, + { path: ROUTE_PATH.OVERVIEW.RESOURCES, element: }, + { path: ROUTE_PATH.OVERVIEW.MEMBERS, element: }, - { path: ROUTE_PATH.ONBOARDING_ENV, element: }, - { path: ROUTE_PATH.ONBOARDING_SETUP, element: }, - { path: ROUTE_PATH.ONBOARDING_RUN, element: }, - { path: ROUTE_PATH.ONBOARDING_STRUCTURE, element: }, + // 온보딩 가이드 { - path: ROUTE_PATH.ONBOARDING_RESOURCES, - element: , + path: ROUTE_PATH.ONBOARDING.FRONTEND, + element: , + }, + { + path: ROUTE_PATH.ONBOARDING.BACKEND, + element: , }, - { path: ROUTE_PATH.PROCESS_WORKFLOW, element: }, - { path: ROUTE_PATH.PROCESS_GIT, element: }, - { path: ROUTE_PATH.PROCESS_REVIEW, element: }, - { path: ROUTE_PATH.PROCESS_TEST, element: }, + // 개발 가이드 + { + path: ROUTE_PATH.DEVELOPER_GUIDE.COMMON, + element: , + }, + { + path: ROUTE_PATH.DEVELOPER_GUIDE.FRONTEND, + element: , + }, + { + path: ROUTE_PATH.DEVELOPER_GUIDE.BACKEND, + element: , + }, - { path: ROUTE_PATH.FRONTEND_INTRO, element: }, - { path: ROUTE_PATH.FRONTEND_DESIGN, element: }, - { path: ROUTE_PATH.FRONTEND_TECHSTACK, element: }, - { path: ROUTE_PATH.FRONTEND_ISSUES, element: }, + // 프론트엔드 문서 + { + path: ROUTE_PATH.FRONTEND.GETTING_STARTED, + element: , + }, + { + path: ROUTE_PATH.FRONTEND.DESIGN, + element: , + }, + { + path: ROUTE_PATH.FRONTEND.TECHSTACK, + element: , + }, + { + path: ROUTE_PATH.FRONTEND.KEY_FEATURES, + element: , + }, + { + path: ROUTE_PATH.FRONTEND.TROUBLE_SHOOTING, + element: , + }, + { + path: ROUTE_PATH.FRONTEND.PERFORMANCE, + element: , + }, + { + path: ROUTE_PATH.FRONTEND.CICD, + element: , + }, - { path: ROUTE_PATH.BACKEND_ARCH, element: }, - { path: ROUTE_PATH.BACKEND_ERD, element: }, - { path: ROUTE_PATH.BACKEND_ISSUES, element: }, + // 백엔드 문서 + { + path: ROUTE_PATH.BACKEND.ARCHITECTURE, + element: , + }, + { path: ROUTE_PATH.BACKEND.TECHSTACK, element: }, + { path: ROUTE_PATH.BACKEND.ERD, element: }, + { + path: ROUTE_PATH.BACKEND.TROUBLE_SHOOTING, + element: , + }, + { + path: ROUTE_PATH.BACKEND.PERFORMANCE, + element: , + }, - { path: ROUTE_PATH.DEPLOY_CI, element: }, - { path: ROUTE_PATH.DEPLOY_CD, element: }, + // 배포 프로세스 + { path: ROUTE_PATH.DEPLOYMENT.CI, element: }, + { path: ROUTE_PATH.DEPLOYMENT.CD, element: }, ], }, ]); diff --git a/src/app/routes/routeConstants.ts b/src/app/routes/routeConstants.ts index 9f3a8e0..493d406 100644 --- a/src/app/routes/routeConstants.ts +++ b/src/app/routes/routeConstants.ts @@ -1,59 +1,43 @@ export const ROUTE_PATH = { ROOT: "/", - OVERVIEW_PROJECT_OVERVIEW: "/overview/project-overview", - OVERVIEW_RESOURCES: "/overview/resources", - OVERVIEW_MEMBERS: "/overview/members", - - ONBOARDING_ENV: "/onboarding/environment", - ONBOARDING_SETUP: "/onboarding/setup", - ONBOARDING_RUN: "/onboarding/run", - ONBOARDING_STRUCTURE: "/onboarding/structure", - ONBOARDING_RESOURCES: "/onboarding/resources", - - PROCESS_WORKFLOW: "/process/workflow", - PROCESS_GIT: "/process/git", - PROCESS_REVIEW: "/process/review", - PROCESS_TEST: "/process/test", - - FRONTEND_INTRO: "/frontend/intro", - FRONTEND_DESIGN: "/frontend/design-system", - FRONTEND_TECHSTACK: "/frontend/tech-stack", - FRONTEND_ISSUES: "/frontend/issues", - - BACKEND_ARCH: "/backend/architecture", - BACKEND_ERD: "/backend/erd", - BACKEND_ISSUES: "/backend/issues", - - DEPLOY_CI: "/deployment/ci", - DEPLOY_CD: "/deployment/cd", -}; - -export const ROUTES = { - OVERVIEW: () => ROUTE_PATH.OVERVIEW_PROJECT_OVERVIEW, - OVERVIEW_RESOURCES: () => ROUTE_PATH.OVERVIEW_RESOURCES, - OVERVIEW_MEMBERS: () => ROUTE_PATH.OVERVIEW_MEMBERS, - - ONBOARDING_ENV: () => ROUTE_PATH.ONBOARDING_ENV, - ONBOARDING_SETUP: () => ROUTE_PATH.ONBOARDING_SETUP, - ONBOARDING_RUN: () => ROUTE_PATH.ONBOARDING_RUN, - ONBOARDING_STRUCTURE: () => ROUTE_PATH.ONBOARDING_STRUCTURE, - ONBOARDING_RESOURCES: () => ROUTE_PATH.ONBOARDING_RESOURCES, - - PROCESS_WORKFLOW: () => ROUTE_PATH.PROCESS_WORKFLOW, - PROCESS_GIT: () => ROUTE_PATH.PROCESS_GIT, - PROCESS_REVIEW: () => ROUTE_PATH.PROCESS_REVIEW, - PROCESS_TEST: () => ROUTE_PATH.PROCESS_TEST, - - FRONTEND_INTRO: () => ROUTE_PATH.FRONTEND_INTRO, - FRONTEND_DESIGN: () => ROUTE_PATH.FRONTEND_DESIGN, - FRONTEND_TECHSTACK: () => ROUTE_PATH.FRONTEND_TECHSTACK, - FRONTEND_ISSUES: () => ROUTE_PATH.FRONTEND_ISSUES, - - BACKEND_ARCH: () => ROUTE_PATH.BACKEND_ARCH, - BACKEND_ERD: () => ROUTE_PATH.BACKEND_ERD, - BACKEND_ISSUES: () => ROUTE_PATH.BACKEND_ISSUES, - - DEPLOY_CI: () => ROUTE_PATH.DEPLOY_CI, - DEPLOY_CD: () => ROUTE_PATH.DEPLOY_CD, + OVERVIEW: { + PROJECT: "/overview/project-overview", + RESOURCES: "/overview/team-resources", + MEMBERS: "/overview/team-members", + }, + + ONBOARDING: { + FRONTEND: "/onboarding/frontend", + BACKEND: "/onboarding/backend", + }, + + DEVELOPER_GUIDE: { + COMMON: "/developer-guide/common", + FRONTEND: "/developer-guide/frontend", + BACKEND: "/developer-guide/backend", + }, + + FRONTEND: { + GETTING_STARTED: "/frontend/getting-start", + DESIGN: "/frontend/design-system", + TECHSTACK: "/frontend/tech-stack", + KEY_FEATURES: "/frontend/key-features", + TROUBLE_SHOOTING: "/frontend/trouble-shooting", + PERFORMANCE: "/frontend/performance-optimization", + CICD: "/frontend/ci-cd", + }, + + BACKEND: { + ARCHITECTURE: "/backend/architecture", + ERD: "/backend/erd", + TECHSTACK: "/backend/tech-stack", + TROUBLE_SHOOTING: "/backend/trouble-shooting", + PERFORMANCE: "/backend/performance-optimization", + }, + + DEPLOYMENT: { + CI: "/deployment/ci", + CD: "/deployment/cd", + }, }; diff --git a/src/features/main/components/MainHero.tsx b/src/features/main/components/MainHero.tsx index a696aca..581f9df 100644 --- a/src/features/main/components/MainHero.tsx +++ b/src/features/main/components/MainHero.tsx @@ -4,7 +4,7 @@ import { ROUTE_PATH } from "@/app/routes/routeConstants"; const MainHero = () => { const navigate = useNavigate(); - const goToOverview = () => navigate(ROUTE_PATH.OVERVIEW_PROJECT_OVERVIEW); + const goToOverview = () => navigate(ROUTE_PATH.OVERVIEW.PROJECT); return (
{ - return
Backend - Architecture 페이지
; +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const BackendArchitecturePage = () => { + return ; }; -export default ArchitecturePage; +export default BackendArchitecturePage; diff --git a/src/pages/backend/Erd.tsx b/src/pages/backend/Erd.tsx index 0c28fdf..526bdf6 100644 --- a/src/pages/backend/Erd.tsx +++ b/src/pages/backend/Erd.tsx @@ -1,5 +1,8 @@ -const ErdPage = () => { - return
Backend - Erd 페이지
; +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const BackendErdPage = () => { + return ; }; -export default ErdPage; +export default BackendErdPage; diff --git a/src/pages/backend/Issues.tsx b/src/pages/backend/Issues.tsx deleted file mode 100644 index 9d6fa45..0000000 --- a/src/pages/backend/Issues.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const BackendIssuesPage = () => { - return
Backend - Issues 페이지
; -}; - -export default BackendIssuesPage; diff --git a/src/pages/backend/Performance.tsx b/src/pages/backend/Performance.tsx new file mode 100644 index 0000000..3db1e7e --- /dev/null +++ b/src/pages/backend/Performance.tsx @@ -0,0 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const BackendPerformancePage = () => { + return ; +}; + +export default BackendPerformancePage; diff --git a/src/pages/backend/TechStack.tsx b/src/pages/backend/TechStack.tsx new file mode 100644 index 0000000..c194612 --- /dev/null +++ b/src/pages/backend/TechStack.tsx @@ -0,0 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const BackendTechStackPage = () => { + return ; +}; + +export default BackendTechStackPage; diff --git a/src/pages/backend/TroubleShooting.tsx b/src/pages/backend/TroubleShooting.tsx new file mode 100644 index 0000000..d1a60e0 --- /dev/null +++ b/src/pages/backend/TroubleShooting.tsx @@ -0,0 +1,10 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const BackendTroubleShootingPage = () => { + return ( + + ); +}; + +export default BackendTroubleShootingPage; diff --git a/src/pages/deployment/Cd.tsx b/src/pages/deployment/Cd.tsx index 98d2e2c..97b274a 100644 --- a/src/pages/deployment/Cd.tsx +++ b/src/pages/deployment/Cd.tsx @@ -1,5 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + const DeployCDPage = () => { - return
Deploy - Cd 페이지
; + return ; }; export default DeployCDPage; diff --git a/src/pages/deployment/Ci.tsx b/src/pages/deployment/Ci.tsx index 2b90b3e..e00ffeb 100644 --- a/src/pages/deployment/Ci.tsx +++ b/src/pages/deployment/Ci.tsx @@ -1,5 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + const DeployCIPage = () => { - return
Deploy - Ci 페이지
; + return ; }; export default DeployCIPage; diff --git a/src/pages/dev-guide/BackendDevGuide.tsx b/src/pages/dev-guide/BackendDevGuide.tsx new file mode 100644 index 0000000..ce3c64a --- /dev/null +++ b/src/pages/dev-guide/BackendDevGuide.tsx @@ -0,0 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const BackendDevGuidePage = () => { + return ; +}; + +export default BackendDevGuidePage; diff --git a/src/pages/dev-guide/CommonDevGuide.tsx b/src/pages/dev-guide/CommonDevGuide.tsx new file mode 100644 index 0000000..0cde4a8 --- /dev/null +++ b/src/pages/dev-guide/CommonDevGuide.tsx @@ -0,0 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const CommonDevGuidePage = () => { + return ; +}; + +export default CommonDevGuidePage; diff --git a/src/pages/dev-guide/FrontendDevGuide.tsx b/src/pages/dev-guide/FrontendDevGuide.tsx new file mode 100644 index 0000000..ceb4b8f --- /dev/null +++ b/src/pages/dev-guide/FrontendDevGuide.tsx @@ -0,0 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const FrontendDevGuidePage = () => { + return ; +}; + +export default FrontendDevGuidePage; diff --git a/src/pages/dev-guide/Git.tsx b/src/pages/dev-guide/Git.tsx deleted file mode 100644 index a02e458..0000000 --- a/src/pages/dev-guide/Git.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const GitPage = () => { - return
DevGuide - Git 페이지
; -}; - -export default GitPage; diff --git a/src/pages/dev-guide/Review.tsx b/src/pages/dev-guide/Review.tsx deleted file mode 100644 index 969c857..0000000 --- a/src/pages/dev-guide/Review.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const ReviewPage = () => { - return
DevGuide - Review 페이지
; -}; - -export default ReviewPage; diff --git a/src/pages/dev-guide/Test.tsx b/src/pages/dev-guide/Test.tsx deleted file mode 100644 index 3506875..0000000 --- a/src/pages/dev-guide/Test.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const TestPage = () => { - return
DevGuide - Test 페이지
; -}; - -export default TestPage; diff --git a/src/pages/dev-guide/Workflow.tsx b/src/pages/dev-guide/Workflow.tsx deleted file mode 100644 index 24b0a90..0000000 --- a/src/pages/dev-guide/Workflow.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const WorkflowPage = () => { - return
DevGuide - Workflow 페이지
; -}; - -export default WorkflowPage; diff --git a/src/pages/frontend/CiCd.tsx b/src/pages/frontend/CiCd.tsx new file mode 100644 index 0000000..7260ae3 --- /dev/null +++ b/src/pages/frontend/CiCd.tsx @@ -0,0 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const FrontendCiCdPage = () => { + return ; +}; + +export default FrontendCiCdPage; diff --git a/src/pages/frontend/DesignSystem.tsx b/src/pages/frontend/DesignSystem.tsx index 26db50c..441c07e 100644 --- a/src/pages/frontend/DesignSystem.tsx +++ b/src/pages/frontend/DesignSystem.tsx @@ -1,5 +1,8 @@ -const DesignSystemPage = () => { - return
Frontend - DesignSystem 페이지
; +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const FrontenDesignSystemPage = () => { + return ; }; -export default DesignSystemPage; +export default FrontenDesignSystemPage; diff --git a/src/pages/frontend/GettingStart.tsx b/src/pages/frontend/GettingStart.tsx new file mode 100644 index 0000000..403a4c8 --- /dev/null +++ b/src/pages/frontend/GettingStart.tsx @@ -0,0 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const FrontendGettingStartPage = () => { + return ; +}; + +export default FrontendGettingStartPage; diff --git a/src/pages/frontend/Intro.tsx b/src/pages/frontend/Intro.tsx deleted file mode 100644 index 6aea798..0000000 --- a/src/pages/frontend/Intro.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const FrontendIntroPage = () => { - return
Frontend - Intro 페이지
; -}; - -export default FrontendIntroPage; diff --git a/src/pages/frontend/Issues.tsx b/src/pages/frontend/Issues.tsx deleted file mode 100644 index 46d9f76..0000000 --- a/src/pages/frontend/Issues.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const FrontendIssuesPage = () => { - return
Frontend - Issues 페이지
; -}; - -export default FrontendIssuesPage; diff --git a/src/pages/frontend/KeyFeatures.tsx b/src/pages/frontend/KeyFeatures.tsx new file mode 100644 index 0000000..38627da --- /dev/null +++ b/src/pages/frontend/KeyFeatures.tsx @@ -0,0 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const FrontendKeyFeaturesPage = () => { + return ; +}; + +export default FrontendKeyFeaturesPage; diff --git a/src/pages/frontend/Performance.tsx b/src/pages/frontend/Performance.tsx new file mode 100644 index 0000000..0318b81 --- /dev/null +++ b/src/pages/frontend/Performance.tsx @@ -0,0 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const FrontendPerformancePage = () => { + return ; +}; + +export default FrontendPerformancePage; diff --git a/src/pages/frontend/TechStack.tsx b/src/pages/frontend/TechStack.tsx index 41f0120..ad237a9 100644 --- a/src/pages/frontend/TechStack.tsx +++ b/src/pages/frontend/TechStack.tsx @@ -1,5 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + const FrontendTechStackPage = () => { - return
Frontend - TechStackPage 페이지
; + return ; }; export default FrontendTechStackPage; diff --git a/src/pages/frontend/TroubleShooting.tsx b/src/pages/frontend/TroubleShooting.tsx new file mode 100644 index 0000000..a03ad11 --- /dev/null +++ b/src/pages/frontend/TroubleShooting.tsx @@ -0,0 +1,10 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const FrontendTroubleShootingPage = () => { + return ( + + ); +}; + +export default FrontendTroubleShootingPage; diff --git a/src/pages/onboarding/BackendOnboarding.tsx b/src/pages/onboarding/BackendOnboarding.tsx new file mode 100644 index 0000000..5aa936c --- /dev/null +++ b/src/pages/onboarding/BackendOnboarding.tsx @@ -0,0 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const BackendOnboardingPage = () => { + return ; +}; + +export default BackendOnboardingPage; diff --git a/src/pages/onboarding/Environment.tsx b/src/pages/onboarding/Environment.tsx deleted file mode 100644 index cbae9ce..0000000 --- a/src/pages/onboarding/Environment.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const EnvironmentPage = () => { - return
Onboarding - Environment 페이지
; -}; - -export default EnvironmentPage; diff --git a/src/pages/onboarding/FrontendOnboarding.tsx b/src/pages/onboarding/FrontendOnboarding.tsx new file mode 100644 index 0000000..dcedb2f --- /dev/null +++ b/src/pages/onboarding/FrontendOnboarding.tsx @@ -0,0 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const FrontendOnboardingPage = () => { + return ; +}; + +export default FrontendOnboardingPage; diff --git a/src/pages/onboarding/Resources.tsx b/src/pages/onboarding/Resources.tsx deleted file mode 100644 index a5af165..0000000 --- a/src/pages/onboarding/Resources.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const ResourcesPage = () => { - return
Onboarding - ResourcesPage 페이지
; -}; - -export default ResourcesPage; diff --git a/src/pages/onboarding/Run.tsx b/src/pages/onboarding/Run.tsx deleted file mode 100644 index e8bf5c2..0000000 --- a/src/pages/onboarding/Run.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const RunPage = () => { - return
Onboarding - Run 페이지
; -}; - -export default RunPage; diff --git a/src/pages/onboarding/Setup.tsx b/src/pages/onboarding/Setup.tsx deleted file mode 100644 index 366fe05..0000000 --- a/src/pages/onboarding/Setup.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const SetupPage = () => { - return
Onboarding - Setup 페이지
; -}; - -export default SetupPage; diff --git a/src/pages/onboarding/Structure.tsx b/src/pages/onboarding/Structure.tsx deleted file mode 100644 index 1c0032e..0000000 --- a/src/pages/onboarding/Structure.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const StructurePage = () => { - return
Onboarding - Structure 페이지
; -}; - -export default StructurePage; diff --git a/src/pages/overview/Members.tsx b/src/pages/overview/Members.tsx deleted file mode 100644 index 772b7b4..0000000 --- a/src/pages/overview/Members.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const MembersPage = () => { - return
Overview - Members 페이지
; -}; - -export default MembersPage; diff --git a/src/pages/overview/Overview.tsx b/src/pages/overview/Overview.tsx deleted file mode 100644 index ca3a17e..0000000 --- a/src/pages/overview/Overview.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const OverviewPage = () => { - return
Overview - Overview 페이지
; -}; - -export default OverviewPage; diff --git a/src/pages/overview/ProjectOverview.tsx b/src/pages/overview/ProjectOverview.tsx new file mode 100644 index 0000000..8122483 --- /dev/null +++ b/src/pages/overview/ProjectOverview.tsx @@ -0,0 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const ProjectOverviewPage = () => { + return ; +}; + +export default ProjectOverviewPage; diff --git a/src/pages/overview/Resources.tsx b/src/pages/overview/Resources.tsx deleted file mode 100644 index 81d6a9b..0000000 --- a/src/pages/overview/Resources.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const ResourcesPage = () => { - return
Overview - Resources 페이지
; -}; - -export default ResourcesPage; diff --git a/src/pages/overview/TeamMembers.tsx b/src/pages/overview/TeamMembers.tsx new file mode 100644 index 0000000..3e3af9a --- /dev/null +++ b/src/pages/overview/TeamMembers.tsx @@ -0,0 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const MembersPage = () => { + return ; +}; + +export default MembersPage; diff --git a/src/pages/overview/TeamResources.tsx b/src/pages/overview/TeamResources.tsx new file mode 100644 index 0000000..4583057 --- /dev/null +++ b/src/pages/overview/TeamResources.tsx @@ -0,0 +1,8 @@ +import AnimatedTextBlock from "@/shared/components/animations/AnimatedTextBlock"; +import { PageDescriptions } from "@/shared/constants/pageDescriptions"; + +const ResourcesPage = () => { + return ; +}; + +export default ResourcesPage; diff --git a/src/shared/components/animations/AnimatedText.tsx b/src/shared/components/animations/AnimatedText.tsx new file mode 100644 index 0000000..4aa33b2 --- /dev/null +++ b/src/shared/components/animations/AnimatedText.tsx @@ -0,0 +1,33 @@ +// src/components/animations/AnimatedText.tsx +import FadeUp from "@/shared/components/animations/FadeUp"; +import type { ReactNode } from "react"; + +type TextVariant = "title" | "body" | "label"; + +interface AnimatedTextProps { + children: ReactNode; + variant?: TextVariant; + delay?: number; + className?: string; +} + +const variantClasses: Record = { + title: "title1-bold text-gray-900 mb-4", + body: "body1-regular text-gray-900 mb-2", + label: "label1-regular text-gray-500", +}; + +const AnimatedText = ({ + children, + variant = "body", + delay = 0, + className = "", +}: AnimatedTextProps) => { + return ( + +

{children}

+
+ ); +}; + +export default AnimatedText; diff --git a/src/shared/components/animations/AnimatedTextBlock.tsx b/src/shared/components/animations/AnimatedTextBlock.tsx new file mode 100644 index 0000000..5de3f06 --- /dev/null +++ b/src/shared/components/animations/AnimatedTextBlock.tsx @@ -0,0 +1,37 @@ +import AnimatedText from "@/shared/components/animations/AnimatedText"; +import { + CommonPageText, + type TextItem, +} from "@/shared/constants/pageDescriptions"; + +interface AnimatedTextBlockProps { + items: TextItem[]; + className?: string; + includeCommon?: boolean; +} + +const AnimatedTextBlock = ({ + items, + className = "", + includeCommon = true, +}: AnimatedTextBlockProps) => { + const finalItems = includeCommon + ? [CommonPageText.HEADER, ...items, CommonPageText.FOOTER] + : items; + + return ( +
+ {finalItems.map((item, index) => ( + + {item.content} + + ))} +
+ ); +}; + +export default AnimatedTextBlock; diff --git a/src/shared/components/animations/FadeUp.tsx b/src/shared/components/animations/FadeUp.tsx new file mode 100644 index 0000000..5870492 --- /dev/null +++ b/src/shared/components/animations/FadeUp.tsx @@ -0,0 +1,22 @@ +import { motion, type MotionProps } from "motion/react"; +import type { ReactNode } from "react"; + +interface FadeUpProps extends MotionProps { + children: ReactNode; + delay?: number; +} + +const FadeUp = ({ children, delay = 0, ...props }: FadeUpProps) => { + return ( + + {children} + + ); +}; + +export default FadeUp; diff --git a/src/shared/constants/pageDescriptions.tsx b/src/shared/constants/pageDescriptions.tsx new file mode 100644 index 0000000..8bc3e50 --- /dev/null +++ b/src/shared/constants/pageDescriptions.tsx @@ -0,0 +1,188 @@ +export interface TextItem { + content: string | React.ReactNode; + variant?: "title" | "body" | "label"; + delay?: number; +} + +export const CommonPageText: Record<"HEADER" | "FOOTER", TextItem> = { + HEADER: { + content: "🤔 이 페이지는 어떤 내용을 담고 있나요?", + variant: "title", + }, + FOOTER: { + content: "작성 예정인 문서입니다. 조금만 기다려주세요 ദ്ദിᐢ・֊・ᐢ₎ ♥", + variant: "label", + }, +}; + +export const PageDescriptions = { + // 개요 + OVERVIEW: { + PROJECT: [ + { + content: + "개발 문서의 개요와 BOOST 프로젝트의 개요를 설명하는 페이지입니다.", + variant: "body" as const, + }, + ], + MEMBER: [ + { + content: "BOOST 모든 팀원들의 정보를 알 수 있는 페이지입니다.", + variant: "body" as const, + }, + ], + RESOURCE: [ + { + content: + "깃허브, 노션 페이지등 BOOST 팀의 리소스를 기재하는 페이지입니다.", + variant: "body" as const, + }, + ], + }, + + // 온보딩 가이드 + ONBOARDING: { + FRONTEND: [ + { + content: + "프론트엔드 팀에 새로운 팀원이 들어왔을 때, 프로젝트를 빠르게 이해하고 셋업하도록 돕는 입문 가이드 페이지입니다.", + variant: "body" as const, + }, + ], + BACKEND: [ + { + content: + "백엔드 팀에 새로운 팀원이 들어왔을 때, 프로젝트를 빠르게 이해하고 셋업하도록 돕는 입문 가이드 페이지입니다.", + variant: "body" as const, + }, + ], + }, + + // 개발 가이드 + DEV_GUIDE: { + COMMON: [ + { + content: + "BOOST 프로젝트의 현재/미래 팀원 모두가 따라야 할 프로젝트 개발 규칙 입니다.", + variant: "body" as const, + }, + ], + FRONTEND: [ + { + content: + "프론트엔드의 현재/미래 팀원 모두가 따라야 할 프로젝트 개발 규칙 입니다.", + variant: "body" as const, + }, + ], + BACKEND: [ + { + content: + "백엔드의 현재/미래 팀원 모두가 따라야 할 프로젝트 개발 규칙 입니다.", + variant: "body" as const, + }, + ], + }, + + // 프론트엔드 + FRONTED: { + CICD: [ + { + content: + "프론트엔드의 CI/CD 구축에 관한 내용을 기재하는 페이지입니다. 개발 가이드 속 CI/CD 안내 페이지의 내용보다 자세한 구조, 구축 과정 설명을 확인할 수 있어요.", + variant: "body" as const, + }, + ], + DESIGN: [ + { + content: + "개발에 사용한 모든 디자인에 관한 자료를 모아두는 페이지입니다. 색상 토큰, 타이포그래피, 서비스 캐릭터, 서비스 로고 등 다양한 정보가 포함됩니다.", + variant: "body" as const, + }, + ], + GETTING_START: [ + { + content: + "프론트엔드에 새로운 팀원이 이 페이지를 통해 원활하게 프로젝트에 참여할 수 있도록 온보딩 가이드, 개발 가이드로 이동할 수 있는 페이지입니다.", + }, + ], + KEY_FEATURES: [ + { + content: + "프론트엔드의 주요 기능 개발 과정과 기술적인 내용을 작성하는 페이지입니다.", + variant: "body" as const, + }, + ], + PERFORMANCE: [ + { + content: + "프론트엔드의 현재 시스템의 동작을 분석하여 속도·메모리·사용자 경험을 개선하는 활동과 전략을 작성하는 페이지입니다.", + variant: "body" as const, + }, + ], + TECH_STACK: [ + { + content: + "프론트엔드 개발에 사용한 기술 스택을 기록하는 페이지입니다. 사용한 스택들은 기본적으로 표로 제공되며, 주요 기술 스택은 자세한 내용을 제공합니다. 주요 기술 스택에는 zustand, react-query, tailwindcss+shadcn, RHF+zod, dnd-kit 정도가 있으며, 타 라이브러리와 비교 설명도 포함됩니다.", + variant: "body" as const, + }, + ], + TROUBLE_SHOOTING: [ + { + content: + "프론트엔드 개발 과정 중 발생한 문제·오류·버그를 해결하는 과정과 기록하는 페이지입니다.", + variant: "body" as const, + }, + ], + }, + + BACKEND: { + ARCHITECTURE: [ + { + content: + "백엔드 문서 중 아키텍쳐 내용이 포함되는 페이지입니다. (임시 세팅)", + variant: "body" as const, + }, + ], + ERD: [ + { + content: "백엔드 문서 중 ERD 내용이 포함되는 페이지입니다. (임시 세팅)", + variant: "body" as const, + }, + ], + TECH_STACK: [ + { + content: "백엔드 개발에 사용한 기술 스택을 기록하는 페이지입니다.", + variant: "body" as const, + }, + ], + TROUBLE_SHOOTING: [ + { + content: + "백엔드 개발 과정 중 발생한 문제·오류·버그를 해결하는 과정과 기록하는 페이지입니다.", + variant: "body" as const, + }, + ], + PERFORMANCE: [ + { + content: + "백엔드의 현재 시스템의 동작을 분석하여 속도·메모리·사용자 경험을 개선하는 활동과 전략을 작성하는 페이지입니다.", + variant: "body" as const, + }, + ], + }, + + DEPLOYMENT: { + CI: [ + { + content: "임시 세팅된 페이지입니다.", + variant: "body" as const, + }, + ], + CD: [ + { + content: "임시 세팅된 페이지입니다.", + variant: "body" as const, + }, + ], + }, +};