UNPKG

@sprouted/create-vibes

Version:
69 lines (59 loc) 1.8 kB
# Code Patterns in Vibes ## Feature Structure Pattern ``` features/[feature-name]/ ├── ui/ # User interface layer ├── api/ # HTTP/GraphQL endpoints ├── logic/ # Business logic and services ├── data/ # Data models and repositories ├── tests/ # Feature-specific tests └── index.ts # Public exports ``` ## Common Patterns ### 1. Creating a New Feature ```typescript // features/[feature-name]/index.ts export * from './ui'; export * from './api'; export * from './logic'; export * from './data'; ``` ### 2. API Route Pattern ```typescript // features/[feature-name]/api/routes/[resource].ts export const routes = { 'GET /api/[resource]': handlers.list, 'POST /api/[resource]': handlers.create, 'PUT /api/[resource]/:id': handlers.update, 'DELETE /api/[resource]/:id': handlers.delete }; ``` ### 3. Service Pattern ```typescript // features/[feature-name]/logic/services/[Resource]Service.ts export class ResourceService { constructor(private repo: ResourceRepository) {} async create(data: CreateResourceDto): Promise<Resource> { // Business logic here return this.repo.save(data); } } ``` ### 4. Component Pattern ```typescript // features/[feature-name]/ui/components/[Component].tsx export function Component({ prop }: ComponentProps) { const { data, loading } = useResource(); if (loading) return <Loading />; return ( <div> {/* Component JSX */} </div> ); } ``` ## AI Assistant Tips - Features are self-contained - all related code lives together - Use the `index.ts` barrel exports to understand what a feature exposes - Shared code should only be truly generic utilities - Each layer has a specific responsibility - don't mix concerns