Skip to content

stoic-park/monorepo-starter-kit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

21 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Frontend Monorepo

A production-ready monorepo template with a minimal design system, built with pnpm, Turborepo, React, and Tailwind CSS.

Features

Monorepo Structure

  • pnpm Workspaces - Efficient dependency management
  • Turborepo - Fast, smart build system
  • TypeScript - Type safety across packages

Design System

  • Design Tokens - Colors, typography, spacing, shadows, radius
  • React Components - 15+ reusable UI components
  • Tailwind Theme - Shared configuration

Developer Experience

  • ESLint & Prettier - Code quality and formatting
  • Storybook - Component documentation and development
  • Hot Module Replacement - Fast development feedback
  • Pre-commit Hooks - Automatic linting and type checking before commit

Quick Start

Prerequisites

  • Node.js >= 18.0.0
  • pnpm >= 8.0.0
# Install pnpm globally
npm install -g pnpm

Installation

# Install dependencies
pnpm install

# Setup git hooks (husky)
pnpm prepare

Development

# Run Storybook (component development)
pnpm storybook

# Format code
pnpm format

# Lint code
pnpm lint

# Type check
pnpm type-check

# Run all checks (type-check + lint + format)
pnpm check

# Auto-fix issues
pnpm check:fix

# Build all packages
pnpm build

Project Structure

monorepo-design-system-template/
โ”œโ”€โ”€ apps/
โ”‚   โ””โ”€โ”€ storybook/              # Component documentation
โ”œโ”€โ”€ packages/
โ”‚   โ”œโ”€โ”€ tokens/                 # Design tokens (colors, spacing, etc.)
โ”‚   โ”œโ”€โ”€ components/             # React UI components
โ”‚   โ””โ”€โ”€ theme/                  # Tailwind CSS preset
โ”œโ”€โ”€ docs/                       # Documentation
โ”œโ”€โ”€ package.json                # Root workspace config
โ”œโ”€โ”€ pnpm-workspace.yaml         # pnpm workspace config
โ””โ”€โ”€ turbo.json                  # Turborepo config

Packages

@design-system/tokens

Design tokens for consistent styling across applications.

import {
  colors,
  typography,
  spacing,
  shadows,
  radius,
} from '@design-system/tokens';

Features:

  • Colors (Minimal black & white with functional accents)
  • Typography (font family, size, weight, line height)
  • Spacing (consistent spacing scale)
  • Shadows (elevation system)
  • Border Radius (rounded corners)

@design-system/components

React UI component library with minimal design.

import { Button, Input, Card, Badge, Alert } from '@design-system/components';

Components:

  • Button, Input, TextArea, Select
  • Card, Badge, Alert
  • Modal, Toast
  • Checkbox, Radio
  • Typography, Divider, Stack
  • Spinner

@design-system/theme

Tailwind CSS preset with design tokens.

// tailwind.config.js
module.exports = {
  presets: [require('@design-system/theme')],
  content: ['./src/**/*.{ts,tsx}'],
};

Design Tokens

Color System

Based on shadcn/ui and Tailwind CSS color palette.

import { colors } from '@design-system/tokens';

// Pure colors
colors.white; // '#FFFFFF'
colors.black; // '#000000'

// Neutral colors (Slate - primary)
colors.slate[50]; // '#F8FAFC' - Lightest
colors.slate[500]; // '#64748B' - Medium
colors.slate[900]; // '#0F172A' - Darkest

// Alternative neutrals
colors.gray[500]; // '#6B7280'
colors.zinc[500]; // '#71717A'

// Semantic colors
colors.success.DEFAULT; // '#10B981' - Emerald-500
colors.error.DEFAULT; // '#EF4444' - Red-500
colors.warning.DEFAULT; // '#F59E0B' - Amber-500
colors.info.DEFAULT; // '#3B82F6' - Blue-500

// Chart colors (data visualization)
colors.chart[1]; // Slate-900
colors.chart[2]; // Blue-500
colors.chart[3]; // Emerald-500
// ... up to colors.chart[10]

Development Workflow

Adding a New Component

  1. Create component in packages/components/src/YourComponent/
  2. Export from packages/components/src/index.ts
  3. Build the package: cd packages/components && pnpm build
  4. Add Storybook story in apps/storybook/stories/

Creating a New App

  1. Create app folder: apps/your-app/
  2. Add to pnpm-workspace.yaml
  3. Install dependencies: pnpm install
  4. Use design system packages:
{
  "dependencies": {
    "@design-system/components": "workspace:*",
    "@design-system/tokens": "workspace:*",
    "@design-system/theme": "workspace:*"
  }
}

๐Ÿš€ Deployment

