init
This commit is contained in:
34
CRUSH.md
Normal file
34
CRUSH.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# CRUSH.md
|
||||
|
||||
## Commands
|
||||
|
||||
- **Install dependencies**: `pnpm install`
|
||||
- **Development server**: `pnpm dev` (runs `next dev --turbopack`)
|
||||
- **Build**: `pnpm build` (runs `next build --turbopack`)
|
||||
- **Start production**: `pnpm start` (runs `next start`)
|
||||
- **Lint**: `pnpm lint` (runs `eslint`)
|
||||
- **Typecheck**: `pnpm tsc --noEmit` (TypeScript compiler without emitting files)
|
||||
- **Tests**: No test script defined. Add Jest or Vitest via `pnpm add -D vitest` and configure.
|
||||
- **Run single test**: Once tests are set up, e.g., `pnpm vitest src/app/page.test.tsx` (example; adjust based on setup).
|
||||
|
||||
## Code Style Guidelines
|
||||
|
||||
- **Language**: TypeScript with strict mode enabled (`strict: true` in tsconfig.json).
|
||||
- **Framework**: Next.js 15 (App Router). Use server components by default; mark client components with `'use client'`.
|
||||
- **Styling**: Tailwind CSS (via globals.css). Use utility classes; avoid custom CSS unless necessary.
|
||||
- **Fonts**: Geist Sans for body (`--font-geist-sans`), Geist Mono for code (`--font-geist-mono`).
|
||||
- **Imports**:
|
||||
- Use absolute paths with `@/*` alias (e.g., `import { Component } from '@/components'`).
|
||||
- Prefer named imports over default where possible.
|
||||
- Import types explicitly: `import type { Metadata } from 'next';`.
|
||||
- Group imports: Next.js/React, then third-party, then local.
|
||||
- **Formatting**: Follow ESLint rules from `eslint.config.mjs` (extends `next/core-web-vitals`, `next/typescript`). Use Prettier if added.
|
||||
- **Types**: Always type props (e.g., `Readonly<{ children: React.ReactNode }>`). Use `React.FC` sparingly; prefer function signatures.
|
||||
- **Naming Conventions**:
|
||||
- Components: PascalCase (e.g., `HomePage`).
|
||||
- Variables/functions: camelCase.
|
||||
- Files: kebab-case for pages (e.g., `page.tsx`), PascalCase for components.
|
||||
- **Error Handling**: Use Next.js error boundaries or try-catch in async functions. Log errors to console in development.
|
||||
- **Components**: Functional components with hooks. Colocate styles and logic.
|
||||
- **Paths**: Use `next/image` for images with `priority` for above-fold. Optimize with width/height.
|
||||
- **Ignores**: ESLint ignores `node_modules/**`, `.next/**`, etc. Respect `.gitignore`.
|
||||
Reference in New Issue
Block a user