返回 Skill 列表
extension
分类: 开发与工程无需 API Key

ideogram-reference-architecture

实现Ideogram参考架构,采用最佳实践项目布局。在设计新的Ideogram集成、审查项目结构或为Ideogram应用程序建立架构标准时使用。可以通过诸如“ideogram架构”、“ideogram最佳实践”、“ideogram项目结构”、“如何组织ideogram”、“ideogram布局”等短语触发。

person作者: jakexiaohubgithub

Ideogram Reference Architecture

Overview

Production-ready architecture patterns for Ideogram integrations.

Prerequisites

  • Understanding of layered architecture
  • Ideogram SDK knowledge
  • TypeScript project setup
  • Testing framework configured

Project Structure

my-ideogram-project/
├── src/
│   ├── ideogram/
│   │   ├── client.ts           # Singleton client wrapper
│   │   ├── config.ts           # Environment configuration
│   │   ├── types.ts            # TypeScript types
│   │   ├── errors.ts           # Custom error classes
│   │   └── handlers/
│   │       ├── webhooks.ts     # Webhook handlers
│   │       └── events.ts       # Event processing
│   ├── services/
│   │   └── ideogram/
│   │       ├── index.ts        # Service facade
│   │       ├── sync.ts         # Data synchronization
│   │       └── cache.ts        # Caching layer
│   ├── api/
│   │   └── ideogram/
│   │       └── webhook.ts      # Webhook endpoint
│   └── jobs/
│       └── ideogram/
│           └── sync.ts         # Background sync job
├── tests/
│   ├── unit/
│   │   └── ideogram/
│   └── integration/
│       └── ideogram/
├── config/
│   ├── ideogram.development.json
│   ├── ideogram.staging.json
│   └── ideogram.production.json
└── docs/
    └── ideogram/
        ├── SETUP.md
        └── RUNBOOK.md

Layer Architecture

┌─────────────────────────────────────────┐
│             API Layer                    │
│   (Controllers, Routes, Webhooks)        │
├─────────────────────────────────────────┤
│           Service Layer                  │
│  (Business Logic, Orchestration)         │
├─────────────────────────────────────────┤
│          Ideogram Layer        │
│   (Client, Types, Error Handling)        │
├─────────────────────────────────────────┤
│         Infrastructure Layer             │
│    (Cache, Queue, Monitoring)            │
└─────────────────────────────────────────┘

Key Components

Step 1: Client Wrapper

// src/ideogram/client.ts
export class IdeogramService {
  private client: IdeogramClient;
  private cache: Cache;
  private monitor: Monitor;

  constructor(config: IdeogramConfig) {
    this.client = new IdeogramClient(config);
    this.cache = new Cache(config.cacheOptions);
    this.monitor = new Monitor('ideogram');
  }

  async get(id: string): Promise<Resource> {
    return this.cache.getOrFetch(id, () =>
      this.monitor.track('get', () => this.client.get(id))
    );
  }
}

Step 2: Error Boundary

// src/ideogram/errors.ts
export class IdeogramServiceError extends Error {
  constructor(
    message: string,
    public readonly code: string,
    public readonly retryable: boolean,
    public readonly originalError?: Error
  ) {
    super(message);
    this.name = 'IdeogramServiceError';
  }
}

export function wrapIdeogramError(error: unknown): IdeogramServiceError {
  // Transform SDK errors to application errors
}

Step 3: Health Check

// src/ideogram/health.ts
export async function checkIdeogramHealth(): Promise<HealthStatus> {
  try {
    const start = Date.now();
    await ideogramClient.ping();
    return {
      status: 'healthy',
      latencyMs: Date.now() - start,
    };
  } catch (error) {
    return { status: 'unhealthy', error: error.message };
  }
}

Data Flow Diagram

User Request
     │
     ▼
┌─────────────┐
│   API       │
│   Gateway   │
└──────┬──────┘
       │
       ▼
┌─────────────┐    ┌─────────────┐
│   Service   │───▶│   Cache     │
│   Layer     │    │   (Redis)   │
└──────┬──────┘    └─────────────┘
       │
       ▼
┌─────────────┐
│ Ideogram    │
│   Client    │
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ Ideogram    │
│   API       │
└─────────────┘

Configuration Management

// config/ideogram.ts
export interface IdeogramConfig {
  apiKey: string;
  environment: 'development' | 'staging' | 'production';
  timeout: number;
  retries: number;
  cache: {
    enabled: boolean;
    ttlSeconds: number;
  };
}

export function loadIdeogramConfig(): IdeogramConfig {
  const env = process.env.NODE_ENV || 'development';
  return require(`./ideogram.${env}.json`);
}

Instructions

Step 1: Create Directory Structure

Set up the project layout following the reference structure above.

Step 2: Implement Client Wrapper

Create the singleton client with caching and monitoring.

Step 3: Add Error Handling

Implement custom error classes for Ideogram operations.

Step 4: Configure Health Checks

Add health check endpoint for Ideogram connectivity.

Output

  • Structured project layout
  • Client wrapper with caching
  • Error boundary implemented
  • Health checks configured

Error Handling

| Issue | Cause | Solution | |-------|-------|----------| | Circular dependencies | Wrong layering | Separate concerns by layer | | Config not loading | Wrong paths | Verify config file locations | | Type errors | Missing types | Add Ideogram types | | Test isolation | Shared state | Use dependency injection |

Examples

Quick Setup Script

# Create reference structure
mkdir -p src/ideogram/{handlers} src/services/ideogram src/api/ideogram
touch src/ideogram/{client,config,types,errors}.ts
touch src/services/ideogram/{index,sync,cache}.ts

Resources

Flagship Skills

For multi-environment setup, see ideogram-multi-env-setup.