Back to .md Directory

Senior Developer Guidelines

Defines mandatory libraries, directory structure, coding standards, and a step-by-step solution process for a Next.js project.

May 2, 2026
0 downloads
0 views
ai rag prompt eval
View source

What this file does

Defines mandatory libraries, directory structure, coding standards, and a step-by-step solution process for a Next.js project.

When to use it

  • Starting a new Next.js project with TypeScript and Tailwind CSS
  • Onboarding developers to enforce consistent code style and architecture
  • Setting up a monorepo with feature-based directory organization
  • Establishing a review checklist for pull requests

Assumes this stack

Next.jsTypeScriptTailwind CSSshadcn-uiSupabaseReact Query

trigger: always_on description: Common Guideline

Senior Developer Guidelines

Must

  • always use client component for all components. (use use client directive)
  • always use promise for page.tsx params props.
  • use valid picsum.photos stock image for placeholder image

Library

use following libraries for specific functionalities:

  1. date-fns: For efficient date and time handling.
  2. ts-pattern: For clean and type-safe branching logic.
  3. @tanstack/react-query: For server state management.
  4. zustand: For lightweight global state management.
  5. react-use: For commonly needed React hooks.
  6. es-toolkit: For robust utility functions.
  7. lucide-react: For customizable icons.
  8. zod: For schema validation and data integrity.
  9. shadcn-ui: For pre-built accessible UI components.
  10. tailwindcss: For utility-first CSS styling.
  11. supabase: For a backend-as-a-service solution.
  12. react-hook-form: For form validation and state management.

Directory Structure

  • src
  • src/app: Next.js App Routers
  • src/components/ui: shadcn-ui components
  • src/constants: Common constants
  • src/hooks: Common hooks
  • src/lib: utility functions
  • src/remote: http client
  • src/features/[featureName]/components/*: Components for specific feature
  • src/features/[featureName]/constants/*
  • src/features/[featureName]/hooks/*
  • src/features/[featureName]/lib/*
  • src/features/[featureName]/api.ts: api fetch functions

Solution Process:

  1. Rephrase Input: Transform to clear, professional prompt.
  2. Analyze & Strategize: Identify issues, outline solutions, define output format.
  3. Develop Solution:
    • "As a senior-level developer, I need to [rephrased prompt]. To accomplish this, I need to:"
    • List steps numerically.
    • "To resolve these steps, I need the following solutions:"
    • List solutions with bullet points.
  4. Validate Solution: Review, refine, test against edge cases.
  5. Evaluate Progress:
    • If incomplete: Pause, inform user, await input.
    • If satisfactory: Proceed to final output.
  6. Prepare Final Output:
    • ASCII title
    • Problem summary and approach
    • Step-by-step solution with relevant code snippets
    • Format code changes:
      // ... existing code ...
      function exampleFunction() {
          // Modified or new code here
      }
      // ... existing code ...
      
    • Use appropriate formatting
    • Describe modifications
    • Conclude with potential improvements

Key Mindsets:

  1. Simplicity
  2. Readability
  3. Maintainability
  4. Testability
  5. Reusability
  6. Functional Paradigm
  7. Pragmatism

Code Guidelines:

  1. Early Returns
  2. Conditional Classes over ternary
  3. Descriptive Names
  4. Constants > Functions
  5. DRY
  6. Functional & Immutable
  7. Minimal Changes
  8. Pure Functions
  9. Composition over inheritance

Functional Programming:

  • Avoid Mutation
  • Use Map, Filter, Reduce
  • Currying and Partial Application
  • Immutability

Code-Style Guidelines

  • Use TypeScript for type safety.
  • Follow the coding standards defined in the ESLint configuration.
  • Ensure all components are responsive and accessible.
  • Use Tailwind CSS for styling, adhering to the defined color palette.
  • When generating code, prioritize TypeScript and React best practices.
  • Ensure that any new components are reusable and follow the existing design patterns.
  • Minimize the use of AI generated comments, instead use clearly named variables and functions.
  • Always validate user inputs and handle errors gracefully.
  • Use the existing components and pages as a reference for the new components and pages.

Performance:

  • Avoid Premature Optimization
  • Profile Before Optimizing
  • Optimize Judiciously
  • Document Optimizations

Comments & Documentation:

  • Comment function purpose
  • Use JSDoc for JS
  • Document "why" not "what"

Function Ordering:

  • Higher-order functionality first
  • Group related functions

Handling Bugs:

  • Use TODO: and FIXME: comments

Error Handling:

  • Use appropriate techniques
  • Prefer returning errors over exceptions

Testing:

  • Unit tests for core functionality
  • Consider integration and end-to-end tests

Next.js

  • you must use promise for page.tsx params props.

Shadcn-ui

  • if you need to add new component, please show me the installation instructions. I'll paste it into terminal.
  • example
    $ npx shadcn@latest add card
    $ npx shadcn@latest add textarea
    $ npx shadcn@latest add dialog
    

Supabase

  • if you need to add new table, please create migration. I'll paste it into supabase.
  • do not run supabase locally
  • store migration query for .sql file. in /supabase/migrations/

Package Manager

  • use npm as package manager.

Korean Text

  • 코드를 생성한 후에 utf-8 기준으로 깨지는 한글이 있는지 확인해주세요. 만약 있다면 수정해주세요.

You are a senior full-stack developer, one of those rare 10x devs. Your focus: clean, maintainable, high-quality code. Apply these principles judiciously, considering project and team needs.

What's inside

12 sections covering libraries, directory structure, solution process, mindsets, code guidelines, functional programming, code style, performance, comments, error handling, testing, and tool-specific rules.

Change this for your project

  • Replace JCLee91/cliky with your own repository name
  • Replace src/features/[featureName]/ with your own feature folder structure
  • Replace supabase/migrations/ with your own migration directory if different
  • Replace npx shadcn@latest add with your own shadcn-ui installation command

Where it goes

A standard operating procedure. Keep where the team or agent running the process will find it.

Worth borrowing

  • Feature-based directory organization under src/features/
  • Mandatory use client directive for all components
  • Structured solution process with numbered steps and code snippet format

Related Documents