Oskar Karpiński
Back to projects
Full-stack platform · PL / NO

Alan Borys — sales platform for Poland and Norway

I built one platform from scratch that runs under two domains. The scope covered the Next.js application, Payload CMS, Stripe sales flow, PostgreSQL, container deployment and production VPS configuration.

01

The challenge

The goal was to create one coherent platform for a brand operating in Poland and Norway at the same time. It had to present the offer, enable online sales and let the team manage content without involving a developer for every change.

The project needed to bring two market versions, a CMS, payments, data and infrastructure together into one system ready for reliable production use.

02

The solution

I built the platform from scratch with Next.js, React and TypeScript. Payload CMS manages content, offers and sales data, while Stripe handles payments for training and products.

The Polish and Norwegian versions share one architecture and PostgreSQL database, but run on separate domains. This keeps both markets in one system while allowing their content and communication to stay local.

One architecture · two markets

PL and NO versions in the live platform

The Polish and Norwegian versions use one shared system, while reaching their audiences through their own domains and local language.

Desktop homepage of alanborys.pl showing the Polish sales platform
PL · alanborys.pl
Mobile homepage of alanborys.no showing the Norwegian sales platform
NO · alanborys.no

03

One system, two markets

I delivered the Polish version at alanborys.pl and the Norwegian version at alanborys.no. Both domains point to the shared application, which identifies the market and serves the appropriate content.

This approach keeps one codebase, CMS and sales workflow instead of duplicating the whole product. Each version can still have its own language, messaging and offer.

04

CMS, offer management and payments

I configured Payload CMS with the collections and data structure needed for pages, content, training, forms, orders and media. The admin panel makes it possible to update the offer without editing the application code.

Stripe is integrated with the sales flow and offer synchronization. In practice, the frontend, CMS and payments work as one path — from presenting a training product to handling an order.

05

From containers to production

I prepared the full production environment on a Debian VPS: Docker, Docker Compose, PostgreSQL, and application and dependent-service containers. The setup includes environment variables, secrets, data migrations, health checks and automatic restarts after a server reboot.

Caddy acts as the reverse proxy, routes traffic to the application and handles HTTPS with TLS certificates. The deployment also covered domains, DNS, VPS hosting configuration, and domain email and business mailboxes for both domains.

Delivery flow

  1. Next.js + React
  2. Payload CMS
  3. Stripe
  4. PostgreSQL
  5. Docker Compose
  6. Caddy
  7. VPS · Debian
  8. Production

06

End-to-end delivery ownership

I was responsible for the application architecture, responsive frontend, CMS, data, payments and production setup. That kept decisions about the interface, sales flow and infrastructure in one context.

This was not treated as simply publishing a website. I took the project from code and content management to a live environment serving two markets through its own domains.

My role

From code to a live environment

I led the delivery end to end — from architecture and interface decisions to the CMS, sales flow, server and domain services.

01

Architecture and frontend

I designed the shared Next.js application, responsive React interface and two-market support under separate domains.

Next.jsReactTypeScript
02

CMS and sales

I configured Payload CMS, the data model, management panel and Stripe integration needed to sell the offer online.

Payload CMSStripePostgreSQL
03

Deployment and infrastructure

I prepared containers, Docker Compose, PostgreSQL, Caddy and a VPS environment ready to run a production application.

Docker ComposeCaddyDebian
04

Domains and operations

I configured domains, DNS, HTTPS and email handling so both markets could operate as a complete service.

DNSTLSEmail

Client project

Visit the live platform

Alan Borys is a commercial project developed for a client. Its source code and infrastructure details are not public.