Community코딩 & 개발github.com

Web 프레임워크 스킬 그룹

Next.js(앱 라우터, RSC, SSR, ISR), Turborepo 모노레포를 활용한 구축. React 앱, 서버 렌더링, 빌드 최적화, 캐싱 전략, 공유 종속성에 사용합니다.

Web 프레임워크 스킬 그룹란 무엇인가요?

이 스킬 그룹은 Next.js, Turborepo, RemixIcon을 활용하여 최신 풀스택 웹 애플리케이션을 구축하는 종합 가이드를 제공합니다. Next.js는 SSR, SSG, RSC 및 최적화 기능을 갖춘 React 프레임워크이며, Turborepo는 JavaScript/TypeScript를 위한 고성능 모노레포 빌드 시스템이고, RemixIcon은 3,100개 이상의 아이콘을 제공하는 아이콘 라이브러리입니다. 이 스킬 그룹은 단일 애플리케이션이든 여러 앱과 공유 패키지가 있는 모노레포이든 관계없이 프로젝트 구축에 적합합니다. Next.js의 서버 컴포넌트, 데이터 페칭, 캐싱 전략, Turborepo의 작업 파이프라인 및 캐싱 최적화, RemixIcon의 통합 방법에 대한 상세한 참조 자료와 일반적인 패턴을 제공합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/darrenak403/kit-skills/tree/HEAD/skills/kit-web-frameworks

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

웹 프레임워크 스킬 그룹

Next.js, Turborepo, RemixIcon을 사용하여 현대적인 풀스택 웹 애플리케이션을 구축하기 위한 종합 가이드

개요

이 스킬 그룹은 웹 개발을 위한 세 가지 강력한 도구를 결합합니다:

Next.js - SSR, SSG, RSC 및 최적화 기능을 갖춘 React 프레임워크 Turborepo - JavaScript/TypeScript를 위한 고성능 모노레포 빌드 시스템 RemixIcon - 3,100개 이상의 개요 및 채우기 스타일 아이콘을 제공하는 아이콘 라이브러리

이 스킬 그룹을 사용하는 경우

  • 현대적인 React로 새로운 풀스택 웹 애플리케이션 구축
  • 여러 앱과 공유 패키지로 모노레포 설정
  • 서버 사이드 렌더링 및 정적 생성 구현
  • 지능형 캐싱으로 빌드 성능 최적화
  • 전문적인 아이콘으로 일관된 UI 생성
  • 여러 프로젝트에서 워크스페이스 종속성 관리
  • 적절한 최적화로 프로덕션 준비 애플리케이션 배포

스택 선택 가이드

단일 애플리케이션: Next.js + RemixIcon

독립 실행형 애플리케이션을 구축할 때 사용:

  • 전자상거래 사이트
  • 마케팅 웹사이트
  • SaaS 애플리케이션
  • 문서 사이트
  • 블로그 및 콘텐츠 플랫폼

설정:

npx create-next-app@latest my-app
cd my-app
npm install remixicon

모노레포: Next.js + Turborepo + RemixIcon

공유 코드로 여러 애플리케이션을 구축할 때 사용:

  • 마이크로프론트엔드
  • 멀티 테넌트 플랫폼
  • 공유 컴포넌트 라이브러리가 있는 내부 도구
  • 로직을 공유하는 여러 앱(웹, 관리자, 모바일 웹)
  • 문서 사이트가 있는 디자인 시스템

설정:

npx create-turbo@latest my-monorepo
# 그런 다음 apps/ 디렉토리에서 Next.js 앱 구성
# 공유 UI 패키지에 remixicon 설치

프레임워크 기능 비교

기능Next.jsTurborepoRemixIcon
주요 용도웹 프레임워크빌드 시스템UI 아이콘
최적 대상SSR/SSG 앱모노레포일관된 아이콘 사용
성능내장 최적화캐싱 및 병렬 작업경량 폰트/SVG
TypeScript완벽 지원완벽 지원타입 정의 제공

빠른 시작

Next.js 애플리케이션

# 새 프로젝트 생성
npx create-next-app@latest my-app
cd my-app

# RemixIcon 설치
npm install remixicon

# 레이아웃에 임포트
# app/layout.tsx
import 'remixicon/fonts/remixicon.css'

# 개발 서버 시작
npm run dev

Turborepo 모노레포

# 모노레포 생성
npx create-turbo@latest my-monorepo
cd my-monorepo

# 구조:
# apps/web/          - Next.js 애플리케이션
# apps/docs/         - 문서 사이트
# packages/ui/       - RemixIcon을 사용한 공유 컴포넌트
# packages/config/   - 공유 설정
# turbo.json         - 파이프라인 설정

# 모든 앱 실행
npm run dev

# 모든 패키지 빌드
npm run build

RemixIcon 통합

// 웹폰트 (HTML/CSS)
<i className="ri-home-line"></i>
<i className="ri-search-fill ri-2x"></i>

// React 컴포넌트
import { RiHomeLine, RiSearchFill } from "@remixicon/react"
<RiHomeLine size={24} />
<RiSearchFill size={32} color="blue" />

참조 탐색

Next.js 참조:

Turborepo 참조:

RemixIcon 참조:

일반적인 패턴 및 워크플로우

패턴 1: 풀스택 모노레포

