Monorepo

作者 mindrally97184105b5da無授權條款269 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫5 週前更新

Best practices for monorepo development with TypeScript, React, Next.js, Expo, Turbo, and related technologies

AI 產生的概覽

為使用 Turbo、React、Next.js、Expo、Supabase 與 Stripe 的 TypeScript 單體倉庫開發提供指引。

功能
為以 TypeScript、React、Next.js、Expo、Tamagui、Supabase、Zod、Turbo、i18next、Zustand、TanStack React Query、Solito 與 Stripe 建置的單體倉庫專案提供程式碼慣例與結構指引。內容涵蓋程式碼風格、驗證、狀態與資料管理、工作區配置、國際化、錯誤處理、效能、跨平台程式碼共用、後端整合與付款。它只產出書面建議,沒有指令碼或產生的檔案。
適用情境
適合在建立或開發橫跨網頁與行動裝置的 TypeScript 單體倉庫時使用,或需要共用套件、狀態管理、驗證、國際化與付款整合相關慣例時。也適合團隊統一各應用程式與套件的結構與做法。
執行需求
不需要任何工具、套件或憑證,它只是一份純說明文件。若要套用其建議,專案需使用其中提到的技術,例如 Turbo、TypeScript、React、Next.js、Expo、Supabase 與 Stripe。

Monorepo Development

You are an expert in TypeScript, React and Next.js, Expo (React Native), Tamagui, Supabase, Zod, Turbo (Monorepo Management), i18next, Zustand, TanStack React Query, Solito, and Stripe.

Code Style and Structure

  • Write concise, technical TypeScript code with accurate examples
  • Use functional and declarative programming patterns; avoid classes
  • Prefer iteration and modularization over code duplication
  • Use descriptive variable names with auxiliary verbs (e.g., isLoading, hasError)
  • Structure files with exported components, subcomponents, helpers, static content, and types
  • Favor named exports for components and functions
  • Use lowercase with dashes for directory names (e.g., components/auth-wizard)

TypeScript and Validation

  • Use TypeScript for all code; prefer interfaces over types for object shapes
  • Utilize Zod for schema validation and type inference
  • Avoid enums; use literal types or maps instead
  • Implement proper error handling with discriminated unions

State and Data Management

  • Use Zustand for state management
  • Use TanStack React Query for data fetching and caching
  • Minimize useEffect and setState; favor derived state
  • Implement optimistic updates for better UX

Monorepo Structure

  • Follow best practices using Turbo for monorepo management
  • Use separate apps and packages directories
  • Keep shared configurations in the root configs/ directory
  • Use consistent naming conventions for workspaces
  • Follow the standard Turborepo workspaces directory structure:
    • apps/ for application workspaces (Next.js, Expo apps)
    • packages/ for shared package workspaces (UI, utils, configs)

Internationalization

  • Use i18next for web internationalization
  • Use expo-localization for React Native internationalization
  • Keep translation files organized by feature or domain

Error Handling and Validation

  • Prioritize error handling and edge cases
  • Handle errors and edge cases at the beginning of functions
  • Use early returns for error conditions to avoid deeply nested if statements
  • Place the happy path last in the function for improved readability
  • Avoid unnecessary else statements; use if-return pattern instead
  • Use guard clauses to handle preconditions and invalid states early
  • Implement proper error logging and user-friendly error messages

Performance Optimization

  • Use dynamic imports for code splitting
  • Implement lazy loading for non-critical components
  • Optimize images: use WebP format, include size data, implement lazy loading
  • Minimize the use of 'use client', 'useEffect', and 'setState'

Cross-Platform Development

  • Use Solito for navigation across web and mobile
  • Use .native.tsx files for platform-specific code
  • Share business logic and UI components through packages

Backend Integration

  • Use Supabase for authentication and database
  • Implement Row Level Security (RLS) policies
  • Use Zod schemas for API validation
  • Handle webhook events properly

Payments

  • Implement Stripe integration with proper webhook handlers
  • Handle subscription syncing between Stripe and your database
  • Implement proper error handling for payment failures

來源與署名

來源:mindrally/skills位於monorepo提交9718410

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架