Skip to main content
ITISYOU
Menu
In developmentIn development — private

ITISYOU Products

A UK toy storefront being built to the standard it would need to meet before it could open — not yet open.

ITISYOU Products is a private, in-development storefront for UK toys, covering catalogue and toy-safety compliance, cart and checkout, fulfilment, returns and support, and an administration area with MFA. There is no public address, live payments are not enabled, and much of the latest work has not yet been committed.

Where it stands

Not released and not open. There is no public address, live payments are not enabled, and the email domain and real supplier connections a working shop needs are not yet in place.

Last verified

Private — there is no public address, by design.

What it is, in plain terms

ITISYOU Products is a private, in-development online storefront for toys, aimed at the UK market. It covers what a real toy shop needs underneath the browsing and buying: a catalogue with toy-safety compliance gates that a product has to clear before it can be listed, a cart and checkout that re-check stock and price rather than trusting whatever a browser last saw, a fulfilment state machine that moves a paid order through to dispatch, a returns and refunds process, a support system, and an administration area protected by multi-factor authentication.

It is built around the idea that a children's product storefront carries real obligations — correct age grading, the right hazard warnings, money handled correctly, a return that is genuinely reversible — and that those obligations belong in the software, not just in a policy document.

It is not open. There is no public address anyone can visit today, live payments are not switched on, and the supplier and email connections needed to actually run a shop are not yet in place. What exists is a working system tested against itself, not yet a shop.

Why I built it

I wanted to find out what it actually takes to build a storefront that could sell something as ordinary-sounding as toys without cutting corners on the parts that matter because they are inconvenient — age grading, hazard warnings, a refund that cannot silently be issued twice, a payment that is checked rather than assumed. Toys aimed at children carry compliance obligations that a lot of small storefronts treat as an afterthought, and I wanted the compliance gate to be a genuine blocker in the code, not a checkbox an administrator could skip under time pressure.

I also wanted to see how much of "the site works" turns out to be true on inspection versus true on paper — an earlier account of this project described every phase as complete, and going back through it with independent testing found real, exploitable defects underneath that description. Finding those, and fixing them with evidence rather than reassurance, became as much the point as the storefront itself.

The problem underneath

The general problem with e-commerce software that looks finished is that "looks finished" and "is safe to trust with real money and real children's products" are different claims, and the gap between them tends to be invisible until someone loses money or receives the wrong product. A checkout that trusts a price the browser sends back looks identical, in a screenshot, to one that checks it against the payment provider — right up until someone changes the price in their browser's own tools.

A returns form that always fails to refund because it submits a placeholder instead of the real item looks, in a demonstration, exactly like one that works. A compliance gate that exists as a field on a form rather than a genuine block on listing looks the same right up until the product it should have stopped goes live. The project's working assumption is that these gaps only close under real testing — concurrent requests, a real payment provider's test mode, a genuinely wrong return — not under a read-through of the code.

How it works, without the jargon

In practice, a toy has to pass a compliance gate — checking required marks, age grading and hazard warnings — before it can be listed in the catalogue at all. A shopper's cart is re-checked at each step: stock, price and whether an item is still active are all re-verified rather than carried over from when the page first loaded.

At checkout, the order is drafted on the server first, and the payment is only accepted once it has been independently checked with the payment provider — the order amount checked against what the provider actually recorded, not against whatever the browser reports. A paid order moves through a defined fulfilment state machine, from payment through validation to being routed to a supplier and on to dispatch, with each transition checked against the order's real state so that, for instance, a cancelled order cannot be sent on for fulfilment.

If something goes wrong for the shopper, a returns flow lets them pick from the real items on a real order rather than a placeholder, and an approved return triggers a refund that is checked against duplicate attempts. The whole thing sits behind an administration area that will not grant full access to an account that has not enrolled in multi-factor authentication.

What building it taught me

