DEV Community

Cover image for The story behind PP15.ONE — a marketplace where you can collect, build, and trade digital land
Philipp
Philipp

Posted on

The story behind PP15.ONE — a marketplace where you can collect, build, and trade digital land

The Story

Nine months ago I started building PP15.ONE — a marketplace where you
can buy, sell, and trade digital land. Today it's live: three different
market layers, a bonding curve engine running in production, and
Islands going live every week.

This is the story of how it came together — and what broke along the way.

🔗 Live: https://pp15.one

What PP15.ONE Is

PP15.ONE is a marketplace where you can buy, sell, and trade digital
land. You can not only buy, sell, and trade digital land — you can
also build your own digital land (called "Islands") and sell this land
to other users.

Every Island has a price that moves on a bonding curve. Buys happen on
the Main Market against the platform. Sales happen on the 2nd Market
between users. There's no sell-back to the platform — once you own an
m², you keep it or sell it on the 2nd Market.

What PPC Are

PPC are in-app credits used across PP15.ONE. They are not crypto, not
a token, not real money. Just in-app credits with no monetary value
outside the platform.

You buy m² with PPC. You receive PPC when other users buy from your
Island.

How the price works

Main Market

A central bonding curve owned by the platform. Every buy moves the
price up by a defined step.

The price comes down via the 2nd Market. When a seller lists below the
current Main Market price, the system compares the two and subtracts
1% of the difference from the Main Market price.

Example: Main Market is at 4.80 PPC. A seller lists on the 2nd Market
for 4.00 PPC. The difference is 0.80 PPC, and 1% of that (0.008 PPC)
is subtracted from the Main Market — so it drops from 4.80 to 4.792 PPC.

The effect is small and gradual. The Main Market stays stable while
still reflecting actual user-to-user activity.

Islands (your own land)

Anyone can create their own Island for a one-time fee of 5 PPC. You
set your own bonding curve and a step-up rate (up to 5%) — that's the
percentage the m² price increases per buy, compounded on the current
price.

Example: Island price is 10 PPC, owner sets 3%.

  • Buy 1 → 10 + 3% = 10.30 PPC
  • Buy 2 → 10.30 + 3% = 10.609 PPC
  • Buy 3 → 10.609 + 3% = 10.927 PPC

The price grows faster as more m² are bought — driven by demand and
the owner's chosen rate.

When someone sells Island m² on the 2nd Market below the current Island
price, the price drops by a percentage of the difference — scaled by
Island size:

  • 0–50 m² → 2%
  • 51–100 m² → 2.5%
  • 101–200 m² → 2.75%
  • 201–500 m² → 2.85%
  • 501–1000 m² → 2.9%
  • 1001+ m² → 3%

The larger the Island, the stronger the price impact of each sale.

User Islands max out at 4,000 m². PP15.ONE-owned Islands max out at
10,000 m².

The Island creator receives 90% of all m² purchases on their Island.
PP15.ONE keeps 10%. The split happens automatically.

2nd Market — user to user

You can list your owned m² for sale at any price you want. Other users
buy directly from you.

The platform fee is added on top of the listing price — paid by the
buyer, not the seller. Standard m² has a 10% fee, Island m² has a 5%
fee.

Example: A seller lists m² for 100 PPC. The buyer pays 110 PPC total.
The seller receives 100 PPC, PP15.ONE receives 10 PPC.

Why a Bonding Curve

Most marketplaces use static pricing or auction mechanics. A bonding
curve creates a smooth, deterministic price function — the price
adjusts in real time based on demand, no orderbooks needed.

What Broke Along the Way

1. Bonding curves are easy on paper, hard in production

The math is simple. The hard part is making sure every state transition
is atomic, rollback-safe, and idempotent. One race condition in the buy
logic can desync the entire curve.

2. Caching marketplace state is dangerous

Stale data in a marketplace = users buying at outdated prices = chaos.
I had to build a cache layer that invalidates aggressively while keeping
read performance high.

3. UX beats engine sophistication

The bonding curve engine is the easy part. Making it understandable to
a first-time user who has never heard of bonding curves — that takes
the most work.

4. The frontend can DDoS your own backend

I spent days debugging memory crashes that turned out to be a recursive
setTimeout loop in my landing page polling code. Backend got hit with
40+ requests per second from accumulated polling chains. One line of
code deletion fixed it. Memory dropped from 2GB to 300MB.

Solo from Switzerland

Built solo over the past nine months.

🔗 Live: https://pp15.one

What would you change? Any feedback welcome.

Top comments (3)

Collapse
 
bingkahu profile image
bingkahu (Matteo) • Edited

Nice job! I especially like how you can draw over other people’s language and steal it? One question though- how did you handle the payments? Did you use a backend like Stripe or did you create your own payment system and if so what were some problems you faced?

Collapse
 
philipppp15one profile image
Philipp

Thanks! Quick clarification — maybe a typo? On PP15.ONE you can only buy, sell, and trade digital land. You can also create your own land and sell it to other users. There's no content stealing.

On payments: none right now. The platform runs on free in-app credits. Real money might come later if the motivation is there — Stripe would be the obvious choice then.