# 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 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 | 5434 | Database | | MinIO API | 9000 | Object storage | | MinIO Console | 9001 | Storage admin | ## API Usage ### Generate Image ```bash # 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.