my-monorepo/
├── apps/
│   ├── web/              # 고객 대상 Next.js 앱
│   ├── admin/            # 관리자 대시보드 Next.js 앱
│   └── docs/             # 문서 사이트
├── packages/
│   ├── ui/               # RemixIcon을 사용한 공유 UI
│   ├── api-client/       # API 클라이언트 라이브러리
│   ├── config/           # ESLint, TypeScript 설정
│   └── types/            # 공유 TypeScript 타입
└── turbo.json            # 빌드 파이프라인

turbo.json:

{
  "$schema": "https://turbo.build/schema.json",
  "pipeline": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": [".next/**", "!.next/cache/**", "dist/**"]
    },
    "dev": {
      "cache": false,
      "persistent": true
    },
    "lint": {},
    "test": {
      "dependsOn": ["build"]
    }
  }
}

패턴 2: 공유 컴포넌트 라이브러리

// packages/ui/src/button.tsx
import { RiLoader4Line } from "@remixicon/react";

export function Button({ children, loading, icon }) {
  return (
    <button>
      {loading ? <RiLoader4Line className="animate-spin" /> : icon}
      {children}
    </button>
  );
}

// apps/web/app/page.tsx
import { Button } from "@repo/ui/button";
import { RiHomeLine } from "@remixicon/react";

export default function Page() {
  return <Button icon={<RiHomeLine />}>홈</Button>;
}

패턴 3: 최적화된 데이터 페칭

// app/posts/[slug]/page.tsx
import { notFound } from "next/navigation";

// 빌드 타임에 정적 생성
export async function generateStaticParams() {
  const posts = await getPosts();
  return posts.map((post) => ({ slug: post.slug }));
}

// 1시간마다 재검증
async function getPost(slug: string) {
  const res = await fetch(`https://api.example.com/posts/${slug}`, {
    next: { revalidate: 3600 },
  });
  if (!res.ok) return null;
  return res.json();
}

export default async function Post({ params }: { params: { slug: string } }) {
  const post = await getPost(params.slug);
  if (!post) notFound();

  return <article>{post.content}</article>;
}

패턴 4: 모노레포 CI/CD 파이프라인

# .github/workflows/ci.yml
name: CI
on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 18
      - run: npm install
      - run: npx turbo run build test lint
        env:
          TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
          TURBO_TEAM: ${{ secrets.TURBO_TEAM }}

유틸리티 스크립트

scripts/ 디렉토리의 Python 유틸리티:

nextjs_init.py - 모범 사례로 Next.js 프로젝트 초기화 turborepo_migrate.py - 기존 모노레포를 Turborepo로 변환

사용 예시:

# TypeScript 및 앱 라우터로 새 Next.js 앱 초기화
python scripts/nextjs_init.py --name my-app --typescript --app-router

# 기존 모노레포를 dry-run으로 Turborepo로 마이그레이션
python scripts/turborepo_migrate.py --path ./my-monorepo --dry-run

# 테스트 실행
cd scripts/tests
pytest

모범 사례

Next.js:

  • 기본적으로 서버 컴포넌트를 사용하고, 필요한 경우에만 클라이언트 컴포넌트 사용
  • 적절한 로딩 및 오류 상태 구현
  • 자동 최적화를 위한 Image 컴포넌트 사용
  • SEO를 위한 적절한 메타데이터 설정
  • 캐싱 전략 활용 (force-cache, revalidate, no-store)
  • 안정적인 Next.js 보안 릴리스를 카나리 프레임워크 드리프트와 별도로 추적하세요. 프로덕션 앱은 패치된 안정적인 릴리스 라인을 유지하고, 특정 업스트림 문제를 테스트하지 않는 한 카나리 전용 핀을 피해야 합니다.

Turborepo:

  • 명확한 분리로 모노레포 구조화 (apps/, packages/)
  • 작업 종속성 올바르게 정의 (위상적 순서를 위해 ^build)
  • 적절한 캐싱을 위한 outputs 설정
  • 팀 협업을 위한 원격 캐싱 활성화
  • 변경된 패키지에서만 작업을 실행하도록 필터 사용

RemixIcon:

  • 미니멀한 인터페이스에는 라인 스타일, 강조에는 채우기 스타일 사용
  • 선명한 렌더링을 위해 24x24 그리드 정렬 유지
  • 접근성을 위해 aria-labels 제공
  • 유연한 테마를 위해 currentColor 사용
  • 여러 아이콘에는 웹폰트, 단일 아이콘에는 SVG 선호

리소스

구현 체크리스트

이 스택으로 구축하기:

  • 프로젝트 구조 생성 (단일 앱 또는 모노레포)
  • TypeScript 및 ESLint 설정
  • 앱 라우터로 Next.js 설정
  • Turborepo 파이프라인 설정 (모노레포인 경우)
  • RemixIcon 설치 및 설정
  • 라우팅 및 레이아웃 구현
  • 로딩 및 오류 상태 추가
  • 이미지 및 폰트 최적화 설정
  • 데이터 페칭 패턴 설정
  • 캐싱 전략 설정
  • 필요에 따라 API 라우트 추가
  • 공유 컴포넌트 라이브러리 구현 (모노레포인 경우)
  • 원격 캐싱 설정 (모노레포인 경우)
  • CI/CD 파이프라인 설정
  • 배포 플랫폼 설정

관련 스킬