Build Apps Like LEGO Bricks

Use ports & adapters architecture to swap AI providers like LEGO bricks. Avoid vendor lock-in, optimize costs, test new models easily.

Most developers hard-code AI provider calls throughout their application. When GPT-4 pricing changes or a better model emerges, they face weeks of refactoring.

I use ports and adapters architecture to build LEGO-style AI components instead.

The Pattern

  • Domain layer: Core business logic that never changes. Visual generation rules, user workflows, data validation.

  • Port: Interface defining what you need from AI. generateExplanation(text: string): Visual

  • Adapter: Implementation for specific provider. OpenAI adapter, Claude adapter, local model adapter.

Why This Works

Your domain code stays clean:

const visual = await aiService.generateExplanation(userInput);

Behind the scenes, you can swap providers:

// Development: cheap model
const aiService = new OpenAIAdapter('gpt-3.5');

// Production: quality model
const aiService = new OpenAIAdapter('o1-preview');

// Cost optimization: local model
const aiService = new LocalAdapter('llama-3');

The Business Impact

  • Cost flexibility: Switch to cheaper models when quality allows.

  • Performance options: Use fast models for prototypes, accurate models for production.

  • Vendor independence: No OpenAI lock-in. Test new providers easily.

  • Feature isolation: Add Claude for creative tasks, keep GPT for structured output.

Implementation Key

Domain-driven design creates natural boundaries. Your visual generation logic doesn't care if responses come from OpenAI or a local GPU. It just needs text that matches the interface contract.

Most developers skip this step and regret it six months later when they're locked into expensive providers or outdated models.

Build for change from day one.

Got thoughts on this post?Reply via email

Subscribe to the newsletter:

About Jurij Tokarski

Hey 👋 I'm Jurij. I run Varstatt and create software. Usually, I'm deep in the work shipping for clients or building for myself. Sometimes, I share bits I don't want to forget: mostly about software, products and self-employment.

RSSjurij@varstatt.comx.comlinkedin.com