169 lines
4.0 KiB
Markdown
169 lines
4.0 KiB
Markdown
# 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.
|