Skip to content

PROJ: Brinxx Code Sync

╔══════════════════════════════════════════════════════════════╗
║ ║
║ STATUS: SUCCESVOL UITGEVOERD ║
║ DATUM: 4 maart 2026, 04:30 - 06:45 CET ║
║ DOOR: Claude Code (adminmichiel1) ║
║ ║
╠══════════════════════════════════════════════════════════════╣
║ ║
║ STAP 1: Brinxx → Development ✅ COMPLEET ║
║ STAP 2: Development → 6 tenants ✅ COMPLEET ║
║ Verificatie: alle backends UP ✅ COMPLEET ║
║ Verificatie: alle storefronts UP ✅ COMPLEET ║
║ ║
╠══════════════════════════════════════════════════════════════╣
║ ║
║ TENANT RESULTATEN: ║
║ ║
║ magic_development Backend: OK UP | Storefront: UP ║
║ magic_default Backend: OK UP | Storefront: UP ║
║ magic_demo Backend: OK UP | Storefront: UP ║
║ magic_jodasign Backend: OK UP | Storefront: UP ║
║ magic_logohorloge Backend: OK UP | Storefront: UP ║
║ magic_bovisales Backend: OK UP | Storefront: UP ║
║ magic_desluis Backend: OK UP | Storefront: UP ║
║ ║
║ OVERGESLAGEN (conform plan): ║
║ magic_pim (aparte product master database) ║
║ magic_brinxx (source systeem) ║
║ ║
╚══════════════════════════════════════════════════════════════╝
  1. Backups aangemaakt van backend/src en storefront/src voor alle 7 tenants (Development + 6 targets)
  2. Stage 1: Brinxx backend (api/admin/aplt, admin/routes, api/store) en storefront gesynchroniseerd naar Development
  3. Stage 2: Development code gedistribueerd naar alle 6 target tenants via rsync
  4. Containers herbouwd en herstart voor alle 7 tenants
  5. Geverifieerd dat alle backends “Server is ready” melden en alle storefronts “Ready” zijn
  6. Jodasign vereiste sudo vanwege adminwayne3 file ownership - apart afgehandeld
/mnt/data/magic_omniverse/backups/20260304-0431/
├── magic_development/
│ ├── backend-src/ # Pre-sync backend broncode
│ └── storefront-src/ # Pre-sync storefront broncode
├── magic_default/
│ ├── backend-src/
│ └── storefront-src/
├── magic_demo/
│ ├── backend-src/
│ └── storefront-src/
├── magic_jodasign/
│ ├── backend-src/
│ └── storefront-src/
├── magic_logohorloge/
│ ├── backend-src/
│ └── storefront-src/
├── magic_bovisales/
│ ├── backend-src/
│ └── storefront-src/
└── magic_desluis/
├── backend-src/
└── storefront-src/
Terminal window
BACKUP="/mnt/data/magic_omniverse/backups/20260304-0431"
TENANT="magic_development" # wijzig per tenant
BASE="/mnt/data/magic_omniverse/magic_commerce/$TENANT"
rm -rf "$BASE/backend/src"
cp -r "$BACKUP/$TENANT/backend-src" "$BASE/backend/src"
rm -rf "$BASE/storefront/src"
cp -r "$BACKUP/$TENANT/storefront-src" "$BASE/storefront/src"
cd "$BASE"
docker compose build backend storefront
docker compose up -d backend storefront
  • 3 storefront bestanden (ai-search/route.ts, ai-search/runs/route.ts, meilisearch/sync/route.ts) zijn bewust NIET gesynced van Brinxx omdat ze hardcoded Brinxx-specifieke database connecties bevatten. De Development versies gebruiken correct environment variables.
  • magic_demo had een ontbrekende .dockerignore in backend/ waardoor Docker 1.5GB build context verstuurde (node_modules + static). Opgelost door .dockerignore te kopieren van magic_default.
  • magic_demo miste ook medusa-config.ts en tsconfig.json - gekopieerd van magic_default.
  • magic_jodasign vereiste sudo voor file sync vanwege adminwayne3 eigenaarschap.
  • Backups zijn opgeslagen BUITEN de project directories om te voorkomen dat TypeScript ze oppikt tijdens Docker builds.