The clearest lesson was how much distance there can be between a phase history that reads as "complete" and a system that has actually been tested under adversarial conditions. Re-running the project's own inherited test suite confirmed the numbers it claimed, but going further — trying to break the checkout, the refund path, the payment-confirmation handling, the admin permissions — found genuine, exploitable defects that a passing test suite had not caught, because the suite tested what the code was written to do rather than what someone might try to make it do instead.

The returns defect was a good example of how quietly this kind of thing hides: the form submitted a hardcoded placeholder for which item was being returned, the refund calculation built on that placeholder was always zero, and every single return approval failed — and none of that showed up until someone tried to actually return something for a reason the code did not expect.

The other lesson was more general: fabricated-looking content is a specific, findable category of defect — a tracking page inventing a delivery timeline, for instance — and it is worth testing for on its own terms, separately from whether a feature technically executes without an error.

Where it stands today

ITISYOU Products is in development, private, and not open. Catalogue, compliance gating, cart, checkout, the fulfilment state machine, returns, support and an MFA-protected administration area are implemented, and nineteen of nineteen end-to-end payment journeys — success, decline, a correctly signed confirmation, a duplicate confirmation, a refund, and a rejected forged confirmation — pass against a deployed pre-production environment using the payment provider's test mode.

A number of genuine, exploitable defects found by independent testing since an earlier, overstated account of the project have been fixed and verified, including the returns flow described above and a tracking page that had been inventing its progress.

What remains before the storefront could open is not, by the project's own account, further engineering so much as a short list of things outside the code entirely: a verified domain to send email from, live payment keys, a public address bound to the running service, real supplier credentials, and the owner's approval to go live. Much of the most recent work had not yet been committed to the project's history at the point this record was written.

Where it may go

Next: verify a real supplier connection and a sending domain for order and support email, since only a reference connector and a placeholder sender exist today. Then: close the smaller follow-ups already recorded as outstanding, including moving rate limiting from a best-effort control to an exact one. Later, if the owner approves: enable live payments and bind the storefront to a public address for the first time.

None of this describes a business that is trading; it describes the specific, named steps between an in-development storefront and one that could open.

For developers: how checkout, fulfilment and the returns defect were fixed

The checkout is deliberately built so that the server, not the browser, is the source of truth for what was paid. An order is drafted server-side before payment starts, and the browser-facing payment element only ever collects the card details; when the shopper confirms, the server independently asks the payment provider whether that specific payment succeeded and for how much, and only finalises the order if the provider's own record agrees with the order total. This closes the specific defect that let an earlier version of the checkout accept whatever price the client claimed.

Supplier fulfilment uses deterministic, content-derived keys rather than randomly generated ones, so that re-running the same routing step — after a retry, say, or a duplicate event — produces the same fulfilment group and the same supplier payment rather than a second one. The same idea is applied to payment-provider confirmations: each is checked against a durable record of ones already handled, and a confirmation that fails signature verification is rejected outright rather than processed and flagged.

The returns defect is worth a closer look because of how invisible it was. The customer-facing form was submitting a fixed placeholder string for which order item was being returned, rather than the real item's identifier, so every calculation built on top of it — which item, what it cost, how much to refund — was working correctly against the wrong input, which produced a consistent, confident zero rather than an error. The fix rebuilt the flow as two genuine steps, looking the order up first and then presenting its real items to choose from, and added a check that rejects any item that does not actually belong to the order.

The compliance gate for toy products is implemented as a function a product must pass before it can be listed, rather than as a form an administrator fills in and is trusted to complete correctly. It checks for the marks, age grading and hazard warnings the category requires, and a product that does not clear it is not listable, independent of anything else about it.

How it works

Can a UK toy storefront meet the safety, payment and fulfilment standards it would need before anyone could actually buy something from it?

The loop, step by step

  1. A toy product is catalogued and checked against toy-safety compliance gates before it can be listed
  2. A shopper builds a cart, with stock and pricing re-checked at each step
  3. Checkout collects payment through a card payment provider
  4. A paid order moves through a fulfilment state machine towards dispatch
  5. A shopper can request a return or refund, or contact support
  6. Administration, protected by MFA, oversees catalogue, orders, and the platform's own health

