Skip to content

Zwerfkei Platform Overview

Welcome to the Zwerfkei System Overview. This document provides a high-level description of the Zwerfkei ecosystem, including all major services, applications, and their interactions.


Platform Purpose

Zwerfkei is a Dutch specialist outdoor retailer based in Woerden. The platform serves customers both through its physical store and its e-commerce website, offering a wide assortment of camping, hiking, climbing, cycling and travel equipment.

The Zwerfkei platform is a modular, service-oriented ecosystem designed to manage e-commerce operations, customer interactions, inventory, and marketing automation. The architecture promotes scalability, flexibility, and maintainability by decoupling responsibilities across independent services.


Current Platform

Current situation — legacy platform

The sections below describe the existing Zwerfkei platform (zwerfkei.nl) built on a legacy stack. This context is relevant for understanding what the new platform must replicate and improve upon.

Assortment & Scale

Products 1,000+
Brands 130+
Main categories 9
Price range €2.50 – €1,185
Customer reviews 9.3/10 · 8,837 reviews (Kiyoh)
Certification Webshop Keurmerk

Product Categories

Category (NL) Category (EN)
Kamperen Camping
Outdoorkleding Outdoor Clothing
Schoenen Footwear
Bergsport & Wintersport Mountain & Winter Sports
Rugzakken & Tassen Backpacks & Bags
Travel Travel
Uitrusting Equipment & Tools
Fiets Cycling
Boeken & Kaarten Books & Maps

Product Filtering (current)

The current platform features extensive per-category filtering — a capability the new platform must match or exceed:

Category Products Filter depth
Outdoor Clothing 2,669 50+ material filters, 80+ activity subcategories, gender, size, waterproofing, UV, weight
Footwear 906 Terrain class (A–D), fit (wide, narrow, Hallux Valgus), size (EU/UK/US 19–52), vegan
Backpacks & Bags 791 Volume, weight, material, ventilation, access type
Mountain & Winter Sports 478 131 brands, 177 subcategories, safety ratings (kN)
Cycling 679 Waterproofing, material, bikepacking vs. commuter

Special Collections

Ultralight · Survival & Prepping · Family Holidays · Bikepacking · Trail Running · Commuter Cycling · Sustainable Products · Emergency Preparedness

Physical Store

Zwerfkei operates a physical store in Woerden that is tightly integrated with the online platform:

  • 700 m² permanent tent display for in-store comparison
  • 25-metre test trail for footwear fitting
  • Treadmill for walking shoe evaluation
  • Snowshoe rental service
  • Real-time store status and opening hours displayed on the website

Current Technology Stack

Legacy stack

The current platform runs on a legacy stack that is being replaced by the new architecture.

Layer Technology
Frontend jQuery + Bootstrap
Analytics Google Universal Analytics (UA-656621-1) — legacy, to be replaced by GA4
Tag management Google Tag Manager (GTM-5BTFTF)
CDN / Storage True Object Storage (objectstore.true.nl)
Security CSRF tokens, reCAPTCHA, secure cookies

Payment Methods (current)

iDEAL · Bancontact · Mastercard · Visa · PIN · Billink (buy now, pay later)


Core Components

Service Description
Zwerfkei Website Frontend storefront — new platform (Laravel · Vue.js · TypeScript)
Zwerfkei API Business logic, domain APIs and all external integrations (Laravel) — no user interface
Zwerfkei CMS Headless content management system (Laravel · Statamic)
Zwerfkei Medewerkersportaal Internal portal for store employees — printing tickets, tracking repairs, generating QR codes, and other in-store operations
Zwerfkei Backoffice (legacy) The legacy monolithic application predating the new platform. No new development takes place here

Naming update

These names replace the earlier internal shorthand, which caused confusion in meetings, tickets and documentation:

Current name Previously known as
Zwerfkei API Zwerfkei Backend
Zwerfkei Medewerkersportaal Zwerfkei Backend V2
Zwerfkei Backoffice (legacy) Zwerfkei Backend OUD

System Architecture

graph TD
    subgraph Actors["Users & Actors"]
        Visitor["Website Visitor"]
        Employee["Employee"]
        ContentMgr["Content Manager"]
    end

    subgraph ZwerfkeiPlatform["Zwerfkei Platform"]
        Cloudflare["Cloudflare\nCDN & Security"]
        Website["Zwerfkei Website\nLaravel · Vue.js · TypeScript"]
        CMS["Zwerfkei CMS\nLaravel · Statamic"]
        Backend["Zwerfkei API\nLaravel"]
        BackendDB[("API Database\nMySQL")]
    end

    subgraph LegacySystems["Legacy Systems"]
        ZwerfkeiOld["Zwerfkei Backoffice (legacy)"]
        OldDB[("Zwerfkei Backoffice (legacy) Database\nMySQL")]
    end

    subgraph ExternalServices["External Services"]
        Navision["Microsoft Dynamics\nNavision ERP"]
        Ergonode["Ergonode PIM"]
        PostNL["PostNL\nShipment"]
        PayNL["PayNL\nPayments"]
        Kiyoh["Kiyoh\nReviews"]
        Copernica["Copernica\nEmail Marketing"]
        Storage["True Object Storage\nS3"]
    end

    subgraph AnalyticsTracking["Analytics & Tracking"]
        GTM["Google Tag Manager"]
        GA4["Google Analytics 4"]
    end

    Suppliers(["~17 Brand &\nSupplier Sources"])

    %% Actor flows
    Visitor --> Cloudflare
    Employee --> ZwerfkeiOld
    ContentMgr --> CMS

    %% Frontend flows
    Cloudflare --> Website
    Website -- "File Storage" --> CMS
    Website -- "HTTP / API" --> Backend
    Website --> GTM
    GTM --> GA4

    %% Backend flows
    Backend --> BackendDB
    Backend -- "Pricing & Availability" --> Navision
    Backend -- "Product Data API" --> Ergonode
    Backend --> PostNL
    Backend --> PayNL
    Backend --> Kiyoh
    Backend -- "Newsletter opt-in/out" --> Copernica
    Backend --> Storage
    Backend -- "Legacy API" --> ZwerfkeiOld

    %% CMS
    CMS --> Storage

    %% Legacy flows
    ZwerfkeiOld --> OldDB
    ZwerfkeiOld --> Navision

    %% Product data sources
    Suppliers -- "Product info &\nAvailability" --> Ergonode

Monitoring & Logging

All services follow the centralized logging and monitoring standards described in shared/logging.md.