Groningen · NLFull-stack since 2021

Ihor
Pysak
.

Ігор Писак

E-commerce Solution Architect & Full-Stack Developer. I architect and ship B2B e-commerce systems end-to-end — storefronts, custom apps, checkout-layer logic, and the back-office integrations that connect the store to ERP and fulfilment systems.

Ihor Pysak
GroningenActive
Featured engagement
Mar 2026 — present
Solution Architect & Full-Stack

Holigram.
A private Dutch B2B wholesale platform, owned end-to-end.

Login-gated, invite-only storefront serving registered Dutch businesses. I own the technical stack end-to-end — a custom Shopify storefront, checkout-layer logic, Node/TypeScript back-office integrations, and B2B email engineering.

0
Surfaces owned end-to-end
0
Languages delivered (NL / EN)
0
Years of full-stack practice
Live component · 01

Horizontal product card, rebuilt for wholesale buying.

On-card variant selection, real-time price × quantity math, a colored stock indicator, and add-to-cart without a page redirect. The card to your right is the real thing — pick a variant, change the quantity.

LiquidJavaScriptAJAX Cart APICSS Grid
product-card.liquid
Live component
Bag · 500 g
In stock
SKU · DEMO-0421

House Espresso Blend · Roast ’26

Sample catalogue · B2B only
Choose size
Quantity
2
Total
€25.60
volume-discount.js
Live component
Volume pricing

Staffelkorting

2% offat 10 kg
6 kg to 5% at 20 kg
Quantity
14 kg
Unit
€18.50 / kg
2%
5%
10%
Subtotal€259.00
Tier discount (2%)− €5.18
Total
€259.00€253.82
Live component · 02

Volume-discount engine with live tier snapping.

Tiered discounts (2 / 5 / 10 %) calculated client-side, announced with an animated badge and a strikethrough on the original price. Drag the slider — the tier snaps in on threshold.

JavaScriptLiquidMetafieldsFramer Motion
Live component · 03

Shipping rules that explain themselves.

Cart-weight sliders drive a cascade of rules — free-shipping thresholds, category surcharges, regional pricing — each evaluating in sequence with a visible pass / fail state. This is how the real checkout behaves; the calculation below is the same logic, slightly simplified.

JavaScriptShipMagicERP rulesReact
shipping-rules.js
Live component
Rules explorer

Shipping engine

Cart weight
18 kg
Standing order
Region
01Free shipping · weight ≥ 25 kgnot met
02Standing order · weight ≥ 10 kg€0.00
03Regional courier · Randstadskipped
04Regional courier · Noord-Brabantskipped
05International · outside NLskipped
Shipping cost
€0.00
Rule 02 applied — standing-order threshold met
Applied at checkout
Integration · 04

An integration layer that keeps two systems honest.

A typed Node/TypeScript layer to sync products, inventory and orders between the store and the back-office ERP — built with idempotency, rate-limit handling and dry-run safety, so the catalogue never drifts and stock numbers don't lie.

integration-layer.ts
Back-officeSOURCE OF TRUTHliveStorefrontSHOPIFY · B2Bliveproducts · inventory →← orders · statecron · webhooks
productsinventoryorders
Also shipped

Eight more surfaces, same codebase.

04
Cart page redesign
Free-shipping progress bar, live savings summary, streamlined checkout.
05
Product page redesign
Breadcrumbs, category badges, metafield-driven specs with regex fallback, interactive discount calculator.
06
Checkout-layer custom logic
Discount and delivery rules beyond what off-the-shelf apps allow.
07
Custom shipping logic
Weight-based rules, category surcharges, regional pricing.
08
Geo-restriction system
Customers in certain regions hidden from restricted products via customer tags.
09
B2B email engineering
Gmail-compatible table layouts, responsive without media queries.
10
Custom font delivery
TTF assets on CDN with preload chain, resolved CORS on modern themes.
11
Dual-language architecture
Customer UI in Dutch, codebase in English.
Personal product · Live on the Shopify App Store

Ralice.

B2B wholesale catalogs for Shopify. Solo, from architecture to the App Store.

Tag a customer “wholesale” or “vip” and their rates apply at checkout automatically, enforced by a Rust Shopify Function with no draft orders. Unlimited customer catalogs with per-variant overrides, percentages and volume tiers, plus a Quick Order Form, reorder from history and saved order templates. The B2B analytics (at-risk accounts, reorder timing, cohort retention, CLV) are hand-rolled SVG, no chart library.

Shopify AppReact Router v7Rust Shopify FunctionSupabaseVercelPolarisSVG charts
TypeFull-stack · solo
ScopeArchitecture → App Store
StatusLive on the Shopify App Store
CodebaseReact Router v7 · Rust · Supabase
Experience

Five years, three countries,
one trajectory.

Mar 2026 — present
Hybrid
Current

E-commerce Solution Architect & Full-Stack Developer

Holigram · Groningen, NL

Owns the technical stack end-to-end: custom Shopify storefront, checkout-layer logic, Node/TypeScript back-office integrations, and B2B email engineering.

May 2022 — Apr 2026
Freelance

Freelance Web Developer

Self-employed · Dutch SMB clients

Business websites, Laravel applications, hand-coded responsive landing pages for Dutch small- and mid-sized businesses.

Jan 2022 — May 2022
On-site

Fullstack PHP Developer

Tabelaofert.pl Sp. z o.o. · Poland

UI redesigns and new features on a Polish real-estate platform — PHP backend and customer-facing frontend.

Nov 2021 — Dec 2021
On-site

Fullstack Intern

Modern Expo · Lutsk, Ukraine

Internal Laravel web application — first production codebase, full-stack exposure end-to-end.

Stack & formation

The toolkit,
honestly grouped.

Frontend
HTML5CSS3JavaScript (ES5+)TypeScriptReactAstroResponsive DesignShopify LiquidAJAX
Backend
PHPLaravelNode.jsRustREST APIsMySQLSupabase / Postgres
E-commerce
Shopify themeAdmin / Storefront APIsShopify FunctionsCustom Shopify appsERP integrationsKlaviyoB2B storefrontsEmail engineering
Integrations
Cross-system data syncProducts / inventory / ordersScheduled jobsREST + GraphQLWebhooks
Tooling
GitVS CodeFigmaClaude CodeVercelTerminal
Education
Lutsk National Technical University
Bachelor’s — incomplete · Lutsk, Ukraine
Technical College of LNTU
Computer Engineering · 2017 – 2021 · Lutsk, Ukraine
Languages
UkrainianNative
RussianNative
EnglishAdvanced
DutchWorking · NL resident
PolishIntermediate
Get in touch

Let's build
something well-made.

Reply within 24 hours · Based in Groningen · Open to freelance alongside current role
Email
ferari19@gmail.com
→
Phone · NL
+31 6 18 92 89 58
→
LinkedIn
in/ihor-pysak
→
Studio
ralice.dev
→