Aller au contenu

SonicJS API Gateway

Status: Vorbereitet

Das Schema und die Migrations sind erstellt, Setup noch nicht gestartet.

Übersicht

SonicJS wird als API Gateway fΓΌr alle externen APIs verwendet:

  • Edge-first mit Cloudflare Workers
  • D1 (SQLite) fΓΌr Cache und Logs
  • Drizzle ORM fΓΌr type-safe Queries
  • Hono fΓΌr Routing
  • NO Auth (nur MS Entra fΓΌr Superadmin)

Architektur

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Cloudflare Edge                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚   SonicJS   β”‚  β”‚     D1      β”‚  β”‚         KV          β”‚ β”‚
β”‚  β”‚   (Hono)    │──│   (Cache)   │──│   (Hot Cache)       β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚                β”‚                β”‚
           β–Ό                β–Ό                β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚  sevDesk   β”‚  β”‚    evcc    β”‚  β”‚  MS Graph  β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚                β”‚
           β–Ό                β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚    ista    β”‚  β”‚  plane.so  β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

API Matrix

API Endpoints Cache Tables Status
sevDesk 15 3 βœ… Ready
evcc 10 2 βœ… Ready
MS Graph 8 2 ⚠️ OAuth
ista 7 2 πŸ”΄ TODO
plane.so 8 1 🟑 API Key

Total: 48 Endpoints β†’ 12 D1 Tables

D1 Tables

System Tables

  • api_cache - Three-tier Cache Backing
  • api_logs - Audit Trail
  • rate_limits - Rate Limiting
  • sync_status - Sync Job Tracking

sevDesk

  • sevdesk_contacts
  • sevdesk_invoices
  • sevdesk_vouchers

evcc

  • evcc_sessions
  • evcc_meter_readings

ista

  • ista_properties
  • ista_consumption

plane.so

  • plane_issues

MS Graph

  • msgraph_drive_items
  • msgraph_calendar_events

Cache TTL

const CACHE_CONFIG = {
  sevdesk: {
    contacts: { ttl: 300 },    // 5min
    invoices: { ttl: 120 },    // 2min
    pdf: { ttl: 3600 },        // 1h
  },
  evcc: {
    state: { ttl: 10 },        // 10s (realtime!)
    sessions: { ttl: 60 },     // 1min
  },
  msgraph: {
    drive: { ttl: 300 },       // 5min
    calendar: { ttl: 120 },    // 2min
  },
  ista: {
    properties: { ttl: 3600 }, // 1h
    consumption: { ttl: 3600 },// 1h
  },
  plane: {
    issues: { ttl: 60 },       // 1min
  },
};

Setup (wenn bereit)

# 1. SonicJS erstellen
npx create-sonicjs sonicjs

# 2. D1 Database erstellen
wrangler d1 create contract-platform-cache

# 3. Schema kopieren
cp __HANDOVER/sonicjs-schema.ts sonicjs/src/db/schema.ts

# 4. Migrations anwenden
wrangler d1 migrations apply DB --local

# 5. Deploy
wrangler deploy

NΓ€chste Schritte

  1. [ ] SonicJS Setup starten
  2. [ ] D1 Database erstellen
  3. [ ] Routes implementieren
  4. [ ] MS Graph OAuth (HUMAN)
  5. [ ] ista Scraping Module
  6. [ ] plane.so API Key (HUMAN)