Skip to content

Image Management

All product images are stored on the host filesystem:

/mnt/data/pim_data/
├── spranz/ # Spranz supplier images (code 01)
│ ├── 5325-00.001.jpg # Variant image
│ ├── 376-00.svg # Base SVG
│ └── ...
├── moxz/ # Moxz supplier images (code 02)
├── langenberg/ # Langenberg supplier images (code 03)
├── xdconnect/ # XD Connect supplier images (code 04)
├── pfconcept/ # PF Concept supplier images (code 05)
├── midocean/ # Midocean supplier images (code 06)
├── toppoint/ # Toppoint supplier images (code 07)
├── newwave/ # NewWave Textiles supplier images (code 09)
├── svg/ # SVG logos for personalization
│ ├── spranz/ # Spranz SVGs
│ │ ├── 376-00.001.svg # Variant SVG
│ │ └── 376-00.svg # Base SVG (fallback)
│ ├── langenberg/ # Langenberg SVGs
│ ├── pfconcept/ # PF Concept SVGs
│ ├── xdconnects/ # XD Connect SVGs
│ ├── logohorloge/ # Logohorloge SVGs
│ ├── dwf/ # DWF SVGs
│ ├── grafotex/ # Grafotex SVGs
│ ├── artwork/ # Artwork SVGs
│ ├── convert/ # Converted SVGs
│ └── jpg/ # JPG versions of SVGs
├── customers/ # Customer-specific files
├── documents/ # Product documents
├── images/ # General images
├── 3d_models/ # 3D model files
├── movies/ # Product videos
└── scripts/ # Utility scripts
  • Lowercase extensions: Always .jpg, never .JPG
  • Path format: supplier/sku.jpg (relative, no leading slash in DB)
  • Database storage: Image columns store relative paths (e.g., 5325-00.001.jpg)
  • Variant: {variant_code}.svg376-00.001.svg
  • Base: {sku}.svg376-00.svg
  1. First: /{svg_path}/{variant_code}.svg (e.g., /svg/spranz/376-00.001.svg)
  2. Fallback: /{svg_path}/{sku}.svg (e.g., /svg/spranz/376-00.svg)

Nginx serves images directly for performance:

location /pim_data/ {
alias /mnt/data/pim_data/;
expires 30d;
add_header Cache-Control "public, immutable";
}
GET /api/products/images/[supplier]/[filename]

Requires authentication. Reads from /mnt/data/pim_data/.

GET /api/static/products/[supplier]/[filename]

Public access. Used by storefronts.

The storefront proxies image requests:

GET /api/images/[...path]

Forwards to the backend API.

Product images are mounted read-only in all tenant containers:

volumes:
- /mnt/data/pim_data:/mnt/data/pim_data:ro
- /mnt/data/magic_pim/backend/uploads:/app/uploads:ro
- /mnt/data/magic_pim/backend/static/branding:/mnt/data/magic_pim/backend/static/branding:ro

For product images that need background removal:

  • Service: RemBG (port 5050)
  • URL: rembg.magiceverse.online
  • Access: Restricted to Spranz server IP (23.88.122.78)
  • Container: rembg-service

SVG files are also hosted on the external Spranz Designer server:

  • Server: designer.spranz.de (23.88.122.78)
  • SSH: ssh spranz-live
  • SVG Location: /var/www/designer.spranz.de/svg/
  • Management: https://designer.spranz.de/managementtool/