<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Philipp</title>
    <description>The latest articles on DEV Community by Philipp (@philipppp15one).</description>
    <link>https://dev.to/philipppp15one</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3904815%2Ff7646ea5-86bb-424e-ab31-f5eb71f6499e.jpeg</url>
      <title>DEV Community: Philipp</title>
      <link>https://dev.to/philipppp15one</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/philipppp15one"/>
    <language>en</language>
    <item>
      <title>The story behind PP15.ONE — a marketplace where you can collect, build, and trade digital land</title>
      <dc:creator>Philipp</dc:creator>
      <pubDate>Thu, 30 Apr 2026 13:19:23 +0000</pubDate>
      <link>https://dev.to/philipppp15one/the-story-behind-pp15one-a-marketplace-where-you-can-collect-build-and-trade-digital-land-15ld</link>
      <guid>https://dev.to/philipppp15one/the-story-behind-pp15one-a-marketplace-where-you-can-collect-build-and-trade-digital-land-15ld</guid>
      <description>&lt;h2&gt;
  
  
  The Story
&lt;/h2&gt;

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

&lt;p&gt;This is the story of how it came together — and what broke along the way.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://pp15.one" rel="noopener noreferrer"&gt;https://pp15.one&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What PP15.ONE Is
&lt;/h2&gt;

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

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

&lt;h2&gt;
  
  
  What PPC Are
&lt;/h2&gt;

&lt;p&gt;PPC are in-app credits used across PP15.ONE. They are not crypto, not &lt;br&gt;
a token, not real money. Just in-app credits with no monetary value &lt;br&gt;
outside the platform.&lt;/p&gt;

&lt;p&gt;You buy m² with PPC. You receive PPC when other users buy from your &lt;br&gt;
Island.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the price works
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Main Market&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A central bonding curve owned by the platform. Every buy moves the &lt;br&gt;
price up by a defined step.&lt;/p&gt;

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

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

&lt;p&gt;The effect is small and gradual. The Main Market stays stable while &lt;br&gt;
still reflecting actual user-to-user activity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Islands (your own land)&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;Example: Island price is 10 PPC, owner sets 3%.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Buy 1 → 10 + 3% = 10.30 PPC&lt;/li&gt;
&lt;li&gt;Buy 2 → 10.30 + 3% = 10.609 PPC&lt;/li&gt;
&lt;li&gt;Buy 3 → 10.609 + 3% = 10.927 PPC&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The price grows faster as more m² are bought — driven by demand and &lt;br&gt;
the owner's chosen rate.&lt;/p&gt;

&lt;p&gt;When someone sells Island m² on the 2nd Market below the current Island &lt;br&gt;
price, the price drops by a percentage of the difference — scaled by &lt;br&gt;
Island size:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0–50 m² → 2%&lt;/li&gt;
&lt;li&gt;51–100 m² → 2.5%&lt;/li&gt;
&lt;li&gt;101–200 m² → 2.75%&lt;/li&gt;
&lt;li&gt;201–500 m² → 2.85%&lt;/li&gt;
&lt;li&gt;501–1000 m² → 2.9%&lt;/li&gt;
&lt;li&gt;1001+ m² → 3%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The larger the Island, the stronger the price impact of each sale.&lt;/p&gt;

&lt;p&gt;User Islands max out at 4,000 m². PP15.ONE-owned Islands max out at &lt;br&gt;
10,000 m².&lt;/p&gt;

&lt;p&gt;The Island creator receives 90% of all m² purchases on their Island. &lt;br&gt;
PP15.ONE keeps 10%. The split happens automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2nd Market — user to user&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can list your owned m² for sale at any price you want. Other users &lt;br&gt;
buy directly from you.&lt;/p&gt;

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

&lt;p&gt;Example: A seller lists m² for 100 PPC. The buyer pays 110 PPC total. &lt;br&gt;
The seller receives 100 PPC, PP15.ONE receives 10 PPC.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a Bonding Curve
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  What Broke Along the Way
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Bonding curves are easy on paper, hard in production&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;2. Caching marketplace state is dangerous&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stale data in a marketplace = users buying at outdated prices = chaos. &lt;br&gt;
I had to build a cache layer that invalidates aggressively while keeping &lt;br&gt;
read performance high.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. UX beats engine sophistication&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;4. The frontend can DDoS your own backend&lt;/strong&gt;&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Solo from Switzerland
&lt;/h2&gt;

&lt;p&gt;Built solo over the past nine months.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://pp15.one" rel="noopener noreferrer"&gt;https://pp15.one&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What would you change? Any feedback welcome.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>typescript</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
