wishonia wishonia .cursorrules file for TypeScript (stars: 7)

# Project-specific rules for Cursor AI
[project]
name = "wishonia"
framework = "next.js"
version = "15.0"
router = "app"
style = "tailwind"
typescript = true
package_manager = "pnpm"

# Logging guidelines
[logging]
usage = """
import { logger } from '@/lib/logger'

✅ DO:
- Simple logs:
  logger.info('Operation completed')
  logger.debug('Debug details', { userId: 123, action: 'signup' })

- Error logs (auto-sent to Sentry):
  logger.error('Operation failed', error)
  logger.error('Operation failed', {
    error,
    metadata: { operation: 'signup' }
  })

- Structured data:
  logger.info('Search results', { results, count, query })
  logger.warn('Rate limit', rateLimitData)

❌ DON'T:
- Use console.log/warn/error directly
- Log sensitive data (passwords, tokens)
- Create new logger instances
"""

# Define the project's architecture and conventions
[architecture]
server_components = [
    "app/**/page.tsx",
    "app/**/layout.tsx",
    "app/**/template.tsx"
]
client_components = [
    "components/**/*.tsx",
    "app/**/components/*.tsx"
]
hooks = ["lib/hooks/**/*.ts"]
utils = ["lib/**/*.ts"]
config = ["config/**/*.ts"]
types = ["types/**/*.ts"]

# Component and Authentication Guidelines
[components]
server = """
IMPORTANT: Server Components (pages)
- Never add 'use client' to page.tsx files
- No hooks or browser APIs
- Fetch data server-side when possible
- Import client components as needed

Auth Usage:
In the page.tsx file, import the session from next-auth/next and redirect to the signin page if the user is not authenticated.
import { getServerSession } from "next-auth/next"
import { authOptions } from "@/lib/auth"
  const session = await getServerSession(authOptions)

  if (!session?.user) {
    redirect(`/signin?callbackUrl=/my-page`)
  }

"""

client = """
When to use client components:
- Uses hooks (useState, useEffect, etc.)
- Needs browser APIs
- Has user interactions
- Uses client-side libraries

Location: app/my-feature/components/InteractiveComponent.tsx

Auth Usage:
import { useSession } from 'next-auth/react'
const { data: session } = useSession()
"""

# Next.js App Router conventions
[next]
routing = """
- Use app directory for all routes
- page.tsx files are automatically server components
- loading.tsx for loading states
- error.tsx for error handling
- layout.tsx for shared layouts
"""

data_fetching = """
- Use server components for data fetching when possible
- Leverage React Server Components for better performance
- Use route handlers (route.ts) for API endpoints
"""

# Type Safety and Database
[code_quality]
types = """
- Use TypeScript strict mode
- Import Prisma types directly from @prisma/client
- Create interfaces for component props
- Avoid 'any' type
- Always prefer schema.prisma types over creating new ones

Example:
import { Post, User } from '@prisma/client'
"""

best_practices = """
✅ DO:
- Keep pages as server components
- Create separate client components for interactivity
- Use self-documenting names
- Choose simple implementations
- Use proper auth imports based on component type

❌ DON'T:
- Mix client and server code in same component
- Create new types when Prisma types exist
- Use cryptic or abbreviated names
"""

# Performance guidelines
performance = """
- Keep pages as server components when possible
- Use client components only when necessary
- Implement proper code splitting
- Use React Suspense boundaries wisely
"""

# File patterns to ignore
[ignore]
patterns = [
    "node_modules",
    ".next",
    "build",
    "dist",
    "public/assets",
    ".git"
]

# Testing guidelines
[testing]
jest = """
- Always set @jest-environment node at the top of test files
- Write tests that can safely run against production
- Use real implementations instead of mocks where possible

Example header:
/**
 * @jest-environment node
 */
"""
css
html
javascript
jest
jupyter notebook
mermaid
next.js
npm
+10 more

First Time Repository

A decentralized semi-autonomous todo list for humanity

TypeScript

Languages:

CSS: 14.8KB
HTML: 0.7KB
JavaScript: 32.2KB
Jupyter Notebook: 102.5KB
Mermaid: 0.7KB
PLpgSQL: 4.2KB
PowerShell: 12.2KB
Python: 8.0KB
Solidity: 6.7KB
TypeScript: 3503.5KB
Created: 4/2/2024
Updated: 1/6/2025

All Repositories (1)

A decentralized semi-autonomous todo list for humanity