토론

기술 스택 분석 및 Cursor 규칙 생성기

Wikiprompt, 무료 프롬프트 백과사전에서

Dan ⚡️

2025년 6월 23일

기술 스택 분석 및 Cursor 규칙 생성기 프로젝트 의존성을 분석하고 기술 스택, 버전, 모범 사례를 문서화하는 포괄적인 커서 규칙 파일을 생성합니다.

프롬프트 내용저장

🌐
=================== --- description: 애플리케이션의 기술 스택과 버전, 그리고 모범 사례에 대한 지침 globs: alwaysApply: true --- # 페이지 UI 기술 스택 및 의존성 가이드 ## 프로젝트 개요 **페이지 UI**는 현대적인 React/Next.js 스택 기반의 랜딩 페이지 컴포넌트 라이브러리입니다: - **웹사이트**: 컴포넌트 데모가 포함된 Next.js 14 문서 사이트 - **CLI 도구**: 쉬운 프로젝트 초기화를 위한 `@ page-ui/wizard` - **컴포넌트**: Radix UI + Tailwind CSS 기반의 복사-붙여넣기 React 컴포넌트 ## 핵심 프레임워크 스택 ### **Next.js 14.2.24** (앱 라우터) - **프레임워크**: 앱 라우터 아키텍처를 갖춘 React 메타 프레임워크 - **사용 기능**: API 라우트, SSG/SSR, OG 이미지 생성, 번들 분석 - **모범 사례**: 앱 라우터 패턴 사용, pages 디렉토리 사용 지양 ### **React 18.2.0** - **UI 라이브러리**: 동시성 기능을 갖춘 핵심 React 라이브러리 - **기능**: Suspense, 자동 배칭, 서버 컴포넌트 - **모범 사례**: React 18 패턴 사용 ### **TypeScript 5.1.3** - **구성**: 더 나은 타입 안전성을 위한 strict 모드 활성화 - **모범 사례**: 최신 TS 버전 사용 ## UI 컴포넌트 시스템 ### **Radix UI 프리미티브** (v1.x 시리즈) 접근성 우선 컴포넌트 라이브러리 생태계: **모범 사례**: - 복합 컴포넌트 패턴 사용 - 인라인 스타일 대신 항상 Tailwind 클래스로 커스터마이즈 - 적절한 ARIA 속성 구현 (내장) - 일관된 스타일링을 위한 커스텀 컴포넌트로 래핑 ### **Shadcn/UI 디자인 패턴** - **위치**: `/components/shared/ui/` 디렉토리 - **철학**: NPM 의존성이 아닌 복사-붙여넣기 컴포넌트 - **스타일링**: 테마를 위한 Tailwind CSS + CSS 변수 - **변형**: 타입 안전 변형을 위한 `class-variance-authority` 사용 ## 스타일링 및 디자인 시스템 ### **Tailwind CSS 3.3.3** + 생태계 ```json { "tailwindcss": "^3.3.3", "@ tailwindcss/forms": "^0.5.4", "@ tailwindcss/typography": "^0.5.9", "tailwindcss-animate": "^1.0.7", "tailwind-merge": "^1.14.0" } ``` **모범 사례**: - 조건부 클래스에 `tailwind-merge` 사용: `cn(baseClasses, conditionalClasses)` - 테마를 위한 CSS 변수 활용: `hsl(var(--primary))` - 폼 및 타이포그래피를 위한 플러그인 사용 - 일관된 간격 및 색상 시스템 구현 ### **애니메이션 라이브러리** - **Framer Motion 10.16.4**: 복잡한 애니메이션, 페이지 전환 - **Tailwind Animate**: 간단한 CSS 애니메이션 - **모범 사례**: 간단한 효과는 CSS 애니메이션, 복잡한 상호작용은 Framer Motion 사용 ```typescript // Framer Motion 모범 사례: import { motion, AnimatePresence } from 'framer-motion' function AnimatedComponent() { return ( <motion.div initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} exit={{ opacity: 0, y: -20 }} transition={{ duration: 0.3 }} > Content </motion.div> ) } ``` ## 상태 관리 및 폼 ### **Zustand 4.5.2** (글로벌 상태) - **철학**: 최소한의, 독단적이지 않은 상태 관리 - **용도**: 테마 기본 설정, 전역 UI 상태, 컴포넌트 플레이그라운드 상태 - **모범 사례**: 적절한 셀렉터로 타입이 지정된 스토어 생성 ```typescript interface ThemeState { theme: 'light' | 'dark' setTheme: (theme: 'light' | 'dark') => void } export const useThemeStore = create<ThemeState>((set) => ({ theme: 'light', setTheme: (theme) => set({ theme }), })) ``` ### **React Hook Form 7.46.2** + 검증 - **폼 라이브러리**: 성능이 뛰어난, 비제어 폼 - **검증**: `@ hookform/resolvers` ^3.3.1 + `zod` ^3.22.2 - **통합**: Radix UI 폼 컴포넌트와 원활하게 작동 ```typescript // 모범 사례 폼 설정: const formSchema = z.object({ email: z.string().email(), name: z.string().min(2), }) function ContactForm() { const form = useForm<z.infer<typeof formSchema>>({ resolver: zodResolver(formSchema), }) return <form onSubmit={form.handleSubmit(onSubmit)}>...</form> } ``` ### **Zod 3.22.2** (스키마 검증) - **용도**: 폼 검증, API 응답 검증, 타입 생성 - **모범 사례**: 사용처 근처에 스키마 정의, 타입 추론 활용 ## 콘텐츠 관리 시스템 ### **커스텀 Contentlayer 구현** ```json { "@ shipixen/next-contentlayer-module": "1.0.2", "shipixen-contentlayer": "1.0.2", "@ shipixen/pliny": "1.0.13" } ``` **기능**: - 타입 안전 MDX 처리 - Frontmatter 파싱 - 자동화된 콘텐츠 가져오기 - RSS 피드 생성 ### **MDX 처리 파이프라인** **Remark 플러그인** (Markdown 처리): - `remark-gfm` ^3.0.1: GitHub 플레이버 Markdown - `remark-math` ^5.1.1: 수식 표현 **Rehype 플러그인** (HTML 처리): - `rehype-slug` ^5.1.0: 제목 ID 자동 생성 - `rehype-autolink-headings` ^6.1.0: 제목 자동 링크 - `rehype-prism-plus` ^1.6.1: 구문 강조 - `rehype-katex` ^6.0.3: 수식 렌더링 **모범 사례**: - 콘텐츠는 런타임이 아닌 빌드 시간에 처리 - 안정적인 빌드를 위해 일관된 플러그인 버전 사용 - 생성된 타입으로 타입 안전 콘텐츠 쿼리 ## 개발 경험 ### **코드 품질 도구** ```json { "eslint": "^8.45.0", "@ typescript-eslint/eslint-plugin": "^6.1.0", "@ typescript-eslint/parser": "^6.1.0", "eslint-config-next": "^14.2.24", "eslint-config-prettier": "^8.8.0", "prettier": "^3.0.0", "prettier-plugin-tailwindcss": "^0.4.1" } ``` **Git 워크플로우**: - **Husky 8.0.0**: Git 후크 자동화 - **lint-staged 13.0.0**: 커밋 전 린팅 및 포맷팅 ### **인터랙티브 개발 도구** - **Monaco Editor 0.45.0**: 컴포넌트 플레이그라운드를 위한 브라우저 내 코드 편집 - **명령 팔레트**: 전역 검색 및 탐색을 위한 `cmdk` ^0.2.0 - **번들 분석기**: 성능 모니터링을 위한 `@ next/bundle-analyzer` ## CLI 도구 (@ page-ui/wizard) ### **패키지 구성** ```json { "name": "@ page-ui/wizard", "type": "module", "bin": "./packages/cli/index.mjs", "engines": { "node": ">=14.17.0" } } ``` ### **CLI 의존성** ```json { "chalk": "^5.3.0", // 터미널 색상 및 스타일링 "commander": "^12.0.0", // 커맨드 라인 인터페이스 프레임워크 "enquirer": "^2.4.1", // 인터랙티브 CLI 프롬프트 "ora": "^8.0.1" // CLI용 로딩 스피너 } ``` **모범 사례**: - ESM 모듈 사용 (`.mjs` 확장자) - enquirer로 인터랙티브 프롬프트 제공 - ora 스피너로 진행 상황 표시 - chalk로 일관된 터미널 스타일링 ## 분석 및 외부 서비스 ### **Vercel 생태계** - **분석**: `@ vercel/analytics` ^1.1.1 - **OG 이미지**: `@ vercel/og` ^0.5.20 - **모범 사례**: 최적의 성능을 위해 Vercel 네이티브 도구 사용 ### **제품 분석** - **PostHog 1.130.1**: 기능 플래그, 사용자 추적, A/B 테스트 - **모범 사례**: 적절한 동의 관리로 프라이버시 준수 설정 ### **HTTP 클라이언트** - **Axios 1.7.7**: API 호출, 뉴스레터 구독 - **모범 사례**: 기본 구성으로 axios 인스턴스 생성 ## 유틸리티 라이브러리 ### **날짜 및 시간** - **date-fns 2.30.0**: 모듈형 날짜 유틸리티 라이브러리 - **모범 사례**: 트리 셰이킹을 위해 필요한 함수만 가져오기 ```typescript // 좋음: 트리 셰이킹 가능한 가져오기 import { format, parseISO } from 'date-fns' // 나쁨: 전체 라이브러리 가져오기 import * as dateFns from 'date-fns' ``` ### **스타일링 및 UI 유틸리티** - **clsx 2.0.0**: 조건부 className 유틸리티 - **class-variance-authority 0.7.0**: 타입 안전 컴포넌트 변형 - **chroma-js 2.4.2**: 색상 조작 및 테마 생성 ### **데이터 표시** - **@tanstack/react-table 8.10.7**: 강력한 테이블 컴포넌트 - **lucide-react 0.400.0**: 아이콘 라이브러리 - **sonner 1.3.1**: 토스트 알림

전체 프롬프트를 보려면 로그인하세요

Continue with:

By logging in, you agree to our Terms of Use and Privacy Policy

사용법

이 프롬프트는 coding와 함께 사용하도록 설계되었습니다. 위의 프롬프트 내용을 복사하여 원하는 AI 도구에 붙여넣으세요.

최상의 결과를 얻으려면 자리 표시자(대괄호 또는 대문자로 표시)를 특정 요구 사항으로 사용자 지정할 수 있습니다.

참고 자료

분류:coding| twitter| tech-stack| cursor-rules

토론