Skip to content

Store Page

A StorePage is a sellable listing that bundles one or more Games together at a Bitcoin price. It is the primary sales unit on Ludilol — buyers purchase from store pages, not directly from games.

Properties

PropertyTypeDescription
IdintPrimary key
SellerIdintFK → the AppUser who owns this page
TitlestringDisplay name
SlugstringURL path segment (/pages/{slug})
Descriptionstring?Short description
GameSetKeystringDeduplication key for the bundle of games
PriceSatslongNet price in satoshis
SelectedPaymentDestinationIdintFK → on-chain PaymentDestination
StateStorePageStateCurrent state (see below)
DeliveryModeDeliveryModeHow games are delivered
PreviewTokenstring?Secret token for previewing before opening
OpensAtUtcDateTime?Scheduled open date
ClosesAtUtcDateTime?Scheduled close date
LogoBlobNamestring?256×256 PNG logo blob key
VatEnabledboolWhether VAT is added to the price
VatPercentagedecimal?VAT rate if enabled
InvoiceEnabledboolWhether invoices are sent to buyers
AllowAnonymousSalesboolWhether anonymous purchases are allowed
LightningEnabledboolWhether Lightning payments are accepted
LightningPaymentDestinationIdint?FK → Lightning PaymentDestination

States

ValueNameDescription
1ClosedNot publicly visible or purchasable
2PreviewVisible only via the preview token
3OpenPublicly visible and purchasable

Delivery Modes

ValueNameDescription
1DownloadBuyers download the game zip
2HtmlPlayableBuyers play the game in-browser

Pricing

  • PriceSats is the net price (before VAT).
  • CalculateVatAmountSats() computes VAT based on VatPercentage.
  • CalculateGrossAmountSats() returns net + VAT.

Relationships

StorePage (1) ──── (1) AppUser             (seller)
StorePage (1) ──── (1) PaymentDestination  (on-chain)
StorePage (1) ──── (0..1) PaymentDestination (lightning)
StorePage (N) ──── StorePageGame ──── (N) Game
StorePage (1) ──── (N) Order

Sell indie games for Bitcoin.