Zum Hauptinhalt springen
Dieses Dokument bietet eine umfassende technische Übersicht über Seemodos Architektur für Entwickler, die das System verstehen oder erweitern möchten.

System-Übersicht

Frontend-Architektur

Seiten

RouteKomponenteZweck
/app/page.tsxMinimale Startseite mit Prompt-Eingabe
/startapp/start/page.tsxVisueller Canvas-Designer
/generationapp/generation/page.tsxVollständige Code-IDE
/accountapp/account/page.tsxBenutzer-Account-Verwaltung

Context-Provider

Die App verwendet verschachtelte React Context für State-Management:
ContextZweckWichtiger State
UserProviderBenutzer-Authentifizierung und ProfilBenutzer-Daten, Auth-State
SandboxProviderSandbox-Lebenszyklus-VerwaltungSandbox-ID, URLs, Seiten
EditorProviderCode-Bearbeitungs-StateAktuelle Datei, Editor-Inhalt
GenerationProviderGenerierungs-StateGenerierte Screens, Prompts

Wichtige Komponenten

app/start/
├── page.tsx              # Hauptseite mit Providern
├── components/
│   ├── TopHeader.tsx     # Navigations-Header
│   ├── LeftSidebar.tsx   # Prompt und Einstellungen
│   ├── TldrawCanvas.tsx  # tldraw-Integration
│   ├── SandboxPanel.tsx  # Vorschau und Terminal
│   ├── SeemodAIPanel.tsx # KI-Chat-Interface
│   ├── ModelSelector.tsx # KI-Modell-Auswahl
│   └── brainstorm/       # Plan-Modus Komponenten
└── lib/
    ├── sandbox-context.tsx
    ├── generation-context.tsx
    └── editor-context.tsx

Sandbox-Architektur

Provider Factory Pattern

// lib/sandbox/factory.ts
export function createSandboxProvider(): SandboxProvider {
  const provider = process.env.SANDBOX_PROVIDER || 'modal';
  
  switch (provider) {
    case 'modal':
      return new ModalProvider();
    case 'e2b':
      return new E2BProvider();
    case 'vercel':
      return new VercelProvider();
    default:
      throw new Error(`Unbekannter Anbieter: ${provider}`);
  }
}

Sandbox-Lebenszyklus

KI-Generierungs-Ablauf

Code-Generierungs-Pipeline

Prompt-Verarbeitung

Seemodo AI-Integration

Client-Architektur

// Mit @opencode-ai/sdk
const client = createOpencodeClient({ baseUrl: opencodeUrl });

// Session-Verwaltung
const session = await client.session.create({
  body: { title: 'Seemodo Session' }
});

// Prompt senden
await client.session.prompt({
  path: { id: session.id },
  body: { 
    parts: [{ type: 'text', text: message }],
    model: { providerID: 'vercel', modelID: 'claude-sonnet-4' }
  }
});

// Event-Stream
const eventSource = new EventSource(`${opencodeUrl}/event`);
eventSource.onmessage = (event) => {
  const data = JSON.parse(event.data);
  // Tool-Aufrufe, Text, Fehler verarbeiten
};

Tool-Typen

ToolBeschreibungEvents
ReadDatei-Inhalte lesentool.read.start, tool.read.result
WriteDatei erstellen/überschreibentool.write.result
EditDatei-Abschnitte modifizierentool.str_replace.result
BashBefehle ausführentool.bash.start, tool.bash.result
SearchCodebase durchsuchentool.search.result

Datenfluss

Generierungs-Anfrage

Tech Stack

Frontend

TechnologieZweck
Next.js 16React-Framework mit App Router
TypeScriptTyp-Sicherheit
Tailwind CSSStyling
Radix UIZugängliche Primitiven
Shadcn/uiKomponenten-Bibliothek
tldrawCanvas/Wireframe-Editor
Framer MotionAnimationen
JotaiAtomares State-Management
xterm.jsTerminal-Emulator

Backend

TechnologieZweck
Next.js API-RoutenBackend-Endpunkte
Vercel AI SDKKI-Modell-Integration
Modal LabsSandbox-Infrastruktur
Python/FastAPIModal Sandbox Server
Seemodo AI SDKKI-Coding-Assistent

Externe Dienste

DienstZweck
Google GeminiStandard-KI-Modell
Anthropic ClaudeAlternatives KI-Modell
OpenAI GPTAlternatives KI-Modell
GroqSchnelle Inferenz (Kimi K2)
SupabaseBackend-as-a-Service

Projekt-Struktur

seemodo-app/
├── app/                        # Next.js App Router
│   ├── page.tsx               # Startseite
│   ├── layout.tsx             # Root-Layout
│   ├── start/                 # Visueller Canvas
│   │   ├── page.tsx
│   │   ├── components/
│   │   └── lib/
│   ├── generation/            # Code-IDE
│   ├── account/               # Benutzer-Account
│   └── api/                   # API-Routen
├── components/                 # Gemeinsame Komponenten
│   ├── ui/                    # Basis-UI-Komponenten
│   └── shared/                # Gemeinsame Features
├── lib/                       # Utilities und Logik
│   ├── sandbox/               # Sandbox-Anbieter
│   ├── ai/                    # KI-Konfiguration
│   ├── subscription/          # Credits-System
│   └── contexts/              # React-Contexts
├── config/                    # Konfiguration
│   └── app.config.ts
├── modal-backend/             # Modal Sandbox-Code
│   ├── main.py               # Modal-App
│   ├── server.py             # FastAPI-Server
│   ├── agent.py              # KI-Agent
│   └── vite-app/             # Template-Projekt
├── styles/                    # CSS und Design-System
└── types/                     # TypeScript-Typen

Sicherheitsüberlegungen

API-Schlüssel

  • Alle API-Schlüssel in Umgebungsvariablen gespeichert
  • Niemals an Client-Side-Code offengelegt
  • Separate Schlüssel für Entwicklung/Produktion

Sandbox-Isolation

  • Jede Sandbox läuft in isoliertem Container
  • Kein Netzwerk-Zugriff zwischen Sandboxes
  • Dateisystem-Isolation
  • Verschlüsselte Tunnel-URLs

Authentifizierung

  • Benutzer-Sessions via Supabase Auth (wenn konfiguriert)
  • API-Routen validieren Authentifizierung
  • Sandbox-Credentials pro Session

Skalierbarkeit

Horizontale Skalierung

  • Next.js deployt auf Vercel/ähnlich
  • Sandboxes skalieren unabhängig auf Modal
  • Kein geteilter State zwischen Anfragen

Performance-Optimierungen

  • SSE-Streaming für Echtzeit-Updates
  • HMR für sofortige Vorschau-Updates
  • Parallele Tool-Ausführung in Seemodo AI
  • Client-seitiges Caching für UI-State