npm package: @nishanthmariyada/kaaty-shared
Description: Shared types, constants, and validation schemas for KAATY
Author: KAATY Team
Latest version: 1.0.2

# @kaaty/shared

Shared TypeScript types, constants, and validation schemas for KAATY food ordering platform.

## Installation

```bash
npm install @kaaty/shared
# or
yarn add @kaaty/shared
# or
pnpm add @kaaty/shared
```

## Overview

This package contains shared code used by both frontend (mobile app) and backend (Edge Functions):

- **TypeScript Types**: Domain object interfaces (orders, payments, menu items, etc.)
- **Constants**: Limits, statuses, route names, function names
- **Validation Schemas**: Zod schemas for runtime validation

## Usage

### Importing Types

```typescript
import { 
  Order, 
  OrderStatus, 
  MenuItem, 
  CartItem,
  PaymentInitRequest 
} from '@kaaty/shared';

// Use types for type safety
const order: Order = {
  id: '123',
  user_id: 'user-456',
  status: OrderStatus.PENDING,
  total_amount: 250.00,
  // ...
};
```

### Using Constants

```typescript
import { 
  MAX_CART_ITEMS,
  ORDER_STATUS,
  LEGACY_FUNCTION_NAMES,
  API_ROUTES 
} from '@kaaty/shared';

// Validate against limits
if (cartItems.length > MAX_CART_ITEMS) {
  throw new Error('Cart cannot exceed ' + MAX_CART_ITEMS + ' items');
}

// Use function names
const functionName = LEGACY_FUNCTION_NAMES.CREATE_ORDER; // 'create-order'

// Use API routes
const endpoint = API_ROUTES.PAYMENT_INITIALIZE; // '/v1/payment/initialize'
```

### Validation with Zod

```typescript
import { createOrderSchema } from '@kaaty/shared';

// Validate request data
const validated = createOrderSchema.parse(requestBody);
// Throws ZodError if validation fails

// Safe parsing (returns result object)
const result = createOrderSchema.safeParse(requestBody);
if (!result.success) {
  console.error('Validation errors:', result.error);
}
```

## Package Contents

### Types (/types)
- orders.ts - Order-related types
- payment.ts - Payment types
- menu.ts - Menu item types
- cart.ts - Cart types
- user.ts - User profile types
- errors.ts - Error types

### Constants (/constants)
- limits.ts - Numeric limits (MAX_CART_ITEMS, etc.)
- statuses.ts - Status enums (ORDER_STATUS, PAYMENT_STATUS, etc.)
- routes.ts - API routes and Edge Function names

### Validation (/validation)
- schemas.ts - Zod validation schemas

## Why This Package Exists

This package ensures:

1. **Type Safety**: Both frontend and backend use identical types
2. **Single Source of Truth**: Constants defined once, used everywhere
3. **Validation Consistency**: Same validation rules on client and server
4. **Prevents Drift**: Changes to types automatically affect both sides

## Development

```bash
# Build the package
npm run build

# Watch mode (for development)
npm run dev

# Clean build artifacts
npm run clean
```

## TypeScript Configuration

This package is compiled with strict TypeScript settings:
- strict: true
- esModuleInterop: true
- skipLibCheck: true

## License

MIT

## Repository

https://github.com/your-org/kaaty-shared

## Issues

https://github.com/your-org/kaaty-shared/issues