The principle underneath

Nothing sells until it has been checked safe to sell

A toy cannot be listed until it clears the compliance gates that check age grading, required marks and hazard warnings, and a payment cannot be trusted until it has been independently checked with the payment provider rather than taken on the word of the browser that sent it.

What exists today

Implemented in the current code. Nothing here is a plan.

  • toy-compliance

    Toy-safety compliance gates

    Toy products are checked against required UK marks, age grading and hazard-warning rules before they can be listed.

  • checkout

    Server-verified checkout

    An order is not marked paid because a browser said so; the order total is checked directly against the payment provider before it is finalised.

  • fulfilment

    A defined fulfilment state machine

    An order moves through explicit stages from payment to dispatch, with orders that fail a check — a cancelled order, for instance — stopped from reaching a supplier.

  • returns

    Returns and refunds

    A shopper can request a return against real items on a real order, and an approved return triggers a refund that cannot be issued twice for the same case.

  • admin-mfa

    Administration protected by MFA

    The administration area enforces multi-factor authentication; an account that has not enrolled is limited until it does.

  • audit

    Actions are logged

    Administrative and commerce actions are written to an audit log rather than left unrecorded.

What was verified

Each result carries the weight its level allows and no more. These are the project's own records of itself — nobody else has reproduced them.

DemonstratedRun on the verified device and observed to work.
  • Catalogue, cart, checkout, fulfilment, returns and administration are implemented

    Each area is built and exercised by the project's automated tests and, for the payment journeys, against a live pre-production deployment.

TestedCovered by automated or repeated manual testing.
  • 19 of 19 end-to-end payment journeys pass

    Success, decline, a correctly signed payment confirmation, a duplicate confirmation, a refund and a rejected forged confirmation were all exercised against a deployed pre-production environment, using the payment provider's test mode.

  • Storefront returns are genuinely refundable

    The defect that made every return fail to refund is fixed and verified against real order items on a live pre-production deployment.

LimitedShown only under specific conditions, stated alongside it.
  • All recently completed work is committed and preserved

    Much of the latest work had not yet been committed to the project's history at the point this record was written.

Not claimedExplicitly outside what this prototype does or asserts.
  • The storefront is open to the public

    There is no public address that resolves to it today.

  • Live payments are enabled

    Everything tested so far has used the payment provider's test mode; live payment keys are not in place.

  • Real supplier and email connections work end to end

    Only a reference connector and a placeholder email sender exist; real supplier credentials and a verified sending domain are not yet in place.

Rules it holds to

Decisions made on purpose, so none of them has to be inferred from silence.

A toy does not clear the compliance gate
It cannot be listed for sale.
A payment has not been independently checked with the payment provider
The order is not marked paid, whatever a client-supplied value claims.
An order is cancelled or has not reached the required payment state
It is not sent on to a supplier for fulfilment.
An administrator has not enrolled in MFA
Their session is limited to enrolment only.

Not open

There is no public address to visit and nothing to buy from anyone today.

Payments are in test mode only

Everything paid for so far has used the payment provider's test mode; live payments are not enabled.

Real supplier and email connections are not yet in place

The storefront's supplier and outbound-email integrations are built against a defined interface but not yet connected to real, named suppliers or a verified sending domain.

Problems and lessons

