Skip to content

Latest commit

 

History

History
62 lines (44 loc) · 1.26 KB

File metadata and controls

62 lines (44 loc) · 1.26 KB

Coding Standards & Best Practices

Import Guidelines

Type Imports

// ✅ Good - Use type imports for TypeScript types
import type { User } from "@prisma/client";
import type { NextApiRequest, NextApiResponse } from "next";

// ❌ Bad - Regular import for types
import { User } from "@prisma/client";

Code Structure

Early Returns

  • Prefer early returns to reduce nesting: if (!booking) return null;

Composition Over Prop Drilling

  • Use React children and context instead of passing props through multiple components

ORM and Types

  • Never import @calcom/prisma/client in features, services, UI, or handlers.
  • Use repository DTOs or domain types instead.
  • See "Repository + DTO Pattern and Method Conventions" in the knowledge base for details and examples.

Security Rules

// ❌ NEVER expose credential keys
const user = await prisma.user.findFirst({
  select: {
    credentials: {
      select: {
        key: true, // ❌ NEVER do this
      }
    }
  }
});

// ✅ Good - Never select credential.key field
const user = await prisma.user.findFirst({
  select: {
    credentials: {
      select: {
        id: true,
        type: true,
        // key field is excluded for security
      }
    }
  }
});