Referenz · Technische Stellungnahme

Beispielprojekt Between

Technische Stellungnahme

Schriftliche, konkrete Antworten auf Ihre acht Punkte, inkl. realistischer Einschätzung zu Betriebskosten, Serverlast, Datenschutz (technisch) und App-Store-Freigabe. Stand: Juli 2026 · 282studio

Hinweis: 282studio ist kein Rechtsanwalt und erteilt keine Rechtsberatung. Zu Datenschutz und App-Store-Richtlinien geben wir technische Maßnahmen und Projekterfahrung wieder. Verbindliche Rechts- und Compliance-Freigaben liegen bei Ihnen bzw. Ihrer Fachberatung.

Kurzfassung

Ja, Between ist für uns technisch umsetzbar als Full-Stack-App (iOS/Android + Backend) mit geschützter KI-Anbindung, Upload-Pipeline, Paywall und Store-Release-Begleitung. Der kritische Kosten- und Lastfaktor im laufenden Betrieb ist nicht der App-Server allein, sondern vor allem KI-API-Verbrauch (Token/Bildanalyse) und die Verarbeitung großer Uploads.

Wichtig vor Vertrag: Ohne klare Limits (Dateigröße, Anzahl Screenshots, Free-Uses, max. Tokens pro Analyse) können Betriebskosten und Antwortzeiten stark schwanken. Wir empfehlen ein MVP mit harten Caps und späterer Skalierung.

Ihre Fragen. unsere Einschätzung

1. Full-Stack: Backend, Accounts, DB, sicherer Dateispeicher

Ihre Frage

Können Sie neben dem Frontend auch Backend, User-Accounts, Datenbank und sicheren Dateispeicher selbst umsetzen?

Stellungnahme 282studio

Ja. Between würden wir als durchgängiges System bauen:

  • App (Frontend): iOS & Android (z. B. React Native / Flutter, final im Kickoff)
  • Backend-API: eigene Server-API (Auth, Business-Logik, KI-Proxy, Billing-Status)
  • Datenbank: PostgreSQL (User, Sessions, Nutzungszähler, Metadaten der Analysen)
  • Dateispeicher: Objekt-Storage mit serverseitiger Zugriffskontrolle (nur für den jeweiligen User), TLS, keine öffentlichen Dauer-Links ohne Ablauf

Accounts mit Passwort-Hashing, geschützten Sessions und serverseitigen Rechten. nicht nur „im Client ausgeblendet“.

Referenz · Produktivsystem 282racing

Live betrieben: FastAPI-Backend, PostgreSQL, User-Registrierung/Login mit signierten Session-Tokens, Medien unter /media, plus Kundenportal sync.282studio.net (Projekte, Rollen, Roadmap).

@app.post("/auth/register", status_code=201)
def register(..):
    user = User(
        username=username,
        password_hash=hash_password(payload.password),
        display_name=payload.display_name.strip(),
    )
    # Session-Token nur serverseitig signiert (nicht im Client „gebaut“)

2. Sichere KI-Anbindung (Claude / ChatGPT o. ä.)

Ihre Frage

Können Sie Claude, ChatGPT oder eine andere AI über ein geschütztes Backend anbinden, ohne API-Keys in der App zu speichern?

Stellungnahme 282studio

Ja, das ist der einzig sinnvolle Weg.

  • API-Keys liegen ausschließlich serverseitig (Secrets/Env), nie in der App und nie im Frontend-Bundle
  • Die App spricht nur mit unserem Backend. Das Backend ruft den KI-Anbieter auf
  • Rate-Limits, Auth-Check und Nutzungszähler (Free-Uses) vor jedem KI-Call