Real problems from the project's own records, with what was found, what changed and how it is checked now.

  1. 01

    Storefront returns could not actually be refunded

    What was found
    The customer-facing returns form submitted a placeholder value instead of the real item being returned, so the refund amount calculated from it was always zero and every return approval failed.
    What changed
    The flow was rebuilt as two steps: find the real order, then choose from its real items; the service now rejects any item that does not genuinely belong to the order.
    How it is checked now
    Tested live: submitting the old placeholder value now fails cleanly, and a real item produces a genuine return.
  2. 02

    The order-tracking page showed fabricated progress

    What was found
    The customer-facing tracking portal generated a random-looking status and a fixed timeline rather than reading anything real, so a shopper checking on an order saw invented progress.
    What changed
    Tracking now reads the actual fulfilment and shipping state for the order, checked against the order number and the email address that placed it.
    How it is checked now
    Verified live: a real order shows its real state, and a wrong email address is refused rather than shown someone else's order.
  3. 03

    Administration roles could not do the jobs they were meant to do

    What was found
    The permission names checked by several administration routes did not match the permission names actually granted to those roles, so a manager could not move an order forward and a finance role could not use the pricing tool.
    What changed
    The checked permission names were aligned with the granted ones, and each role's access is now tested individually.
    How it is checked now
    Each affected role is exercised by an automated test asserting it can do what it is meant to and nothing more.
  4. 04

    A cancelled order could still be dispatched to a supplier

    What was found
    Order routing to suppliers checked less than the full set of conditions that should stop it, so a cancelled order was not reliably excluded.
    What changed
    Routing was gated on both the order's state and its payment status together, so a cancelled order produces no fulfilment groups at all.
    How it is checked now
    Tested directly: a cancelled order now produces zero fulfilment groups where it previously could produce one.

Limits and unknowns

What it does not do, and what it is not — stated here rather than discovered later.

Limitations

  • Not open. There is no public address, and nothing can be bought from it today.
  • Live payments are not enabled; every payment result recorded here is from the payment provider's test mode.
  • A verified email-sending domain and real supplier connections are not yet in place.
  • Much of the latest work had not yet been committed to the project's own history at the point this record was written.
  • Results and test counts are the project's own measurements, run against its own pre-production environment.
  • Rate limiting on the deployed platform is a best-effort, per-location control rather than an exact one.

What it is not

  • Not open — there is no public address for anyone to visit, and nothing can be bought from it today.
  • Not trading — nothing here describes an operating business; it describes an in-development storefront being built and tested.
  • Not live on payments — every payment result recorded here used the payment provider's test mode.
  • Not connected to real suppliers — only a reference connector exists; real supplier integrations are unwritten.
  • Not independently audited — every result above is the project's own measurement of itself.

Where it may go

Directions the project's own plans record. Intentions, not promises — and not dates.

  1. Next: verify a real supplier connection and a verified sending domain for order and support email
  2. Then: complete the remaining engineering follow-ups already recorded as outstanding
  3. Later, if the owner approves: enable live payments and open the storefront at a public address

Technical detail

For developers. Nothing here is needed to understand the rest of the page, and nothing here is an address, a port or a path.

Money is handled as minor-unit integers

Prices and totals are represented as whole minor units of currency rather than as floating-point numbers, to avoid rounding defects in money arithmetic.

Checkout re-verifies server-side

A payment is confirmed by checking the payment intent directly with the payment provider — status and amount both — rather than trusting a value a browser sends back.

Fulfilment splits by supplier with idempotent keys

A multi-item order is split into supplier-specific fulfilment groups using deterministic keys, so re-running the same routing step does not create duplicate supplier orders.

Toy-safety compliance is a gate, not a checklist

The compliance check runs as a gate a toy product must clear before listing, rather than a set of fields an administrator is trusted to fill in correctly.

Payment confirmations are deduplicated and fail closed

Payment-provider confirmations are checked against a signature and a durable record of ones already handled, and an unverifiable confirmation is rejected rather than accepted by default.

What this is based on

Sources for this page

  • ITISYOU Products repository and remaining-work record — inspected directlyprivate source — described, not linked

    The development story, remaining-work record and commit history were inspected. They record a storefront, checkout, fulfilment, returns and administration implemented, 19 of 19 end-to-end payment journeys passing in the payment provider's test mode, and the steps still outstanding before it could open. Much of the latest work was not yet committed at inspection.

    Checked 11 September 2026

This rests on private records — the project's repository, test results and engineering history, inspected directly. There is deliberately nothing public to check. If anything here turns out to be wrong, the corrections page explains how it gets fixed.