remcostoeten electron-nextjs-tsx-prisma .cursorrules file for TypeScript

{
  "projectStructure": {
    "src": {
      "api": {
        "db": ["index.ts", "schema.ts"],
        "queries": {
          "_pattern": "kebab-case",
          "files": ["index.ts", "{query-name}.ts"],
          "description": "Generic non-feature specific queries"
        },
        "mutations": {
          "_pattern": "kebab-case",
          "files": ["index.ts", "{mutation-name}.ts"],
          "description": "Generic non-feature specific mutations"
        },
        "models": {
          "_pattern": "kebab-case",
          "files": ["index.ts", "{model-name}.z.ts"],
          "description": "Zod validation schemas"
        }
      },
      "components": {
        "_description": "One-time use components and non-feature specific components",
        "layout": ["header.tsx", "sidebar.tsx", "footer.tsx"]
      },
      "core": {
        "config": ["site-config.ts", "fonts.ts"],
        "types": ["{type-name}.d.ts"],
        "animations": ["index.ts"]
      },
      "features": {
        "{feature-name}": {
          "components": ["index.ts", "{component-name}.tsx"],
          "hooks": ["index.ts", "use-{hook-name}.ts"],
          "utils": ["index.ts", "{util-name}.ts"],
          "api": {
            "queries": ["index.ts", "{query-name}.ts"],
            "mutations": ["index.ts", "{mutation-name}.ts"],
            "models": ["index.ts", "{model-name}.z.ts"]
          }
        }
      },
      "shared": {
        "components": {
          "ui": {
            "_description": "shadcn/ui components",
            "files": ["index.ts", "{component-name}.tsx"]
          }
        },
        "helpers": ["index.ts", "{helper-name}.ts"],
        "hooks": ["index.ts", "use-{hook-name}.ts"]
      },
      "services": ["{service-name}.service.ts"],
      "styles": ["globals.css"]
    },
    "main": {
      "_description": "Electron main process files",
      "files": ["index.ts", "preload.ts"]
    },
    "renderer": {
      "_description": "Next.js renderer process files",
      "pages": ["_app.tsx", "index.tsx"],
      "components": {
        "_pattern": "kebab-case",
        "files": ["{component-name}.tsx"]
      }
    },
    "docs": {
      "_description": "Documentation for important features and business logic",
      "files": ["{feature-name}.mdx"]
    },
    "scripts": {
      "_description": "Utility scripts",
      "files": ["{script-name}.sh"]
    }
  },
  "codingStandards": {
    "general": {
      "fileNaming": "kebab-case",
      "preferTypes": true,
      "interfaceUsage": "only when needed",
      "exportStyle": "named exports in index.ts"
    },
    "components": {
      "style": "function declarations",
      "format": "props destructuring",
      "example": [
        "function ComponentName({ prop1, prop2 }) {",
        "  const logic = someLogic",
        "  return (",
        "    <>",
        "      {content}",
        "    </>",
        "  )",
        "}"
      ]
    },
    "documentation": {
      "coreFiles": {
        "format": "jsdoc",
        "template": [
          "/**",
          " * @author Remco Stoeten",
          " * @description Brief description",
          " * @description Additional details if needed",
          " */"
        ]
      },
      "complexFeatures": {
        "format": "mdx",
        "location": "/docs/{feature-name}.mdx"
      }
    },
    "imports": {
      "style": "named imports",
      "ordering": [
        "react/next imports",
        "external libraries",
        "internal absolute imports",
        "internal relative imports",
        "types/interfaces",
        "styles"
      ]
    }
  },
  "database": {
    "naming": {
      "models": "PascalCase",
      "fields": "camelCase",
      "enums": "PascalCase"
    },
    "location": {
      "schema": "prisma/schema.prisma",
      "migrations": "prisma/migrations"
    }
  }
} 
css
javascript
next.js
prisma
react
shadcn/ui
typescript

First Time Repository

A electorn app running on typescript, nexjs and prisma database to store snippets and notes.

TypeScript

Languages:

CSS: 1.5KB
JavaScript: 1.9KB
TypeScript: 16.5KB
Created: 1/5/2025
Updated: 1/5/2025

All Repositories (1)

A electorn app running on typescript, nexjs and prisma database to store snippets and notes.