Dotfiles nextjs-turborepo
Full-stack web development with Next.js and Turborepo. Stack: Next.js 14+ (App Router, RSC, Server Actions, PPR, SSR, SSG, ISR), Turborepo (monorepo, pipelines, remote caching), RemixIcon (3100+ icons). Capabilities: server components, API routes, middleware, caching strategies, build optimization, monorepo management. Actions: create, build, deploy, optimize Next.js apps, setup monorepo, configure caching. Keywords: Next.js, App Router, Server Components, RSC, Server Actions, SSR, SSG, ISR, PPR, Turborepo, monorepo, remote cache, build pipeline, parallel execution, workspace, pnpm, icons. Use when: building Next.js apps, implementing SSR/SSG, setting up monorepos, optimizing build performance, configuring caching strategies, managing shared dependencies.
git clone https://github.com/samhvw8/dotfiles
T=$(mktemp -d) && git clone --depth=1 https://github.com/samhvw8/dotfiles "$T" && mkdir -p ~/.claude/skills && cp -r "$T/dot_ccp/hub/skills/nextjs-turborepo" ~/.claude/skills/samhvw8-dotfiles-nextjs-turborepo && rm -rf "$T"
dot_ccp/hub/skills/nextjs-turborepo/SKILL.mdNext.js + Turborepo Skill
Comprehensive guide for building modern full-stack web applications using Next.js, Turborepo, and RemixIcon.
Overview
This skill group combines three powerful tools for web development:
Next.js - React framework with SSR, SSG, RSC, and optimization features Turborepo - High-performance monorepo build system for JavaScript/TypeScript RemixIcon - Icon library with 3,100+ outlined and filled style icons
When to Use This Skill Group
- Building new full-stack web applications with modern React
- Setting up monorepos with multiple apps and shared packages
- Implementing server-side rendering and static generation
- Optimizing build performance with intelligent caching
- Creating consistent UI with professional iconography
- Managing workspace dependencies across multiple projects
- Deploying production-ready applications with proper optimization
Stack Selection Guide
Single Application: Next.js + RemixIcon
Use when building a standalone application:
- E-commerce sites
- Marketing websites
- SaaS applications
- Documentation sites
- Blogs and content platforms
Setup:
npx create-next-app@latest my-app cd my-app npm install remixicon
Monorepo: Next.js + Turborepo + RemixIcon
Use when building multiple applications with shared code:
- Microfrontends
- Multi-tenant platforms
- Internal tools with shared component library
- Multiple apps (web, admin, mobile-web) sharing logic
- Design system with documentation site
Setup:
npx create-turbo@latest my-monorepo # Then configure Next.js apps in apps/ directory # Install remixicon in shared UI packages
Framework Features Comparison
| Feature | Next.js | Turborepo | RemixIcon |
|---|---|---|---|
| Primary Use | Web framework | Build system | UI icons |
| Best For | SSR/SSG apps | Monorepos | Consistent iconography |
| Performance | Built-in optimization | Caching & parallel tasks | Lightweight fonts/SVG |
| TypeScript | Full support | Full support | Type definitions available |
Quick Start
Next.js Application
# Create new project npx create-next-app@latest my-app cd my-app # Install RemixIcon npm install remixicon # Import in layout # app/layout.tsx import 'remixicon/fonts/remixicon.css' # Start development npm run dev
Turborepo Monorepo
# Create monorepo npx create-turbo@latest my-monorepo cd my-monorepo # Structure: # apps/web/ - Next.js application # apps/docs/ - Documentation site # packages/ui/ - Shared components with RemixIcon # packages/config/ - Shared configs # turbo.json - Pipeline configuration # Run all apps npm run dev # Build all packages npm run build
RemixIcon Integration
// Webfont (HTML/CSS) <i className="ri-home-line"></i> <i className="ri-search-fill ri-2x"></i> // React component import { RiHomeLine, RiSearchFill } from "@remixicon/react" <RiHomeLine size={24} /> <RiSearchFill size={32} color="blue" />
Reference Navigation
Next.js References:
- App Router Architecture - Routing, layouts, pages, parallel routes
- Server Components - RSC patterns, client vs server, streaming
- Data Fetching - fetch API, caching, revalidation, loading states
- Optimization - Images, fonts, scripts, bundle analysis, PPR
Turborepo References:
- Setup & Configuration - Installation, workspace config, package structure
- Task Pipelines - Dependencies, parallel execution, task ordering
- Caching Strategies - Local cache, remote cache, cache invalidation
RemixIcon References:
- Integration Guide - Installation, usage, customization, accessibility
Common Patterns & Workflows
Pattern 1: Full-Stack Monorepo
my-monorepo/ ├── apps/ │ ├── web/ # Customer-facing Next.js app │ ├── admin/ # Admin dashboard Next.js app │ └── docs/ # Documentation site ├── packages/ │ ├── ui/ # Shared UI with RemixIcon │ ├── api-client/ # API client library │ ├── config/ # ESLint, TypeScript configs │ └── types/ # Shared TypeScript types └── turbo.json # Build pipeline
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"] } } }
Pattern 2: Shared Component Library
// 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 />}>Home</Button> }
Pattern 3: Optimized Data Fetching
// app/posts/[slug]/page.tsx import { notFound } from 'next/navigation' // Static generation at build time export async function generateStaticParams() { const posts = await getPosts() return posts.map(post => ({ slug: post.slug })) } // Revalidate every hour 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> }
Pattern 4: Monorepo CI/CD Pipeline
# .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 }}
Utility Scripts
Python utilities in
scripts/ directory:
nextjs-init.py - Initialize Next.js project with best practices turborepo-migrate.py - Convert existing monorepo to Turborepo
Usage examples:
# Initialize new Next.js app with TypeScript and recommended setup python scripts/nextjs-init.py --name my-app --typescript --app-router # Migrate existing monorepo to Turborepo with dry-run python scripts/turborepo-migrate.py --path ./my-monorepo --dry-run # Run tests cd scripts/tests pytest
Best Practices
Next.js:
- Default to Server Components, use Client Components only when needed
- Implement proper loading and error states
- Use Image component for automatic optimization
- Set proper metadata for SEO
- Leverage caching strategies (force-cache, revalidate, no-store)
Turborepo:
- Structure monorepo with clear separation (apps/, packages/)
- Define task dependencies correctly (^build for topological)
- Configure outputs for proper caching
- Enable remote caching for team collaboration
- Use filters to run tasks on changed packages only
RemixIcon:
- Use line style for minimal interfaces, fill for emphasis
- Maintain 24x24 grid alignment for crisp rendering
- Provide aria-labels for accessibility
- Use currentColor for flexible theming
- Prefer webfonts for multiple icons, SVG for single icons
Resources
- Next.js: https://nextjs.org/docs/llms.txt
- Turborepo: https://turbo.build/repo/docs
- RemixIcon: https://remixicon.com
Implementation Checklist
Building with this stack:
- Create project structure (single app or monorepo)
- Configure TypeScript and ESLint
- Set up Next.js with App Router
- Configure Turborepo pipeline (if monorepo)
- Install and configure RemixIcon
- Implement routing and layouts
- Add loading and error states
- Configure image and font optimization
- Set up data fetching patterns
- Configure caching strategies
- Add API routes as needed
- Implement shared component library (if monorepo)
- Configure remote caching (if monorepo)
- Set up CI/CD pipeline
- Configure deployment platform