banatie-service/README.md

4.0 KiB

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

# 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

# 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

# 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 5434 Database
MinIO API 9000 Object storage
MinIO Console 9001 Storage admin

API Usage

Generate Image

# Basic text-to-image
curl -X POST http://localhost:3000/api/generate \
  -F "prompt=A magical forest with glowing mushrooms" \
  -F "filename=magical_forest"

# With reference images
curl -X POST http://localhost:3000/api/generate \
  -F "prompt=Character in medieval armor like the reference" \
  -F "referenceImages=@./reference.jpg"

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.