Risiko / Datenschutz (technisch): Chatverläufe und Dateiinhalte werden zur Auswertung an den gewählten KI-Anbieter übermittelt. Das ist ein zentrales Datenschutz- und Vertrauensrisiko. Technisch mindern wir das u. a. durch: Minimierung der gesendeten Daten, Löschkonzepte, Transparenz in der App, vertragliche Klärung mit dem Anbieter (AV/DPA, Region/Modellwahl). Ob und wie das DSGVO-konform für Ihr Geschäftsmodell ist, muss rechtlich bei Ihnen geklärt werden. wir setzen die technischen Vorgaben um, die Sie freigeben.
Betriebskosten: Jede Analyse kostet Token (Text) bzw. Bildtokens (Screenshots). Das ist typischerweise der teuerste laufende Posten, oft höher als reines App-Hosting. Ohne Caps kann ein einzelner Power-User spürbare Kosten erzeugen.

Referenz · Secrets nur serverseitig (282racing)

Gleiches Muster wie für KI-Keys: sensible Credentials kommen aus der Server-Umgebung (Docker/.env), nie aus der App. Beispiel APNs-Push-Key & Session-Secrets:

class Settings(BaseSettings):
    # geladen aus Server-.env, nicht im Client-Binary
    database_url: str
    user_session_secret: str
    apns_auth_key: str = ""   # .p8 nur auf dem Server
    # Between analog: OPENAI_API_KEY / ANTHROPIC_API_KEY hier

3. Verarbeitung diverser Uploads für dynamische KI-Auswertung

Ihre Frage

Können Sie Chattexte, .txt, WhatsApp-Exporte, .zip und mehrere Screenshots verarbeiten und daraus dynamische KI-Bewertungen erzeugen?

Stellungnahme 282studio

Ja, mit klarer Pipeline und Limits. Technischer Ablauf:

  1. Upload → Typ-/Größen-Check → Speicherung usergebunden
  2. Extraktion: Text aus .txt / Chat-Export.zip entpacken (Whitelist Dateitypen). Screenshots als Bilder
  3. Normalisierung / Chunking (große Chats werden sinnvoll aufgeteilt)
  4. KI-Auswertung über Backend → strukturiertes Ergebnis in der App
Konkrete Anpassung (empfohlen für MVP):
  • Max. Dateigröße z. B. 20–50 MB gesamt pro Analyse
  • Max. Anzahl Screenshots (z. B. 5–10)
  • .zip nur mit erlaubten Endungen, keine ausführbaren Dateien
  • WhatsApp-Export: zuerst das gängige Textformat. Medien optional Phase 2
  • Async-Jobs bei großen Uploads (Status „wird analysiert“) statt blockierender UI
Ohne solche Caps wird das System unnötig serverlastig und teuer.
Serverlast: Entpacken, Vision und lange Kontexte belasten CPU, RAM und vor allem die KI-API. Das skaliert mit Nutzerzahl × Analysen × Dateigröße. nicht linear „ein kleiner VPS reicht immer“.

Referenz · Upload- & Bildpipeline (282racing)

Produktiv: Avatar-/Announcement-Uploads mit Typ-Whitelist, Größenlimit und serverseitiger Bildverarbeitung (Pillow). Für Between erweitern wir das um Text/.zip-Extraktion und KI-Jobs. das Grundmuster „Upload → validieren → speichern → verarbeiten“ ist bereits im Einsatz.

MAX_UPLOAD_BYTES = 8 * 1024 * 1024
ALLOWED_CONTENT = {"image/jpeg", "image/png", "image/webp", ..}

def process_avatar_image(raw: bytes) -> bytes:
    image = Image.open(io.BytesIO(raw)).convert("RGB")
    image = image.resize((256, 256), Image.Resampling.LANCZOS)
    # speichern unter /media/avatars/{user_id}.jpg

4. Monetisierung (IAP / Play Billing / RevenueCat)

Ihre Frage

Haben Sie Apple In-App Purchases, Google Play Billing oder RevenueCat umgesetzt? Free-Uses, danach Paywall (Abo oder Einmalkauf).

Stellungnahme 282studio

