# Banatie - AI Image Generation Service

A comprehensive monorepo for the Banatie AI image generation platform, featuring multiple applications for different use cases.

## Architecture Overview

```
banatie-service/
├── apps/
│   ├── api-service/     # REST API for image generation (Express.js + TypeScript)
│   ├── landing/         # Landing page with demo (Next.js)
│   ├── studio/          # SaaS platform with billing (Next.js + Supabase + Stripe)
│   └── admin/           # Administration dashboard (Next.js)
├── data/                # Docker volumes (postgres, minio)
├── docker-compose.yml   # Infrastructure services
└── package.json         # Workspace scripts
```

## Applications

### 🚀 API Service (`apps/api-service`)

- **Port**: 3000
- **Tech**: Express.js, TypeScript, Gemini AI
- **Purpose**: Core REST API for AI image generation
- **Features**: Image generation, file upload, rate limiting, logging

### 🌐 Landing Page (`apps/landing`)

- **Port**: 3001
- **Tech**: Next.js 14, Tailwind CSS
- **Purpose**: Public landing page with demo
- **Features**: Service overview, image generation demo

### 🏢 Studio (`apps/studio`)

- **Port**: 3002
- **Tech**: Next.js 14, Supabase, Stripe
- **Purpose**: SaaS platform for paid users
- **Features**: Authentication, billing, subscriptions, usage tracking

### 🔧 Admin (`apps/admin`)

- **Port**: 3003
- **Tech**: Next.js 14, Dashboard components
- **Purpose**: Service administration and monitoring
- **Features**: System monitoring, user management, analytics

## Quick Start

### Prerequisites

- Node.js >= 18.0.0
- pnpm >= 8.0.0
- Docker & Docker Compose

### Development Setup

```bash
# Clone and install dependencies
git clone <repository-url>
cd banatie-service
pnpm install

# Start infrastructure (PostgreSQL + MinIO)
docker compose up -d postgres minio storage-init

# Start all applications in development mode
pnpm dev

# Or start individual apps
pnpm dev:api      # API Service on :3000
pnpm dev:landing  # Landing Page on :3001
pnpm dev:studio   # Studio Platform on :3002
pnpm dev:admin    # Admin Dashboard on :3003
```

### Production Deployment

```bash
# Build all applications
pnpm build

# Start infrastructure
docker compose up -d

# Start production servers
pnpm start:api
pnpm start:landing
pnpm start:studio
pnpm start:admin
```

## Development Commands

```bash
# Install dependencies for all apps
pnpm install

# Development (all apps in parallel)
pnpm dev

# Build all apps
pnpm build

# Type checking
pnpm typecheck

# Linting
pnpm lint

# Testing (API service only)
pnpm test

# Clean all build outputs
pnpm clean
```

## Environment Configuration

Each application has its own environment configuration:

- **Root**: `.env.docker` (for Docker services)
- **API Service**: `apps/api-service/.env`
- **Studio**: `apps/studio/.env.local`
- **Admin**: `apps/admin/.env.local`

See individual app README files for specific environment variables.

## Services & Ports

| Service         | Port | Description      |
| --------------- | ---- | ---------------- |
| API Service     | 3000 | Core REST API    |
| Landing Page    | 3001 | Public website   |
| Studio Platform | 3002 | SaaS application |
| Admin Dashboard | 3003 | Administration   |
| PostgreSQL      | 5460 | Database         |
| MinIO API       | 9000 | Object storage   |
| MinIO Console   | 9001 | Storage admin    |

## API Usage

### Generate Image

```bash
# Text-to-image
curl -X POST http://localhost:3000/api/text-to-image \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "prompt": "A magical forest with glowing mushrooms",
    "filename": "magical_forest"
  }'
```

See `apps/api-service/README.md` for detailed API documentation.

## Contributing

1. Each app has its own package.json and dependencies
2. Use the root workspace commands for multi-app operations
3. Follow the existing code style and patterns
4. Run `pnpm typecheck` and `pnpm lint` before committing

## License

MIT License - see individual app directories for more details.