╔══════════════════════════════════════════════════════════════════════╗
║ ║
║ ██████╗ ██████╗ ██╗███╗ ██╗██╗ ██╗██╗ ██╗ ║
║ ██╔══██╗██╔══██╗██║████╗ ██║╚██╗██╔╝╚██╗██╔╝ ║
║ ██████╔╝██████╔╝██║██╔██╗ ██║ ╚███╔╝ ╚███╔╝ ║
║ ██╔══██╗██╔══██╗██║██║╚██╗██║ ██╔██╗ ██╔██╗ ║
║ ██████╔╝██║ ██║██║██║ ╚████║██╔╝ ██╗██╔╝ ██╗ ║
║ ╚═════╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ ╚═╝ ║
║ ║
║ C O D E S Y N C P L A N ║
║ ║
╚══════════════════════════════════════════════════════════════════════╝

Er zijn recent fixes gedaan in Magic Brinxx (inclusief de externe live-website beta.brinxx.nl). Nu moet de code worden gesynchroniseerd zodat de allerlaatste wijzigingen overal beschikbaar zijn.


┌─────────────────┐
│ Magic Brinxx │
│ (source of │
│ recent fixes) │
└────────┬────────┘
STAP 1 │ Sync fixes
┌─────────────────┐
│ Magic │
│ Development │
│ (master base) │
└────────┬────────┘
STAP 2 │ Distribute
┌──────────────┼──────────────┐
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌───────────┐ ┌──────────────┐
│Magic Default │ │Magic Demo │ │Magic Jodasign│
└──────────────┘ └───────────┘ └──────────────┘
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌───────────┐ ┌──────────────┐
│ Magic │ │ Magic │ │ Magic │
│ Logohorloge │ │ Bovisales │ │ De Sluis │
└──────────────┘ └───────────┘ └──────────────┘
╔═══════════════════════════════════════════╗
║ ⛔ Magic PIM → NIET synchroniseren ║
║ (aparte product master database) ║
╚═══════════════════════════════════════════╝

Identificeer eerst welke bestanden zijn gewijzigd in Brinxx:

Terminal window
# Bekijk recent gewijzigde bestanden in magic_brinxx backend
find /mnt/data/magic_omniverse/magic_commerce/magic_brinxx/backend/src \
-type f -newer /mnt/data/magic_omniverse/magic_commerce/magic_development/backend/src/api/admin/aplt \
-name "*.ts" -o -name "*.tsx" | sort
Terminal window
# Vergelijk backend src directories
diff -rq \
/mnt/data/magic_omniverse/magic_commerce/magic_brinxx/backend/src/api/admin/aplt/ \
/mnt/data/magic_omniverse/magic_commerce/magic_development/backend/src/api/admin/aplt/
# Vergelijk storefront src directories
diff -rq \
/mnt/data/magic_omniverse/magic_commerce/magic_brinxx/storefront/src/ \
/mnt/data/magic_omniverse/magic_commerce/magic_development/storefront/src/
  1. Maak een backup van development

    Terminal window
    cd /mnt/data/magic_omniverse/magic_commerce/magic_development
    # Als git repo:
    git add -A && git commit -m "backup: pre-brinxx-sync $(date +%Y%m%d)"
    # Of als directory backup:
    cp -r backend/src backend/src.bak-$(date +%Y%m%d)
    cp -r storefront/src storefront/src.bak-$(date +%Y%m%d)
  2. Sync backend code van Brinxx → Development

    Terminal window
    SRC="/mnt/data/magic_omniverse/magic_commerce/magic_brinxx/backend/src"
    DST="/mnt/data/magic_omniverse/magic_commerce/magic_development/backend/src"
    # Sync APLT admin routes
    rsync -av --dry-run "$SRC/api/admin/aplt/" "$DST/api/admin/aplt/"
    # Controleer output! Als het goed is, verwijder --dry-run:
    rsync -av "$SRC/api/admin/aplt/" "$DST/api/admin/aplt/"
    # Sync admin UI routes
    rsync -av "$SRC/admin/routes/" "$DST/admin/routes/"
    # Sync store API routes (indien gewijzigd)
    rsync -av "$SRC/api/store/" "$DST/api/store/"
  3. Sync storefront code van Brinxx → Development

    Terminal window
    SRC="/mnt/data/magic_omniverse/magic_commerce/magic_brinxx/storefront/src"
    DST="/mnt/data/magic_omniverse/magic_commerce/magic_development/storefront/src"
    rsync -av --dry-run "$SRC/" "$DST/"
    # Controleer output! Als het goed is:
    rsync -av "$SRC/" "$DST/"
  4. Rebuild en test Development

    Terminal window
    cd /mnt/data/magic_omniverse/magic_commerce/magic_development
    docker compose build backend storefront
    docker compose up -d backend storefront
  5. Verifieer op https://admin-development.magiceverse.online

    • Test de specifieke fixes die in Brinxx zijn gemaakt
    • Controleer of bestaande functionaliteit nog werkt
    • Check logs: docker logs magic_development_backend_dev --tail=50

