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 Backend | Business logic, domain APIs and all external integrations (Laravel) |
| Zwerfkei CMS | Headless content management system (Laravel · Statamic) |
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 Backend\nLaravel"]
BackendDB[("Backend Database\nMySQL")]
end
subgraph LegacySystems["Legacy Systems"]
ZwerfkeiOld["Zwerfkei Old"]
OldDB[("Zwerfkei Old 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.