Problem
create-croco-app의 SSR 템플릿 라우트 파일이 page component를 값으로 전달하지 못합니다. 한 템플릿은 component: undefined as PageComponent를 생성하고, 다른 템플릿은 type-only import를 런타임 값처럼 사용합니다.
Evidence
packages/create-croco-app/templates/container-fullstack/apps/console-web/pages/route.ts:1-8는 import type { default as PageComponent } 뒤에 component: undefined as PageComponent를 설정합니다.
packages/create-croco-app/templates/ssr-lambda/apps/console-web/pages/route.ts:1-8는 import type { default as Page } 뒤에 component: Page satisfies Page를 사용합니다.
packages/meta-vite/src/libs/routes/types.ts:16-22의 PageRouteDefinition은 실제 React.ComponentType<RenderRouteComponentProps> 값이 필요합니다.
Desired Outcome
생성된 fullstack/SSR 앱은 route definition에서 실제 page component 값을 참조해야 하며, 빌드와 SSR 렌더가 생성 직후 동작해야 합니다.
Suggested Approach
- route 템플릿에서 page component를 일반 value import로 가져옵니다.
component 필드에 실제 component 값을 넣고 타입 검증은 satisfies PageRouteDefinition 등으로 분리합니다.
- 두 SSR 계열 템플릿이 동일한 라우트 생성 규칙을 공유하도록 정리합니다.
Acceptance Criteria
container-fullstack과 ssr-lambda 템플릿의 route 파일이 type-only import를 런타임 값으로 사용하지 않습니다.
component에 undefined 캐스팅이 남지 않습니다.
- 생성 앱의 route fixture가
pnpm typecheck와 최소 SSR smoke test를 통과합니다.
Validation
pnpm test --filter=create-croco-app
- 템플릿 생성 후
apps/console-web typecheck/build smoke
Problem
create-croco-app의 SSR 템플릿 라우트 파일이 page component를 값으로 전달하지 못합니다. 한 템플릿은component: undefined as PageComponent를 생성하고, 다른 템플릿은 type-only import를 런타임 값처럼 사용합니다.Evidence
packages/create-croco-app/templates/container-fullstack/apps/console-web/pages/route.ts:1-8는import type { default as PageComponent }뒤에component: undefined as PageComponent를 설정합니다.packages/create-croco-app/templates/ssr-lambda/apps/console-web/pages/route.ts:1-8는import type { default as Page }뒤에component: Page satisfies Page를 사용합니다.packages/meta-vite/src/libs/routes/types.ts:16-22의PageRouteDefinition은 실제React.ComponentType<RenderRouteComponentProps>값이 필요합니다.Desired Outcome
생성된 fullstack/SSR 앱은 route definition에서 실제 page component 값을 참조해야 하며, 빌드와 SSR 렌더가 생성 직후 동작해야 합니다.
Suggested Approach
component필드에 실제 component 값을 넣고 타입 검증은satisfies PageRouteDefinition등으로 분리합니다.Acceptance Criteria
container-fullstack과ssr-lambda템플릿의 route 파일이 type-only import를 런타임 값으로 사용하지 않습니다.component에undefined캐스팅이 남지 않습니다.pnpm typecheck와 최소 SSR smoke test를 통과합니다.Validation
pnpm test --filter=create-croco-appapps/console-webtypecheck/build smoke