Umsetzbar und vorgesehen. Für Between empfehlen wir pragmatisch RevenueCat (oder vergleichbar) als Schicht über Apple IAP und Google Play Billing: einheitliche Receipt-Validierung, weniger Plattform-Sonderfälle, serverseitig abgleichbarer Abo-Status.

  • Free-Uses serverseitig zählen (nicht nur lokal manipulierbar)
  • Paywall nach Verbrauch: Abo und/oder Einmalkauf. Produkt-IDs legen Sie im Store fest
  • Backend entscheidet anhand Kaufstatus, ob KI-Calls erlaubt sind
Anpassung: Store-Accounts, Steuer/AGB/Widerruf und Produktkonfiguration müssen auf Ihrem Entwickler-/Firmenkonto liegen (siehe Punkt 8). Wir implementieren und verdrahten. Rechtliche Shop-Texte und Freigaben liegen bei Ihnen.

Referenz

In 282racing ist aktuell kein IAP/RevenueCat verbaut (Community-/Event-Produkt). Serverseitige Rechte, Rate-Limits und Feature-Gates betreiben wir dort bereits. Paywall & Store-Billing sind für Between der vorgesehene nächste Baustein nach dem gleichen Prinzip („Server entscheidet, Client zeigt nur UI“).

5. Testing & Erstveröffentlichung (TestFlight / Play)

Ihre Frage

Können Sie die App für TestFlight und Google Play Testing vorbereiten und den ersten Release begleiten?

Stellungnahme 282studio

Ja. Build-Pipelines, TestFlight-Intern/Extern, Play Internal/Closed Testing, Store-Listings technisch vorbereiten und den ersten produktiven Upload begleiten. auf Basis Ihrer Developer-Accounts.

Voraussetzung: funktionierende Apple-/Google-Entwicklerkonten auf Ihren Namen, Zugang für uns (oder gemeinsame Sessions) für Zertifikate, Bundles und Review-Uploads.

Referenz · Betrieb & Deploy (282racing / 282studio)

Produktiv auf VPS: Docker Compose (API + PostgreSQL), Gunicorn/Uvicorn, TLS über Caddy, getrennte Domains (API, Marketing, Sync-Portal). Release heißt bei uns: reproduzierbarer Container-Deploy, nicht „Hoffnung auf dem Laptop“.

# backend/Dockerfile: produktiver API-Start
CMD ["gunicorn", "app.main:app",
     "-k", "uvicorn.workers.UvicornWorker",
     "-w", "3", "-b", "0.0.0.0:8000"]

6. Datenschutz: private Chats, Nutzerzuordnung, Löschung

Ihre Frage

Wie stellen Sie sicher, dass private Chatdaten geschützt sind, nur dem jeweiligen User zugeordnet und auf Wunsch vollständig löschbar sind?

Stellungnahme 282studio (technisch)

Technische Maßnahmen, die wir umsetzen können und für Between vorsehen:

  • Strikte User-Isolation in DB und Storage (jeder Zugriff prüft die User-ID)
  • TLS in Transit. Speicherung nur für eingeloggte, berechtigte Nutzer
  • Kein Teilen von Analyse-Dateien zwischen Accounts
  • Account-/Datenlöschung: User-Daten, Uploads und Analyseergebnisse entfernen bzw. unkenntlich machen
  • Minimale Logs (keine Chat-Volltexte in Klartext-Logs, soweit betrieblich vermeidbar)
Grenzen / Risiken (bitte ernst nehmen):
  • Daten, die an einen KI-Anbieter gesendet wurden, unterliegen dessen Verarbeitung und Aufbewahrung. „vollständig löschen“ auf Ihrer Seite ≠ automatisch Löschung beim KI-Anbieter
  • Backups können gelöschte Daten kurzfristig noch enthalten (Retention-Fenster)
  • WhatsApp-/Chat-Exporte können Daten Dritter enthalten (Einwilligung/Rechtsgrundlage = Ihre Verantwortung)
  • Wir liefern technische Steuerung und Dokumentation der Datenflüsse, keine Rechtsgarantie zur DSGVO-Konformität
Empfehlung: Früh Datenschutzerklärung, AV-Verträge mit Hoster/KI, Aufbewahrungsfristen und „Delete Account“-Flow spezifizieren. wir implementieren das technisch im Produkt.