Stap 2 — Distribute Development → Alle Tenants

Section titled “Stap 2 — Distribute Development → Alle Tenants”
┌─────────────────────────────────────────────────────────┐
│ │
│ ✅ SYNC TARGETS ⛔ SKIP │
│ ───────────────── ─────────── │
│ │
│ • magic_default • magic_pim │
│ • magic_demo (aparte product │
│ • magic_jodasign master database) │
│ • magic_logohorloge │
│ • magic_bovisales │
│ • magic_desluis │
│ │
│ Opmerking: magic_brinxx wordt │
│ overgeslagen (is al de source) │
│ │
└─────────────────────────────────────────────────────────┘
  1. Backend distribueren naar alle tenants

    Terminal window
    SRC="/mnt/data/magic_omniverse/magic_commerce/magic_development/backend/src"
    TENANTS="magic_default magic_demo magic_jodasign magic_logohorloge magic_bovisales magic_desluis"
    for tenant in $TENANTS; do
    echo "━━━ Syncing backend → $tenant ━━━"
    DST="/mnt/data/magic_omniverse/magic_commerce/$tenant/backend/src"
    # Sync APLT admin API routes
    rsync -av "$SRC/api/admin/aplt/" "$DST/api/admin/aplt/"
    # Sync admin UI routes
    rsync -av "$SRC/admin/routes/" "$DST/admin/routes/"
    # Sync store API routes
    rsync -av "$SRC/api/store/" "$DST/api/store/"
    echo "$tenant backend synced"
    echo ""
    done
  2. Storefront distribueren naar alle tenants

    Terminal window
    SRC="/mnt/data/magic_omniverse/magic_commerce/magic_development/storefront/src"
    TENANTS="magic_default magic_demo magic_jodasign magic_logohorloge magic_bovisales magic_desluis"
    for tenant in $TENANTS; do
    echo "━━━ Syncing storefront → $tenant ━━━"
    DST="/mnt/data/magic_omniverse/magic_commerce/$tenant/storefront/src"
    rsync -av "$SRC/" "$DST/"
    echo "$tenant storefront synced"
    echo ""
    done
  3. Rebuild alle tenant containers

    Terminal window
    TENANTS="magic_default magic_demo magic_jodasign magic_logohorloge magic_bovisales magic_desluis"
    for tenant in $TENANTS; do
    echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
    echo " Building $tenant..."
    echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
    cd /mnt/data/magic_omniverse/magic_commerce/$tenant
    docker compose build backend storefront
    docker compose up -d backend storefront
    echo "$tenant rebuilt and running"
    echo ""
    done
  4. Verifieer elke tenant

    TenantAdmin URLStorefront URL
    Defaulthttps://admin-default.magiceverse.onlinehttps://default.magiceverse.online
    Demohttps://admin-demo.magiceverse.onlinehttps://demo.magiceverse.online
    Jodasignhttps://admin-jodasign.magiceverse.onlinehttps://jodasign.magiceverse.online
    Logohorlogehttps://admin-logohorloge.magiceverse.onlinehttps://logohorloge.magiceverse.online
    Bovisaleshttps://admin-bovisales.magiceverse.onlinehttps://bovisales.magiceverse.online
    De Sluishttps://admin-desluis.magiceverse.onlinehttps://desluis.magiceverse.online

Hieronder een compleet script dat Stap 1 + Stap 2 gecombineerd uitvoert:

