# 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