# 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