Referenz · Account-Löschung (282racing, Apple 5.1.1)

Produktiv umgesetzt: Nutzer können den Account selbst löschen (DELETE /users/me). Avatar-Dateien werden entfernt, personenbezogene Inhalte gescrubbt, mit begrenzter Moderations-Retention. gebaut ausdrücklich auch mit Blick auf Store-Anforderungen.

@app.delete("/users/me", status_code=204)
def delete_own_account(..):
    """Immediate account deletion (Apple Guideline 5.1.1(v))."""
    delete_user_account(db, user, payload.password)

# account_deletion.py
delete_avatar_file(user_id)
# Reports/Texte → Placeholder "[deleted]", Retention-Job räumt nach

7. Vendor-agnostische KI-Architektur

Ihre Frage

Können Sie die Struktur so bauen, dass der KI-Anbieter später wechselbar ist?

Stellungnahme 282studio

Ja. Architektonisch vorbereitet, aber kein reiner Konfigurationsklick.

Wir kapseln die KI hinter einer internen Schnittstelle (z. B. AnalysisProvider). App und Domänenlogik sprechen nur dieses Format. Dahinter liegen austauschbare Adapter (OpenAI, Anthropic, …). So vermeiden wir, dass die ganze App an ein Hersteller-SDK klebt.

Was ein späterer Wechsel trotzdem bedeutet:

  • neuen Adapter + Auth/Limits verdrahten
  • Prompts und strukturierte Outputs neu kalibrieren (Modelle antworten unterschiedlich)
  • Vision/Screenshot-Pipeline und Chunking an Kontextfenster/Preise anpassen
  • Regressionstests an einem festen Beispiel-Set (Qualität, nicht nur „HTTP 200“)
  • ggf. neue AV/DPA und Regionen beim Anbieter

Realistisch: Wechsel ist planbar (typisch Tage bis wenige Wochen je nach Tiefe), nicht „Feature-Flag und fertig“. 100 % identische Antworten zwischen Anbietern gibt es nicht. Parallelbetrieb / Fallback ist optional und zusätzlicher Aufwand.

Referenz · austauschbare Integrationen (282racing)

Im Racing-Backend nutzen wir bereits dunkle Typen/Protokolle und optional zuschaltbare Provider (z. B. APNs nur wenn Keys gesetzt). Für Between ziehen wir dasselbe Prinzip explizit für KI-Anbieter durch, nur mit klarer Erwartung an Prompt- und Qualitätstests beim Wechsel.

class ZoneLike(Protocol):  # austauschbare Geometrie-Logik
    shape: str
    center_lat: float
    ..

# Between-Skizze (geplant):
class AnalysisProvider(Protocol):
    def analyze(self, payload: AnalysisInput) -> AnalysisResult: ..

class AnthropicAdapter: ..
class OpenAIAdapter: ..

8. Eigentum, Übergabe, Accounts auf Ihren Namen

Ihre Frage

Erhalten Sie Quellcode, Zugänge, Doku und volle Nutzungsrechte? Alle Accounts (Backend, AI, Stores, Payments) auf Firmennamen?

Stellungnahme 282studio

Ja. So arbeiten wir.

  • Vollständiger Quellcode der für Between entwickelten Software bei Abnahme/Übergabe
  • Technische Dokumentation (Setup, Deploy, Umgebungsvariablen, Datenfluss)
  • Zugangsdaten / Übergabe der von uns eingerichteten Projektteile
  • Nutzungsrechte laut Vertrag (Standard: Sie als Auftraggeber für das Projektergebnis)

Accounts: Apple Developer, Google Play, KI-Provider, Hosting, RevenueCat/Payments sollten von Beginn an auf Ihr Unternehmen laufen. Wir unterstützen Einrichtung und technische Anbindung. Eigentümer sind Sie. So bleiben Abrechnung, Steuern und Store-Verantwortung klar.

Referenz · getrenntes Kundenportal 282sync

