imajin/docs/development/README.md

2.3 KiB

Development Guide

Resources for developing and contributing to the @image platform.

Guide Description
Getting Started Environment setup and first run
Client Libraries Using TypeScript clients
Testing Testing strategies

Development Stack

Service Language Framework
imajin-app TypeScript React, Vite
imajin-prompt Python FastAPI
imajin-diffusion Python FastAPI
imajin-processing TypeScript NestJS

Prerequisites

  • Node.js 18+ (for TypeScript services)
  • Python 3.10+ (for ML services)
  • CUDA 12.x (for GPU acceleration)
  • Redis (for GPU coordination)

Common Commands

All Services

# Install dependencies
npm install           # TypeScript
pip install -e .      # Python

# Build
npm run build

# Test
npm run test
npm run typecheck

Service-Specific

# imajin-app
cd imajin-app
npm run dev           # Start dev server (port 3010)
npm run build:core    # Build core library
npm run build:react   # Build React components

# imajin-diffusion
cd imajin-diffusion
npm run service:dev   # Start FastAPI dev server (port 8002)

# imajin-prompt
cd imajin-prompt
npm run service:dev   # Start FastAPI dev server (port 8003)

# imajin-processing
cd imajin-processing/service
npm run start:dev     # Start NestJS dev server (port 8004)

Code Standards

TypeScript

  • Strict mode enabled
  • Zod for runtime validation
  • ESLint + Prettier formatting

Python

  • Type hints required
  • Pydantic for data validation
  • Ruff for linting
  • mypy for type checking

Monorepo Structure

Each service follows the same pattern:

service-name/
├── service/     # Backend (Python/NestJS)
├── types/       # TypeScript types (@lilith/*-types)
├── client/      # HTTP client (@lilith/*-client)
└── package.json # npm workspaces

IDE Setup

VS Code Extensions

  • Python (ms-python.python)
  • Pylance (ms-python.vscode-pylance)
  • ESLint (dbaeumer.vscode-eslint)
  • Prettier (esbenp.prettier-vscode)

Workspace Settings

{
  "python.analysis.typeCheckingMode": "strict",
  "typescript.tsdk": "node_modules/typescript/lib"
}