# Source Code Guidelines

## Service Layer

### API Calls

- Use `api.apiURL()` for backend endpoints
- Use `api.fileURL()` for static files

#### ✅ Correct Usage
```typescript
// Backend API call
const response = await api.get(api.apiURL('/prompt'))

// Static file
const template = await fetch(api.fileURL('/templates/default.json'))
```

#### ❌ Incorrect Usage
```typescript
// WRONG - Direct URL construction
const response = await fetch('/api/prompt')
const template = await fetch('/templates/default.json')
```

### Error Handling

- User-friendly and actionable messages
- Proper error propagation

### Security

- Sanitize HTML with DOMPurify
- Validate trusted sources
- Never log secrets

## State Management (Stores)

### Store Design

- Follow domain-driven design
- Clear public interfaces
- Restrict extension access

### Best Practices

- Use TypeScript for type safety
- Implement proper error handling
- Clean up subscriptions
- Avoid @ts-expect-error

## General Guidelines

- Use lodash for utility functions
- Implement proper TypeScript types
- Follow Vue 3 composition API style guide
- Use vue-i18n for ALL user-facing strings in `src/locales/en/main.json`