#!/bin/bash
# ══════════════════════════════════════════════════════
# BRINXX CODE SYNC - Volledig automatisch
# ══════════════════════════════════════════════════════
set -e
BASE="/mnt/data/magic_omniverse/magic_commerce"
BRINXX="$BASE/magic_brinxx"
DEV="$BASE/magic_development"
TENANTS="magic_default magic_demo magic_jodasign magic_logohorloge magic_bovisales magic_desluis"
DATE=$(date +%Y%m%d-%H%M)
echo "╔══════════════════════════════════════════╗"
echo "║ Brinxx Code Sync - Starting... ║"
echo "║ Date: $DATE"
echo "╚══════════════════════════════════════════╝"
echo ""
# ── STAP 1: Brinxx → Development ──────────────────
echo "━━━ STAP 1: Sync Brinxx → Development ━━━"
# Backup
echo "Creating backup..."
cp -r "$DEV/backend/src" "$DEV/backend/src.bak-$DATE"
cp -r "$DEV/storefront/src" "$DEV/storefront/src.bak-$DATE"
echo "✓ Backup created"
# Sync backend
echo "Syncing backend..."
rsync -av "$BRINXX/backend/src/api/admin/aplt/" "$DEV/backend/src/api/admin/aplt/"
rsync -av "$BRINXX/backend/src/admin/routes/" "$DEV/backend/src/admin/routes/"
rsync -av "$BRINXX/backend/src/api/store/" "$DEV/backend/src/api/store/"
echo "✓ Backend synced to development"
# Sync storefront
echo "Syncing storefront..."
rsync -av "$BRINXX/storefront/src/" "$DEV/storefront/src/"
echo "✓ Storefront synced to development"
# Rebuild development
echo "Rebuilding development..."
cd "$DEV"
docker compose build backend storefront
docker compose up -d backend storefront
echo "✓ Development rebuilt"
echo ""
# ── STAP 2: Development → All Tenants ─────────────
echo "━━━ STAP 2: Distribute to all tenants ━━━"
for tenant in $TENANTS; do
echo ""
echo "┌─── $tenant ───"
DST="$BASE/$tenant"
# Backend
rsync -av "$DEV/backend/src/api/admin/aplt/" "$DST/backend/src/api/admin/aplt/"
rsync -av "$DEV/backend/src/admin/routes/" "$DST/backend/src/admin/routes/"
rsync -av "$DEV/backend/src/api/store/" "$DST/backend/src/api/store/"
# Storefront
rsync -av "$DEV/storefront/src/" "$DST/storefront/src/"
# Rebuild
cd "$DST"
docker compose build backend storefront
docker compose up -d backend storefront
echo "└─── ✓ $tenant complete ───"
done
echo ""
echo "╔══════════════════════════════════════════╗"
echo "║ ✓ SYNC COMPLETE ║"
echo "║ ║"
echo "║ Synced: Brinxx → Dev → 6 tenants ║"
echo "║ Skipped: magic_pim (separate DB) ║"
echo "╚══════════════════════════════════════════╝"

┌────────────────────────────────────────────────────────┐
│ PRE-SYNC CHECKLIST │
├────────────────────────────────────────────────────────┤
│ │
│ [ ] Brinxx fixes zijn getest en stabiel │
│ [ ] beta.brinxx.nl werkt correct │
│ [ ] Backup van magic_development gemaakt │
│ [ ] Diff bekeken tussen Brinxx en Development │
│ [ ] Geen conflicterende wijzigingen in Development │
│ [ ] Docker is beschikbaar en draait │
│ [ ] Voldoende disk space (check met df -h) │
│ │
└────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────┐
│ POST-SYNC CHECKLIST │
├────────────────────────────────────────────────────────┤
│ │
│ [ ] Development admin UI werkt │
│ [ ] Development storefront werkt │
│ [ ] Alle 6 tenant admin UIs werken │
│ [ ] Alle 6 tenant storefronts werken │
│ [ ] beta.brinxx.nl werkt nog steeds │
│ [ ] Geen errors in docker logs │
│ [ ] PIM is NIET aangeraakt │
│ [ ] Backup bestanden opruimen (na validatie) │
│ │
└────────────────────────────────────────────────────────┘

Als er iets misgaat na de sync:

Terminal window
# Rollback development backend
DATE="YYYYMMDD-HHMM" # Vul hier de backup datum in
cd /mnt/data/magic_omniverse/magic_commerce/magic_development
rm -rf backend/src
mv backend/src.bak-$DATE backend/src
docker compose build backend && docker compose up -d backend
# Rollback development storefront
rm -rf storefront/src
mv storefront/src.bak-$DATE storefront/src
docker compose build storefront && docker compose up -d storefront