Docker Compose๋กœ ๋ฐฐํฌ

# ๋ฐฐํฌ
docker-compose up -d

# ํ™•์ธ
curl http://localhost/health

์ ‘์†: http://localhost

์ž๋™ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ

./deploy/scripts/deploy.sh

๋ฐฑ์—…/๋ณต๊ตฌ:

./deploy/scripts/backup.sh
./deploy/scripts/restore.sh [backup_file]

๋ชจ๋‹ˆํ„ฐ๋ง:

./deploy/scripts/monitoring-setup.sh
docker-compose -f docker-compose.monitoring.yml up -d

๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„ํ‚คํ…์ฒ˜ ๊ฐ€์ด๋“œ ์ฐธ๊ณ 


Code Quality

Pre-commit Hooks

์ด ํ”„๋กœ์ ํŠธ๋Š” Husky์™€ lint-staged๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋ฐ‹ ์ „ ์ž๋™์œผ๋กœ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค:

  • ESLint: ์ฝ”๋“œ ๋ฆฐํŒ…
  • Prettier: ์ฝ”๋“œ ํฌ๋งทํŒ…
  • TypeScript: ํƒ€์ž… ์ฒดํฌ

์ปค๋ฐ‹ ์‹œ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ, ์˜ค๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉด ์ปค๋ฐ‹์ด ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค.

์ˆ˜๋™ ์‹คํ–‰

# ๋ชจ๋“  ์ฒดํฌ ์‹คํ–‰
pnpm check

# ์ž๋™ ์ˆ˜์ •
pnpm check:fix

# ๊ฐœ๋ณ„ ์‹คํ–‰
pnpm type-check  # TypeScript ํƒ€์ž… ์ฒดํฌ
pnpm lint        # ESLint ๋ฆฐํŒ…
pnpm format      # Prettier ํฌ๋งทํŒ…

Documentation


์ปค์Šคํ„ฐ๋งˆ์ด์ง•

์ด ํ…œํ”Œ๋ฆฟ์€ ํ”„๋กœ์ ํŠธ์— ๋งž๊ฒŒ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํฌ์ธํŠธ

  • ๋ธŒ๋žœ๋“œ ์ƒ‰์ƒ์œผ๋กœ ๋””์ž์ธ ํ† ํฐ ๋ณ€๊ฒฝ (packages/tokens)
  • ์ปค์Šคํ…€ ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€ (packages/components)
  • ์ƒˆ ์•ฑ ์ถ”๊ฐ€ (apps/ - ๊ฐ€์ด๋“œ ์ฐธ๊ณ )
  • ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ†ตํ•ฉ
  • ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ์ถ”๊ฐ€

License

MIT License - feel free to use this template for your projects!


Credits


๐ŸŽจ Figma Integration

์ด ๋””์ž์ธ ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ํ† ํฐ์„ Figma๋กœ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ† ํฐ Export

# Figma Tokens Studio ํ˜•์‹์œผ๋กœ export
pnpm export:figma

์ƒ์„ฑ๋œ figma-tokens.json ํŒŒ์ผ์„ Figma์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Figma์—์„œ Import ๋ฐฉ๋ฒ•

  1. Figma Tokens Studio ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜

    • Figma โ†’ Plugins โ†’ Browse plugins
    • "Tokens Studio for Figma" ๊ฒ€์ƒ‰ ๋ฐ ์„ค์น˜
  2. ํ† ํฐ Import

    • ํ”Œ๋Ÿฌ๊ทธ์ธ ์—ด๊ธฐ
    • Settings โ†’ Load from JSON/File
    • figma-tokens.json ํŒŒ์ผ ์„ ํƒ
    • "Apply to document" ํด๋ฆญ
  3. ๊ฒฐ๊ณผ

    • โœ… ๋ชจ๋“  ์ƒ‰์ƒ์ด Figma Color Styles๋กœ ์ƒ์„ฑ๋จ
    • โœ… Typography๊ฐ€ Text Styles๋กœ ์ƒ์„ฑ๋จ
    • โœ… Spacing, Shadows, Radius๊ฐ€ ํ† ํฐ์œผ๋กœ ์ ์šฉ๋จ

์–‘๋ฐฉํ–ฅ ๋™๊ธฐํ™”

Figma์—์„œ ํ† ํฐ์„ ์ˆ˜์ •ํ•œ ํ›„, JSON์„ ๋‹ค์‹œ exportํ•˜์—ฌ ์ฝ”๋“œ์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›Œํฌํ”Œ๋กœ์šฐ:

์ฝ”๋“œ โ†’ figma-tokens.json โ†’ Figma
Figma โ†’ figma-tokens.json โ†’ ์ฝ”๋“œ

Related


Happy coding!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published