Heart
SIRPLUS DEVELOPMENT

Hey, willkommen im Dev Portal

Hier findest du alles rund um die SIRPLUS App-Infrastruktur. Das Backend, die Flutter App, Shopify-Anbindung und wie das alles zusammenspielt. Die technische Doku liegt in den jeweiligen Repos - hier gibt's den Überblick und ein paar nützliche Tools.

Wie das Ganze funktioniert

Die Flutter App redet nie direkt mit Shopify. Alles läuft über unser eigenes Backend, das als Proxy und Auth-Layer fungiert. Das hat ein paar Vorteile: Wir können Daten cachen, transformieren und haben volle Kontrolle über die API. Außerdem hält das die Shopify API Keys aus der App raus.

┌─────────────────┐
│   Flutter App   │
│    (Mobile)     │
└────────┬────────┘
         │
         │ JWT Auth
         │ REST API
         ▼
┌─────────────────────────────────────────────────────────┐
│                    SIRPLUS Backend                       │
│                    api.sirplus.de                        │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────┐  │
│  │   Phalcon   │  │    Redis    │  │     MariaDB     │  │
│  │   PHP 8.4   │  │    Cache    │  │   Product Sync  │  │
│  └──────┬──────┘  └─────────────┘  └─────────────────┘  │
└─────────┼───────────────────────────────────────────────┘
          │
          │ Shopify Access Token
          │ (Server-side only)
          ▼
┌─────────────────────────────────────────────────────────┐
│                      Shopify                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────┐  │
│  │ Storefront  │  │   Admin     │  │      Seal       │  │
│  │  GraphQL    │  │  REST API   │  │  Subscriptions  │  │
│  │  (Products) │  │ (Metafields)│  │   (Abos API)    │  │
│  └─────────────┘  └─────────────┘  └─────────────────┘  │
└─────────────────────────────────────────────────────────┘
      

2-Level Auth: User authentifiziert sich mit Email/Passwort gegen unser Backend und bekommt einen JWT. Das Backend authentifiziert sich dann mit dem Shopify Customer Access Token gegen die Storefront API. So sind die Shopify Credentials nie auf dem Client.

Product Sync: Produkte werden von Shopify in unsere MariaDB gespiegelt. Das passiert per Cron (alle 2h Full Sync) und per Webhooks (Echtzeit bei Änderungen). Bilder werden runtergeladen, zu WebP konvertiert und in drei Größen gespeichert.

Subscriptions: Abos laufen über Seal Subscriptions (Shopify App). Unser Backend wrapped deren API und macht sie für die Flutter App konsumierbar.

Status

API
...
Produkte in DB
...
Verfügbar
...

Repositories

Die technische Dokumentation findest du in den README.md Dateien der jeweiligen Repos. Da steht alles drin: Setup, Architektur, API-Referenz und so weiter.

Tech Stack

Backend
  • Phalcon 5.9 (PHP Framework)
  • PHP 8.4-FPM
  • MariaDB (MySQL)
  • Redis Cache
  • Nginx + Let's Encrypt
Mobile App
  • Flutter 3.x
  • Dart
  • Riverpod (State)
  • Go Router (Navigation)
Shopify APIs
  • Storefront API (GraphQL)
  • Admin REST API
  • Seal Subscriptions API
  • Webhooks (products/*)
Dev Portal
  • SvelteKit
  • Tailwind CSS
  • Static Adapter