---
title: "LivLive Case Study"
canonical: https://wavect.io/case-studies/livlive/
language: en
description: "LivLive is an AR and real-world asset commerce platform. Wavect built its web application, payment flows, and on-chain referral system from an empty codebase."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

[← All case studies](/case-studies/)

![LivLive logo](/img/clients/svg/livlive.svg)

CASE STUDIES · 2025

LivLive

# $2M+ raised through the product, 1,000+ concurrent users, from zero in 6 weeks.

LivLive brings the Pokémon GO experience to everyday life with RWAs, the only RWA platform with a global, immersive AR reward engine. $2M+ raised through the product.

BLOCKCHAIN Fullstack Build 2025 Live

At a glance

Engagement Fullstack Build

Industry [Blockchain / RWA](/industries/blockchain-web3/)

Stage Seed

Engagement size Fixed price

Year 2025

Stack

Solidity Typescript React NestJS

Status Live

Live [livlive.com](https://livlive.com/)

## Overview

LivLive brings the Pokémon GO experience to everyday life with RWAs, the only RWA platform with a global, immersive AR reward engine. $2M+ raised through the product.

## What's the challenge?

Zero codebase, zero infrastructure, six weeks. Scope: a multi-level on-chain referral system, fiat-to-chain NFT drops via Wert.io, crypto payments via NOWPayments, a full DApp checkout, and the observability to run real money through it.

## What call did we make?

### Drop-based marketing meant the checkout had to absorb spikes, not flatten under them.

> LivLive's go-to-market was drop-based. When a drop went live, the checkout saw hours-long traffic peaks against a flat baseline, and a normal checkout dies in that pattern. We benchmarked the custom flow at 1,000+ concurrent users with zero degradation, then ran the same load against the on-chain referral payouts so commission distribution didn't stutter at the spike. Extreme time pressure throughout.

## What We Did

Constraint: production-grade Web3 commerce, hard timeline, real money about to flow through it. The non-obvious call: dual fiat/crypto rails through one signed-webhook handler, with Cloud KMS holding the only key that signs mints and referral payouts. Concretely: multi-level on-chain referral contracts, Wert.io fiat rail, NOWPayments crypto rail, full checkout DApp, NestJS backend. Trade-off: more infra surface than a single rail. What it bought: a checkout that mints the NFT and distributes the multi-level commission in the same transaction, and which went on to raise $2M+ through the product.

## Outcomes

### +1,000 - Concurrent Users
- **Category:** Scale

### $2M+ - Raised through the Product (Client-Reported)
- **Category:** Business

Want outcomes like these on your build?

Fixed scope. Fixed deadline. Signed SoW.

[Get in touch](/contact/)

## On Reel

![Reality, Remastered, official LivLive reveal.](/img/yt/SeqPk3WdorA.jpg?v=2338bf310c11) Reality, Remastered, official LivLive reveal.

## Selected Screens

![LivLive, screen 1](/img/case-studies/livlive/001_hu_37a115b867f505a6.webp)

![LivLive, screen 2](/img/case-studies/livlive/002_hu_ee683ce91190b7c4.webp)

![LivLive, screen 3](/img/case-studies/livlive/003_hu_d73f89bc9e1e5b84.webp)

## Architecture & Flows

### Production architecture

Next.js DApp + NestJS backend on the left, dual-rail payments (Wert.io fiat + NOWPayments crypto) in the middle, and the on-chain commission/NFT contracts on the right. Cloud KMS holds the only key that can sign mints and referral payouts, proprietary logic highlighted in yellow.

The diagram illustrates a simplified high-level architecture and omits confidential implementation and security details.

### Checkout, fiat & crypto rails

```
sequenceDiagram
  autonumber
  participant U as User
  participant FE as Next.js DApp
  participant API as NestJS API
  participant W as Wert.io
  participant NP as NOWPayments
  participant KMS as Cloud KMS
  participant SC as LivLive Contracts
  U->>FE: select item · checkout
  FE->>API: POST /orders (pending)
  API-->>FE: orderId
  alt Fiat rail (card)
    FE->>W: open widget · pay
    W-->>API: signed IPN webhook
  else Crypto rail (USDT/USDC/…)
    FE->>NP: open widget · pay
    NP-->>API: signed IPN webhook
  end
  API->>API: verify signature
  API->>KMS: sign mint + payout tx
  KMS-->>API: signed tx
  API->>SC: LivLiveNFT.mint(to=user)
  API->>SC: LivLiveRevenue.distributeCommissions(refs)
  SC-->>API: emit events · tx hash
  FE->>API: poll order status
  API-->>FE: completed · tokenId
```

One checkout, two rails. Both webhooks land in the same NestJS handler, get signature-verified, then a Cloud KMS-signed batch tx mints the NFT and distributes the multi-level commission in the same block.

## What We Learned

Under extreme time pressure, scope ruthlessness is the only path. We focused on what had to work perfectly, the on-chain referral logic and payment flows, and deferred the rest. The security audit confirmed cutting quality was never the trade we made.

## Tech Stack

- [Solidity](https://soliditylang.org/)
- [Typescript](https://www.typescriptlang.org/)
- [React](https://react.dev/)
- [NestJS](https://nestjs.com/)

## Tags

- NFT
- DeFi
- Payments

## Links & Resources

[LivLive](https://livlive.com/) [Resonance Security Audit](https://github.com/ResonanceCybersecurity/audits/blob/main/Solidity%20Smart%20Contract%20Audits/Audit_Report_LIV-NFT_FINAL_22.pdf)

Related services

- [Blockchain Development](/services/blockchain/)
- [Custom Software Development](/services/software-development/)

Client references and trademarks

Wavect publishes these case studies about its own work. Client names, logos and trademarks are the property of their respective owners and are used here to identify the work, not to imply any partnership, sponsorship or endorsement. Each case study describes Wavect's own contribution inside a larger effort, and other parties, including the client's own teams and other vendors, contributed to the results. Figures attributed to a client are that client's own reported numbers. Figures about our work come from our records as of the review date, and we provide evidence on request. Reviews are reproduced from the platform named on each card and link to their source. We do not publish the commercial terms of any engagement, and product screenshots remain the property of the client shown. If you are named here and want a correction, a change or a removal, write to us and we will act on it: [office@wavect.io](mailto:office@wavect.io)

### [ZybraMoney](/case-studies/zybra-money/)

ZybraMoney is an Africa-focused FinTech backend handling group savings (ROSCA flows), wallet-linked journeys, payments, transfers, referrals, and the security …

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/case-studies/livlive/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-05-21",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-05-21",
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          ".faq-question",
          ".faq-answer"
        ]
      },
      "url": "https://wavect.io/case-studies/livlive/"
    },
    {
      "@id": "https://wavect.io/verified-claims.json#livlive-raised-through-product",
      "@type": "Claim",
      "appearance": {
        "@id": "https://wavect.io/case-studies/livlive/#webpage",
        "@type": "WebPage",
        "inLanguage": "en",
        "url": "https://wavect.io/case-studies/livlive/"
      },
      "author": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "dateModified": "2026-08-04",
      "identifier": "livlive-raised-through-product",
      "inLanguage": "en",
      "text": "$2M+ was raised through LivLive, the AR-RWA product Wavect built."
    },
    {
      "@id": "https://wavect.io/verified-claims.json#livlive-third-party-audit",
      "@type": "Claim",
      "appearance": {
        "@id": "https://wavect.io/case-studies/livlive/#webpage",
        "@type": "WebPage",
        "inLanguage": "en",
        "url": "https://wavect.io/case-studies/livlive/"
      },
      "author": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "citation": {
        "@type": "WebPage",
        "url": "https://github.com/ResonanceCybersecurity/audits/blob/main/Solidity%20Smart%20Contract%20Audits/Audit_Report_LIV-NFT_FINAL_22.pdf"
      },
      "dateModified": "2026-08-04",
      "identifier": "livlive-third-party-audit",
      "inLanguage": "en",
      "text": "The LivLive contracts carry a published third-party security audit by Resonance Security."
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@id": "https://wavect.io/case-studies/livlive/#case-study",
  "@type": "Article",
  "about": {
    "@id": "https://wavect.io/case-studies/livlive/#project",
    "@type": "CreativeWork",
    "creator": {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ]
    },
    "dateCreated": "2025-01-01",
    "description": "Fullstack Build engagement",
    "funder": {
      "@type": "Organization",
      "name": "LivLive"
    },
    "name": "LivLive",
    "subjectOf": {
      "@id": "https://wavect.io/case-studies/livlive/#case-study",
      "@type": "Article"
    },
    "url": "https://livlive.com/"
  },
  "abstract": "Zero codebase, zero infrastructure, six weeks. Scope: a multi-level on-chain referral system, fiat-to-chain NFT drops via Wert.io, crypto payments via NOWPayments, a full DApp checkout, and the observability to run real money through it.",
  "author": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "datePublished": "2025-01-01",
  "description": "LivLive brings the Pokémon GO experience to everyday life with RWAs, the only RWA platform with a global, immersive AR reward engine. $2M+ raised through the product.",
  "headline": "LivLive, Wavect Case Study",
  "image": "https://wavect.io/img/clients/svg/livlive.svg",
  "inLanguage": "en",
  "isPartOf": {
    "@type": "CollectionPage",
    "name": "Wavect Case Studies",
    "url": "https://wavect.io/case-studies/"
  },
  "keywords": "NFT, DeFi, Payments, Solidity, Typescript, React, NestJS",
  "mainEntityOfPage": "https://wavect.io/case-studies/livlive/",
  "mentions": [
    {
      "@type": "DefinedTerm",
      "name": "Solidity",
      "url": "https://soliditylang.org/"
    },
    {
      "@type": "DefinedTerm",
      "name": "Typescript",
      "url": "https://www.typescriptlang.org/"
    },
    {
      "@type": "DefinedTerm",
      "name": "React",
      "url": "https://react.dev/"
    },
    {
      "@type": "DefinedTerm",
      "name": "NestJS",
      "url": "https://nestjs.com/"
    }
  ],
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/case-studies/livlive/",
  "video": [
    {
      "@id": "https://wavect.io/case-studies/livlive/#video-SeqPk3WdorA",
      "@type": "VideoObject",
      "description": "Reality, Remastered, official LivLive reveal.",
      "duration": "PT1M59S",
      "embedUrl": "https://www.youtube-nocookie.com/embed/SeqPk3WdorA",
      "inLanguage": "en",
      "name": "Reality, Remastered: LivLive Official Reveal",
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "thumbnailUrl": "https://i.ytimg.com/vi/SeqPk3WdorA/maxresdefault.jpg",
      "uploadDate": "2025-07-28T00:00:00+00:00",
      "url": "https://www.youtube.com/watch?v=SeqPk3WdorA"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/",
      "name": "Home",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/case-studies/",
      "name": "Case Studies",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/case-studies/livlive/",
      "name": "LivLive",
      "position": 3
    }
  ]
}
```
