skills/projanvil/mindforge/frontend-react

frontend-react

SKILL.md

React Development Skill

Comprehensive skill for modern React development, focusing on Next.js, TypeScript, Tailwind CSS, and the wider React ecosystem.

Technology Stack

Core Framework: React + Next.js

React Fundamentals

  • Component-Based: Declarative UI building blocks
  • Hooks: Functional state and side-effect management (useState, useEffect, useContext)
  • Virtual DOM: Efficient reconciliation and rendering
  • React Server Components (RSC): Server-side rendering with zero client-side bundle size for static content

Next.js Features (App Router)

  • App Router: File-system based routing in app/ directory
  • Server Actions: Direct server-side mutations from client components
  • Streaming SSR: Progressive rendering with Suspense
  • Metadata API: SEO and social share optimization
  • Route Handlers: API endpoints (GET, POST, etc.) in route.ts files
  • Middleware: Request interception and processing

UI Framework: Tailwind CSS + shadcn/ui

Tailwind CSS

  • Utility-first CSS framework
  • Responsive design with prefixes (md:, lg:)
  • Custom configuration via tailwind.config.ts
  • Dark mode support

shadcn/ui

  • Reusable components built with Radix UI and Tailwind CSS
  • Accessible and customizable
  • "Own your code" philosophy (components copied to your project)
  • Key Components: Button, Dialog, Form, Dropdown, Card, Sheet

State Management

  • Local State: useState, useReducer
  • Global State: React Context, Zustand (for lightweight global state)
  • Server State: TanStack Query (React Query) for async data fetching and caching

Project Architecture

Recommended Directory Structure (Next.js App Router)

src/
├── app/
│   ├── layout.tsx         # Root layout
│   ├── page.tsx           # Home page
│   ├── globals.css        # Global styles
│   ├── (auth)/            # Route group (doesn't affect URL path)
│   │   ├── login/
│   │   │   └── page.tsx
│   │   └── register/
│   │       └── page.tsx
│   └── api/               # API routes
├── components/
│   ├── ui/                # shadcn/ui components
│   │   ├── button.tsx
│   │   └── ...
│   ├── Navbar.tsx
│   └── Footer.tsx
├── lib/
│   ├── utils.ts           # Utility functions (cn, etc.)
│   └── db.ts              # Database connection
└── hooks/                 # Custom React hooks
    └── use-toast.ts

Best Practices

Component Design

  • Server by Default: Use Server Components for everything that doesn't need interactivity.
  • Client Boundary: Add 'use client' directive only when using hooks or event listeners.
  • Composition: Use children prop to avoid prop drilling.
  • Micro-Components: Break down complex UIs into smaller, single-responsibility components.

Performance

  • Image Optimization: Use next/image for automatic optimization.
  • Font Optimization: Use next/font to prevent layout shift.
  • Lazy Loading: Use next/dynamic or React.lazy for heavy components.
  • Code Splitting: Automatic in Next.js, but be mindful of large dependencies.

Accessibility (a11y)

  • Use semantic HTML tags (<main>, <article>, <nav>).
  • Ensure all interactive elements have keyboard support.
  • Use valid ARIA attributes when semantic HTML isn't enough.
  • Radix UI primitives (used in shadcn/ui) handle many a11y concerns automatically.

Common Code Patterns

Next.js Page (Server Component)

import { db } from "@/lib/db"

export default async function DashboardPage() {
  const data = await db.user.findMany()

  return (
    <main className="p-6">
      <h1 className="text-2xl font-bold">Dashboard</h1>
      <ul>
        {data.map(user => (
          <li key={user.id}>{user.name}</li>
        ))}
      </ul>
    </main>
  )
}

Client Component with State

"use client"

import { useState } from "react"
import { Button } from "@/components/ui/button"

export function Counter() {
  const [count, setCount] = useState(0)

  return (
    <div className="flex gap-4 items-center">
      <span>Count: {count}</span>
      <Button onClick={() => setCount(c => c + 1)}>Increment</Button>
    </div>
  )
}
Weekly Installs
6
GitHub Stars
3
First Seen
Feb 28, 2026
Installed on
opencode6
gemini-cli6
claude-code6
github-copilot6
codex6
kimi-cli6