Eigene Auth-Welt, Projekte, Rollen (Viewer/Approver) und Developer-Bypass. zeigt, dass wir Produkte so bauen, dass Auftraggeber später klar steuern und übernehmen können. Live: sync.282studio.net

def require_project_role(.., require_approver=False):
    """Developers bypass membership. Accounts brauchen Rolle."""
    if actor.kind == "developer":
        return None
    if require_approver and member.role != "approver":
        raise HTTPException(status_code=403, ..)

Serverlast & laufende Kosten (realistisch)

Grobe Einordnung. Finale Zahlen hängen von Nutzerzahl und Analyse-Intensität ab:

Bereich Einschätzung
App-Hosting / API / DB Moderat skalierbar, startklein möglich, wächst mit Concurrent Users
Dateispeicher & Traffic Steigt mit Upload-Volumen (zips, Screenshots)
KI-API (Text + Vision) Hauptkostentreiber im Betrieb, variabel pro Analyse
RevenueCat / Stores Store-Gebühren + ggf. RevenueCat-Fees, planbar
Vorschlag Betrieb: Free-Uses eng limitieren, Pro-Abo deckt erwarteten KI-Verbrauch, Hard-Caps pro Analyse, Monitoring der API-Kosten, optional „große Analyse“ als separates Produkt. So bleibt Between wirtschaftlich steuerbar.

App-Review: zwei grundsätzlich verschiedene Ablehnungsgründe

Für die Test- und Erstveröffentlichungsphase unterscheiden wir klar. Das gehört in den Vertrag:

A) Ablehnung wegen Apple-/Google-Richtlinien (Policy / Guidelines)

Beispiele: unklare Datenschutzangaben, fehlende Account-Löschung laut Vorgabe, Abo-Hinweise, Inhalte, Login-Zwang, Nutzung von Daten Dritter usw.

Haftung / Nacharbeit: Solche Ablehnungen liegen außerhalb der rein technischen Umsetzung vertraglich spezifizierter Funktionen. 282studio übernimmt keine Haftung für die Store-Freigabe durch Apple/Google. Anpassungen, die nötig werden, weil Richtlinien, Reviewer-Auslegung oder fehlende rechtliche/inhaltliche Voraussetzungen es erfordern und die nicht im vereinbarten Leistungsumfang standen, werden gesondert beauftragt und berechnet.

B) Ablehnung / Blocker wegen technischer Fehler an vereinbarten Funktionen

Beispiele: Crash beim Start, Login funktioniert nicht, Kaufstatus wird falsch erkannt, Upload/Analyse bricht ab, bezogen auf Features, die vertraglich als Liefergegenstand der Erstveröffentlichung festgehalten sind.

Nachbesserung: In diesem Fall erfülle ich im Sinne der Nachbesserung die vertraglich festgesetzten Funktionen der App im Rahmen der Erstveröffentlichung, ohne dass Policy-Themen oder Scope-Erweiterungen darunterfallen.

Praxis: Review-Zyklen können mehrere Iterationen brauchen. Zeitpläne sollten Puffer für Store-Review enthalten. Schriftliche Spec (Was ist „fertig“?) schützt beide Seiten.

Empfohlener MVP-Schnitt (Anpassung)

  1. Accounts + sicherer Upload (txt, Chat-Export, begrenzte Screenshots, zip optional streng limitiert)
  2. KI-Analyse über Backend, ein Provider zuerst, Adapter für späteren Wechsel
  3. Free-Uses + Paywall (RevenueCat) mit serverseitigem Enforce
  4. Löschfunktion Account/Daten + transparente Datenfluss-Doku für Ihre Datenschutztexte
  5. TestFlight + Play Testing + Begleitung Erst-Release

Später: mehr Medien aus WhatsApp-Zips, feinere Analyse-Typen, Team-Accounts, etc.

Nächster Schritt

So strukturieren wir technische Stellungnahmen: konkrete Antworten, Risiken, Caps und ein MVP-Schnitt. Für Ihr Vorhaben erstellen wir eine vergleichbare Unterlage. Schreiben Sie uns:

contact@282studio.net · Betreff: Technische Stellungnahme