Back

Nordic Charge

Building software for the EV charging ecosystem.

Full-Stack Developer · May 2025 – Present

My role

I work across the production systems that connect partners, products, orders and EV charging operations, building and owning customer-facing products and integrations, while maintaining and extending the platform behind them.

Website

Built & own

nordiccharge.com, Astro + React, English and Danish

Marketplace

Built & own

B2B storefront on WordPress + WooCommerce

Commerce integrations

Built & own

Nordic Charge for WooCommerce, the partner-side plugin

API v2

Designed & built

The Portal's machine-to-machine REST API

Partner Portal

Maintain & develop

Existing Laravel platform, now one of its main maintainers

How the systems connect

Marketplace

WordPress · WooCommerce
custom theme + B2B plugin

Partner storefronts

Shopify · WooCommerce
plugin & webhook intake

API v2 · OAuth m2m
signed webhooks · API v2

Partner Portal

Laravel · Filament · Livewire. Orders, installers, inventory, invoicing

Charging & logistics platforms

Monta · Zaptec · EOSVolt · 3PL shipping · Minuba for installers

Orders can enter the Partner Portal through several channels. The marketplace extends WooCommerce with custom functionality and talks to the Portal through API v2 using machine-to-machine OAuth authentication. Partners running their own Shopify or WooCommerce stores feed orders in through signed webhooks or the integration plugin. Larger partners running their own systems integrate directly against the Portal's REST APIs, the legacy API v1 or API v2, depending on their needs. The Portal orchestrates everything downstream, fulfilment pipelines, installer field operations, inventory and invoicing, and connects to charge-point platforms such as Monta, Zaptec and EOSVolt.

Partner Portal & API v2

The existing platform

The Partner Portal predates my involvement: a multi-tenant Laravel, Filament and Livewire platform covering order management, installer operations, team inventories and invoicing. Since joining in May 2025 I have become one of its primary maintainers, contributing several hundred commits across order workflows, partner operations and integrations.

API v2 Designed & built from scratch

API v2 is the Portal's machine-to-machine REST API for partner integrations, and the primary API path for every new partner integration:

The API ships with generated reference docs, a Postman collection and a feature-test suite covering the full OAuth round-trip, team scoping, pagination and idempotency.

Marketplace

Built on WordPress + WooCommerce

The Nordic Charge B2B marketplace lets partners order charging equipment directly. It deliberately builds on WordPress and WooCommerce rather than a custom commerce engine, using the platform's existing commerce capabilities while keeping the partner-specific functionality custom.

What I built

I built the custom theme and B2B plugin end to end and continue to own both in production. Together they turn a stock WooCommerce install into a partner store:

The theme shares its design system with the public website, so the marketplace looks and feels like Nordic Charge across two very different stacks.

Commerce integrations

The problem

Before the integration plugin existed, WooCommerce orders reached Nordic Charge through a generic webhook, and matching what was actually ordered meant guessing from SKU strings and product titles.

The solution

I built and maintain Nordic Charge for WooCommerce, a plugin any partner store can install, built around explicit mapping instead of guessing. Merchants map their catalogue to Portal products once, with a parent/attribute model that keeps the mapping table small.

30

individual variation mappings

13

parent + attribute mappings

A charger with six colours across three installation tiers requires 30 variation-level mappings with a naive approach, versus 13 mappings using the parent/attribute model.

Reliability

Orders are submitted through API v2 with a strict split between terminal and retryable failures, bad data fails fast with a note naming the field; network and server errors retry on a backoff ladder without ever double-submitting. Submission state lives in HPOS-safe order meta, so every admin surface (order column, meta box, resubmit action) works on both classic and high-performance order storage.

Testing

The plugin ships with 400+ unit and integration tests, static analysis at PHPStan level 8, and a CI matrix across PHP and WooCommerce versions.

Website

Ownership

I built nordiccharge.com and am responsible for its development, deployments and ongoing maintenance.

Architecture

Astro and React, with around 26 routes across English and Danish, plus serverless contact and careers endpoints.

Content system

Non-technical colleagues publish insights and team updates through a Git-based CMS that commits directly to the repository. I also built a custom rehype plugin to transform the CMS's markup into styled callouts.

Accessibility

Internationalisation with locale fallbacks, reduced-motion support and keyboard-accessible navigation.

Deployment & infrastructure

GitHub Actions · Laravel Forge · DigitalOcean

I manage the deployment pipeline and production releases for the systems I own.