# Agent Instructions for Meat Farmer Monorepo

## Important instructions
- Don't run any drizzle migrations. User will handle it. 

## Code Style Guidelines

### TypeScript & React Native
- **Strict TypeScript**: `strict: true` enabled in tsconfig
- **Path aliases**: Use `@/*` for local imports, `common-ui` for shared UI package
- **Component naming**: PascalCase (e.g., `MyButton`, `ImageCarousel`)
- **Function naming**: camelCase (e.g., `handleSubmit`, `getCurrentUserId`)
- **Interface naming**: PascalCase with `Props` suffix (e.g., `ButtonProps`)

don't import Text,TextInput,TouchableOpacity and other such primitive components directly from
react-native. They are available in the common-ui as MyText, MyTextInput, MyTouchableOpacity etc. 

### Imports
- React imports first
- Third-party libraries second
- Local imports last
- Use absolute imports with path aliases when possible
- imports from /packages/ui are aliased as `common-ui` in apps/user-ui and apps/admin-ui
- For backend, use `@/*` to import from the backend root directory (e.g., `@/src/lib/file-name`)

### Error Handling
- API errors handled via axios interceptors
- Use `DeviceEventEmitter` for cross-component communication
- Throw custom errors with descriptive messages
- Avoid try-catch blocks unless necessary

### Formatting & Linting
- ESLint with Expo config
- No Prettier configured - follow consistent indentation (2 spaces)
- No semicolons at end of statements
- Single quotes for strings

### Testing
- No test framework currently configured
- When adding tests, use Jest + React Native Testing Library
- Test files: `*.test.tsx` or `*.spec.tsx`

### Architecture
- Monorepo with Turbo
- Shared UI components in `packages/ui`
- Apps: `user-ui`, `admin-ui`, `inspiration-ui`, `inspiration-backend`
- Database: Drizzle ORM with PostgreSQL

## Important Notes
- Don't do anything with git. Don't do git add or git commit. That will be managed entirely by the user
