Ioannis Antoniou

Selected work

Operational products with real friction, not fictional smoothness.

These are the products I like most: systems where launch criteria, routing logic, permissions, and field operations all have to make sense at the same time.

Asset onboarding and digital-twin mapping

A workflow-heavy onboarding surface where readiness, ownership, and operational accuracy had to remain visible at every step.

Context
The product needed to onboard operational assets into a digital-twin model without leaving operators guessing which mappings were safe to publish.
Role
Product-minded engineer shaping the flow structure, state communication, and implementation detail.

Constraints

  • Multiple sources of truth could disagree during onboarding.
  • Operators needed confidence before publishing mapped assets.
  • The UI had to explain partial progress without pretending the workflow was complete.

Decisions

  • Moved critical blockers into a persistent summary instead of hiding them behind tabs.
  • Separated editable controls from publish-critical state to reduce accidental optimism in the UI.
  • Made readiness legible through explicit steps and operator-readable status copy.

Outcome

The onboarding flow became easier to audit, easier to recover mid-way, and easier for operators to trust before publication.

Luxury bidding platform for yachts, villas, stays, and experiences

A real-time marketplace where bidding trust, concierge logistics, and payment readiness had to stay legible across high-value inventory.

Context
The platform supported bidding on yachts, apartments, villas, and curated experiences while coordinating live limo and taxi visibility, Stripe payments, and operator handoffs inside the same product surface.
Role
Full-stack engineer responsible for platform infrastructure, bidding workflows, live operational state, and frontend/backend delivery.

Constraints

  • High-value bids could not drift between the UI, backend state, and payment readiness.
  • Live transport updates had to stay useful for operators without turning the interface into noisy telemetry.
  • Queues, caching, and third-party dependencies needed safe fallback paths when the system was under pressure.

Decisions

  • Modeled bidding, payment, and fulfillment as explicit state transitions instead of loosely coupled status flags.
  • Used queues and caching to absorb spikes while keeping stale or delayed states visible to operators.
  • Unified frontend and backend workflows around operator-readable status language for bids, tracking, and payment exceptions.

Outcome

The platform shipped with clearer trust signals for buyers and operators, making live bidding, transport visibility, and payment execution easier to reason about under real-world load.

Interactive demo

Onboarding command center

What you are looking at: an invented “onboarding command center”. It is not a real product — it exists so you can watch how I surface blockers and launch gates in an interface. Flip the controls and try to publish.

Status

In progress

2 blockers still visible

Readiness score

74

Launch checks passed

3 / 5

Current blockers

Interactive controls

Deployment starts in EU-West to keep residency risk low unless the operator explicitly chooses otherwise.

Required modules

All three required modules stay on the launch checklist. If one turns off, that should stay explicit.

Identity
Access
Reporting

Pick the accountable owner who can answer for launch readiness once the gate opens.

Compliance confirmation

Confirm that the release cleared compliance review before publish is allowed.

Proof bridge

Why this demo matters

The point is not a fictional product. The point is how launch risk becomes visible before it turns into customer pain.

  • Blockers stay explicit, so readiness is never guessed from visual polish or optimism.
  • Launch gates stay strict until ownership, compliance, and required modules line up.
  • The score is useful only because it is tied to concrete operator-visible state.

Side projects

Open-source work I maintain on my own time.

Typed libraries and live demos — quick links below, separate from the client case studies above.

EuroLeague API — typed SDK and live demo

A strongly-typed TypeScript client for EuroLeague and EuroCup public APIs, plus a client-side demo with interactive docs, a playground, and computed advanced stats.

TypeScriptTanStack StartTanStack Querynpm

Need help clarifying a similar workflow? Open contact.

Contact