---
title: "SKD Cabinet Coin Case Study"
canonical: https://wavect.io/case-studies/skd-cabinet-coin/
language: en
description: "Wavect built SKD Cabinet Coin: a live museum collectible on Base, with GDPR-driven data minimisation, walletless receipt and monthly editions."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

![SKD Cabinet Coin logo](/img/clients/bak/SKD.png)

CASE STUDIES · 2026

SKD Cabinet Coin

# A museum visit becomes a digital keepsake. Live on Base.

Cabinet Coin is a digital keepsake for visitors to the Münzkabinett of the Staatliche Kunstsammlungen Dresden. Built in collaboration with SKD Digital and JONZN SPACE kollektiv, the application is live and used by museum visitors.

BLOCKCHAIN Fullstack Build & Smart Contracts 2026 Live

At a glance

Engagement Fullstack Build & Smart Contracts

Industry [Museums / Visitor Experience](/industries/culture-institutions/)

Stage Public institution

Year 2026

Status Live

Stack

Next.js Solidity ERC-1155 Base Foundry

Live [cabinetcoin.skd.museum](https://cabinetcoin.skd.museum/)

## Overview

Visitors scan a rotating QR code inside the museum, view the current monthly edition and keep a coin free of charge. A new edition appears each month, with an orange or blue variant assigned at claim time. Anyone can view the current coin online; receiving one requires the on-site code. This 2026 product delivery is a separate engagement from our [2023–2024 Web3 workshops and strategy work for SKD](/case-studies/skd-dresden/).

## What's the challenge?

GDPR and compliance were core delivery challenges: a public museum needed a simple digital souvenir while blockchain records remain permanently public and technically cannot be erased. The project had to make data flows, third-party processing and the consequences of claiming understandable, and minimise visitor data throughout the application. The flow also had to work on a phone without wallet experience, account creation, buying cryptocurrency or paying network fees, while enforcing on-site access, duplicate-claim protection and monthly supply limits.

## What call did we make?

### Make participation possible without creating a user wallet.

> Visitors can use an existing wallet or choose a walletless keepsake. The walletless path records the coin at a deterministic CREATE2 address that nobody can control. It creates no recoverable wallet, private user key or login. Both paths lead to a non-transferable coin; the product makes the limits of the keepsake clear.

## What We Did

Wavect built the Next.js application and Solidity contracts, integrating the supplied design and artwork into a German and English visitor flow. Signed on-site QR codes expire after five minutes. Claim authorizations bind the recipient, edition, expiry and nonce; the contract enforces one-time use, a shared supply limit across both colors, duplicate-claim protection per recipient and edition, and a campaign pause. SKD sponsors the transaction fee. Monthly SVG artwork and metadata are generated deterministically, so the next month needs no preparatory contract transaction. The application supports saving the artwork and configurable Wallet passes linked to the public transaction receipt, without a visitor database, SKD accounts or analytics.

GDPR and compliance requirements also shaped the implementation: no visitor database, SKD accounts, analytics or tracking cookies; application-initiated RPC requests pass through a restricted same-origin server endpoint instead of exposing visitor headers and cookies to the upstream provider. Application logs use an allowlist and redact wallet addresses and sensitive request data. German and English visitor disclosures explain third-party processing and the permanent public blockchain record; the project documents record review and approval of the privacy notice by SKD’s data-protection officer.

## Outcomes

### Live - Museum visitors are collecting coins

### Base - Public contract and mint records

### Monthly - Orange and blue editions share one supply limit

### Free - SKD covers the transaction fee

Want outcomes like these on your build?

Fixed scope. Fixed deadline. Signed SoW.

[Get in touch](/contact/)

## Selected Screens

[![Cabinet Coin October 2026 edition shown in the live application](/img/case-studies/skd-cabinet-coin/01-edition-detail_hu_77af1bc92c742502.webp)](/img/case-studies/skd-cabinet-coin/01-edition-detail.webp)

The October 2026 edition, captured from the live Cabinet Coin application.

[![Cabinet Coin visitor introduction on desktop in English](/img/case-studies/skd-cabinet-coin/en-02-visitor-flow_hu_f65a4946833d5737.webp)](/img/case-studies/skd-cabinet-coin/en-02-visitor-flow.webp)

Desktop visitor flow: introduction, monthly coin and the link to view the edition.

[![Cabinet Coin visitor notice explaining privacy and the permanent public record](/img/case-studies/skd-cabinet-coin/en-03-privacy-notice_hu_e08fd64a5c7e003b.webp)](/img/case-studies/skd-cabinet-coin/en-03-privacy-notice.webp)

Before collecting: clear notice about privacy, non-transferability and the permanent public record.

[![Cabinet Coin visitor flow in the mobile layout in English](/img/case-studies/skd-cabinet-coin/en-04-mobile-visitor-flow_hu_625a1fbd63718891.webp)](/img/case-studies/skd-cabinet-coin/en-04-mobile-visitor-flow.webp)

Mobile visitor flow, captured from the live application.

[![Cabinet Coin museum display with the monthly edition and an expired on-site QR code](/img/case-studies/skd-cabinet-coin/05-museum-display_hu_ce00be727a4ed140.webp)](/img/case-studies/skd-cabinet-coin/05-museum-display_hu_18e6de3dadd86876.webp)

Museum display: the monthly edition and rotating on-site QR code. The code shown has expired.

[![Cabinet Coin visitor choice between collecting without a wallet and connecting an existing wallet](/img/case-studies/skd-cabinet-coin/en-06-visitor-choices_hu_c91715c3bfbcbe14.webp)](/img/case-studies/skd-cabinet-coin/en-06-visitor-choices.webp)

After the notice: collect without a wallet or connect an existing one. No crypto knowledge required.

## What We Learned

Privacy requirements and public verifiability must be designed together. Data minimisation in the application does not make a public blockchain record erasable or remove third-party processing. Visitors can view and save the artwork without creating an onchain record; claiming is a separate step with explicit information about those consequences. A saved image or Wallet pass represents the keepsake and does not provide control over its receiving address.

## Tech Stack

- [Next.js](https://nextjs.org/)
- [Solidity](https://soliditylang.org/)
- [ERC-1155](https://eips.ethereum.org/EIPS/eip-1155)
- [Base](https://base.org/)
- [Foundry](https://getfoundry.sh/)

## Tags

- Museum experience
- Walletless claiming
- Smart contracts

## Links & Resources

[Visit the live Cabinet Coin application](https://cabinetcoin.skd.museum/) [Inspect the Cabinet Coin contract on Base](https://basescan.org/address/0x7d79569fe62f74d35edbe19eafaae8c0941feb51#code) [View public coin mint records](https://basescan.org/address/0x7d79569fe62f74d35edbe19eafaae8c0941feb51#nfttransfers)

## Questions about this project

### What is SKD Cabinet Coin?

Cabinet Coin is a digital keepsake for visitors to the Münzkabinett of the Staatliche Kunstsammlungen Dresden. Built in collaboration with SKD Digital and JONZN SPACE kollektiv, the application is live and used by museum visitors.

### What was the challenge in the SKD Cabinet Coin project?

GDPR and compliance were core delivery challenges: a public museum needed a simple digital souvenir while blockchain records remain permanently public and technically cannot be erased. The project had to make data flows, third-party processing and the consequences of claiming understandable, and minimise visitor data throughout the application. The flow also had to work on a phone without wallet experience, account creation, buying cryptocurrency or paying network fees, while enforcing on-site access, duplicate-claim protection and monthly supply limits.

### What did Wavect do for SKD Cabinet Coin?

Wavect built the Next.js application and Solidity contracts, integrating the supplied design and artwork into a German and English visitor flow. Signed on-site QR codes expire after five minutes. Claim authorizations bind the recipient, edition, expiry and nonce; the contract enforces one-time use, a shared supply limit across both colors, duplicate-claim protection per recipient and edition, and a campaign pause. SKD sponsors the transaction fee. Monthly SVG artwork and metadata are generated deterministically, so the next month needs no preparatory contract transaction. The application supports saving the artwork and configurable Wallet passes linked to the public transaction receipt, without a visitor database, SKD accounts or analytics.

GDPR and compliance requirements also shaped the implementation: no visitor database, SKD accounts, analytics or tracking cookies; application-initiated RPC requests pass through a restricted same-origin server endpoint instead of exposing visitor headers and cookies to the upstream provider. Application logs use an allowlist and redact wallet addresses and sensitive request data. German and English visitor disclosures explain third-party processing and the permanent public blockchain record; the project documents record review and approval of the privacy notice by SKD’s data-protection officer.

### What were the outcomes of the SKD Cabinet Coin project?

- Live, Museum visitors are collecting coins
- Base, Public contract and mint records
- Monthly, Orange and blue editions share one supply limit
- Free, SKD covers the transaction fee

### How did Wavect work with SKD Cabinet Coin?

Engagement: Fullstack Build & Smart Contracts. Year: 2026.

### Which tech stack did Wavect use for SKD Cabinet Coin?

Next.js, Solidity, ERC-1155, Base, Foundry.

### What did Wavect learn from the SKD Cabinet Coin project?

Privacy requirements and public verifiability must be designed together. Data minimisation in the application does not make a public blockchain record erasable or remove third-party processing. Visitors can view and save the artwork without creating an onchain record; claiming is a separate step with explicit information about those consequences. A saved image or Wallet pass represents the keepsake and does not provide control over its receiving address.

Related services

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

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)

### [Quivr](/case-studies/quivr/)

Quivr was an AI-driven data verification protocol that helped brands identify their most authentic fans. Launched on Polygon, migrated to Solana for compressed …

## 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/skd-cabinet-coin/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-10-27",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-10-27",
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          "h1",
          ".cs-faq__q",
          ".cs-faq__a"
        ]
      },
      "url": "https://wavect.io/case-studies/skd-cabinet-coin/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@id": "https://wavect.io/case-studies/skd-cabinet-coin/#case-study",
  "@type": "Article",
  "about": {
    "@id": "https://wavect.io/case-studies/skd-cabinet-coin/#project",
    "@type": "CreativeWork",
    "creator": {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ]
    },
    "dateCreated": "2026-01-01",
    "description": "Fullstack Build & Smart Contracts engagement",
    "funder": {
      "@type": "Organization",
      "name": "SKD Cabinet Coin"
    },
    "name": "SKD Cabinet Coin",
    "subjectOf": {
      "@id": "https://wavect.io/case-studies/skd-cabinet-coin/#case-study",
      "@type": "Article"
    },
    "url": "https://cabinetcoin.skd.museum/"
  },
  "abstract": "GDPR and compliance were core delivery challenges: a public museum needed a simple digital souvenir while blockchain records remain permanently public and technically cannot be erased. The project had to make data flows, third-party processing and the consequences of claiming understandable, and minimise visitor data throughout the application. The flow also had to work on a phone without wallet experience, account creation, buying cryptocurrency or paying network fees, while enforcing on-site access, duplicate-claim protection and monthly supply limits.",
  "author": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "dateModified": "2026-10-27",
  "datePublished": "2026-01-01",
  "description": "Cabinet Coin is a digital keepsake for visitors to the Münzkabinett of the Staatliche Kunstsammlungen Dresden. Built in collaboration with SKD Digital and JONZN SPACE kollektiv, the application is live and used by museum visitors.",
  "headline": "SKD Cabinet Coin, Wavect Case Study",
  "image": "https://wavect.io/img/clients/bak/SKD.png",
  "inLanguage": "en",
  "isPartOf": {
    "@type": "CollectionPage",
    "name": "Wavect Case Studies",
    "url": "https://wavect.io/case-studies/"
  },
  "keywords": "Museum experience, Walletless claiming, Smart contracts, Next.js, Solidity, ERC-1155, Base, Foundry",
  "mainEntityOfPage": "https://wavect.io/case-studies/skd-cabinet-coin/",
  "mentions": [
    {
      "@type": "DefinedTerm",
      "name": "Next.js",
      "url": "https://nextjs.org/"
    },
    {
      "@type": "DefinedTerm",
      "name": "Solidity",
      "url": "https://soliditylang.org/"
    },
    {
      "@type": "DefinedTerm",
      "name": "ERC-1155",
      "url": "https://eips.ethereum.org/EIPS/eip-1155"
    },
    {
      "@type": "DefinedTerm",
      "name": "Base",
      "url": "https://base.org/"
    },
    {
      "@type": "DefinedTerm",
      "name": "Foundry",
      "url": "https://getfoundry.sh/"
    }
  ],
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/case-studies/skd-cabinet-coin/"
}
```

```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/skd-cabinet-coin/",
      "name": "SKD Cabinet Coin",
      "position": 3
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Cabinet Coin is a digital keepsake for visitors to the Münzkabinett of the Staatliche Kunstsammlungen Dresden. Built in collaboration with SKD Digital and JONZN SPACE kollektiv, the application is live and used by museum visitors."
      },
      "name": "What is SKD Cabinet Coin?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "GDPR and compliance were core delivery challenges: a public museum needed a simple digital souvenir while blockchain records remain permanently public and technically cannot be erased. The project had to make data flows, third-party processing and the consequences of claiming understandable, and minimise visitor data throughout the application. The flow also had to work on a phone without wallet experience, account creation, buying cryptocurrency or paying network fees, while enforcing on-site access, duplicate-claim protection and monthly supply limits."
      },
      "name": "What was the challenge in the SKD Cabinet Coin project?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Wavect built the Next.js application and Solidity contracts, integrating the supplied design and artwork into a German and English visitor flow. Signed on-site QR codes expire after five minutes. Claim authorizations bind the recipient, edition, expiry and nonce; the contract enforces one-time use, a shared supply limit across both colors, duplicate-claim protection per recipient and edition, and a campaign pause. SKD sponsors the transaction fee. Monthly SVG artwork and metadata are generated deterministically, so the next month needs no preparatory contract transaction. The application supports saving the artwork and configurable Wallet passes linked to the public transaction receipt, without a visitor database, SKD accounts or analytics. GDPR and compliance requirements also shaped the implementation: no visitor database, SKD accounts, analytics or tracking cookies; application-initiated RPC requests pass through a restricted same-origin server endpoint instead of exposing visitor headers and cookies to the upstream provider. Application logs use an allowlist and redact wallet addresses and sensitive request data. German and English visitor disclosures explain third-party processing and the permanent public blockchain record; the project documents record review and approval of the privacy notice by SKD’s data-protection officer."
      },
      "name": "What did Wavect do for SKD Cabinet Coin?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Live, Museum visitors are collecting coins; Base, Public contract and mint records; Monthly, Orange and blue editions share one supply limit; Free, SKD covers the transaction fee"
      },
      "name": "What were the outcomes of the SKD Cabinet Coin project?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Engagement: Fullstack Build & Smart Contracts. Year: 2026."
      },
      "name": "How did Wavect work with SKD Cabinet Coin?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Next.js, Solidity, ERC-1155, Base, Foundry."
      },
      "name": "Which tech stack did Wavect use for SKD Cabinet Coin?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Privacy requirements and public verifiability must be designed together. Data minimisation in the application does not make a public blockchain record erasable or remove third-party processing. Visitors can view and save the artwork without creating an onchain record; claiming is a separate step with explicit information about those consequences. A saved image or Wallet pass represents the keepsake and does not provide control over its receiving address."
      },
      "name": "What did Wavect learn from the SKD Cabinet Coin project?"
    }
  ]
}
```
