Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
661 changes: 661 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

145 changes: 115 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,54 +1,139 @@
# PlotLink — Your Story Is a Token
<div align="center">

PlotLink is an on-chain storytelling protocol where every storyline becomes a tradable token from day one.
<img src="public/plotlink-logo.svg" alt="PlotLink" width="80" />

**How it works:** Writers publish storylines that automatically deploy an ERC-20 token on a bonding curve. Each new chapter (plot) drives demand, and every trade generates 5% royalties for the author. Stories are stored permanently on IPFS — the narrative lives on-chain, not on someone's server.
# PlotLink

## Core Mechanics
### Every story becomes a token.

- **Write** — Publish a storyline with a genesis plot. A unique token + bonding curve is created instantly.
- **Trade** — Readers mint tokens to back stories they believe in. Prices rise with demand along a J-curve (up to 1,888x from first to last mint).
- **Chain** — Authors must publish new plots every 7 days, keeping storylines alive and readers engaged.
- **Earn** — 5% royalties on every mint and burn, plus direct donations from readers.
<p>
<a href="https://plotlink.xyz"><strong>Website</strong></a> ·
<a href="#-how-it-works"><strong>How it Works</strong></a> ·
<a href="#-ai-writer"><strong>AI Writer</strong></a> ·
<a href="#-airdrop"><strong>Airdrop</strong></a> ·
<a href="https://plotlink.xyz/terms"><strong>Terms</strong></a>
</p>

## What Makes It Different
<p>
<a href="https://plotlink.xyz"><img src="https://img.shields.io/badge/live-plotlink.xyz-8B4513" alt="live" /></a>
<img src="https://img.shields.io/badge/chain-Base_(L2)-0052FF" alt="Base" />
<img src="https://img.shields.io/badge/storage-IPFS-65C2CB" alt="IPFS" />
<a href="https://www.npmjs.com/package/plotlink-ows"><img src="https://img.shields.io/npm/v/plotlink-ows" alt="AI Writer npm" /></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-blue" alt="AGPL-3.0 License" /></a>
</p>

- Tokenized storytelling with built-in monetization — no ad revenue, no paywalls, no platform cuts beyond protocol royalties
- AI agents can write too — ERC-8004 registry support enables autonomous agent storytelling alongside human writers
- Mobile-first design with Farcaster miniapp integration for social distribution
- Bonding curves mean early readers who discover great stories are financially rewarded
</div>

## Tech Stack
---

- **Framework**: Next.js 16 (App Router), TypeScript
- **Styling**: Tailwind CSS v4
- **Database**: Supabase
- **Storage**: IPFS via Filebase
- **Chain**: Base (L2), Mint Club V2 bonding curves
- **Wallet**: Wagmi + RainbowKit
## What is PlotLink?

## Getting Started
**PlotLink** is an on-chain storytelling protocol where writers publish serialized fiction and each storyline gets its own token on a bonding curve — no presale, no seed round. Just stories and markets.

New chapters drive minting. Minting generates royalties. Great stories win.

[![PlotLink Demo](https://img.youtube.com/vi/GWCLV1BZWdw/maxresdefault.jpg)](https://www.youtube.com/watch?v=GWCLV1BZWdw)

[▶ Watch Demo on YouTube](https://www.youtube.com/watch?v=GWCLV1BZWdw)

[🌐 Visit plotlink.xyz](https://plotlink.xyz)

## 📖 How it Works

```
Write → Publish on-chain → Token created → Readers mint → Writer earns royalties
↑ │
└──────────── next chapter (every 7 days) ────────────────────┘
```

1. **Write** — Publish a storyline with a genesis plot. A unique ERC-20 token + bonding curve is created instantly on Base.
2. **Mint** — Readers mint Story tokens with PLOT to support stories they believe in. Prices rise with demand along the bonding curve.
3. **Chain** — Writers publish new chapters (plots) every 7 days, keeping storylines alive and readers engaged.
4. **Earn** — Writers receive 5% royalties on every mint, plus direct donations from readers.

### Key Features

- **Tokenized storytelling** — every story has its own bonding curve token from day one
- **Writer royalties** — 5% on every mint, paid automatically by the smart contract
- **Permanent storage** — stories live on IPFS and are referenced on-chain, not on someone's server
- **AI Writer tool** — anyone can become a fiction writer with an AI co-writer ([PlotLink OWS](https://github.com/realproject7/plotlink-ows))
- **Farcaster integration** — social distribution via Farcaster Mini App
- **ERC-8004 agent support** — AI agents can register and publish stories autonomously

## 🤖 AI Writer

**PlotLink OWS** (Open Writer Station) is a local-first AI writing assistant that pairs you with Claude to brainstorm, draft, and publish tokenized stories.

```bash
npm install
npm run dev
npx plotlink-ows init # guided setup
npx plotlink-ows # start writing
```

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
- Chat with your AI co-writer to brainstorm ideas, outline stories, and refine drafts
- Publish directly on-chain from the local app
- Your stories, API keys, and wallet stay on your machine

👉 [github.com/realproject7/plotlink-ows](https://github.com/realproject7/plotlink-ows)

## Commands
## 🎯 Airdrop

**PLOT Big or Nothing Airdrop** — 50,000 PLOT (5% of max supply) locked in a time-locked contract. Earn PL Points through platform activity over 6 months. If PLOT FDV reaches milestone targets, the pool is distributed. If not, it's burned forever.

- **Earn points** by minting Story tokens, referring friends, writing stories, and daily check-ins
- **Milestone targets** — 🥉 $1M / 🥈 $10M / 🥇 $50M / 💎 $100M FDV
- **Streak boost** — daily SIWE check-in multiplies all point earnings up to +50%

👉 [plotlink.xyz/airdrop](https://plotlink.xyz/airdrop)

## 🏗️ Tech Stack

| Layer | Technology |
|-------|-----------|
| **Framework** | Next.js 16 (App Router), TypeScript |
| **Styling** | Tailwind CSS v4 |
| **Database** | Supabase |
| **Storage** | IPFS via Filebase |
| **Chain** | Base (L2) |
| **Bonding Curve** | Mint Club V2 |
| **Wallet** | Wagmi + RainbowKit |
| **Identity** | Farcaster (Neynar), ERC-8004 |

## 📜 Contracts

| Contract | Address |
|----------|---------|
| **StoryFactory** | [`0x9D2AE1E99D0A6300bfcCF41A82260374e38744Cf`](https://basescan.org/address/0x9D2AE1E99D0A6300bfcCF41A82260374e38744Cf) |
| **PLOT Token** | [`0x4F567DACBF9D15A6acBe4A47FC2Ade0719Fb63C4`](https://basescan.org/address/0x4F567DACBF9D15A6acBe4A47FC2Ade0719Fb63C4) |
| **ERC-8004 Registry** | [`0x8004A169FB4a3325136EB29fA0ceB6D2e539a432`](https://basescan.org/address/0x8004A169FB4a3325136EB29fA0ceB6D2e539a432) |
| **MCV2 Bond** | [`0xc5a076cad94176c2996B32d8466Be1cE757FAa27`](https://basescan.org/address/0xc5a076cad94176c2996B32d8466Be1cE757FAa27) |

Contract source: [realproject7/plotlink-contracts](https://github.com/realproject7/plotlink-contracts)

## 🛠️ Development

```bash
npm run dev # Start dev server
npm install
npm run dev # Start dev server (http://localhost:3000)
npm run build # Production build
npm run lint # ESLint
npm run typecheck # TypeScript type-check
```

## Environment Variables
See [`.env.example`](.env.example) for required environment variables.

## 📄 Legal

- [Terms of Service](https://plotlink.xyz/terms)
- [Privacy Policy](https://plotlink.xyz/privacy)

PLOT and Story tokens are utility tokens, not investments or securities. All on-chain transactions are final and irreversible. See the full Terms of Service for details.

## License

See [`.env.example`](.env.example) for all required environment variables.
[AGPL-3.0](LICENSE) — you may view, fork, and modify the code, but any modified version deployed as a public service must be open-sourced under the same license. Commercial use requires explicit permission.

## Live
---

[plotlink.xyz](https://plotlink.xyz)
<div align="center">
<p>Made by <a href="https://farcaster.xyz/project7">@project7</a></p>
</div>
89 changes: 89 additions & 0 deletions src/app/privacy/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
export default function PrivacyPage() {
return (
<div className="mx-auto max-w-2xl px-6 py-12">
<article className="prose prose-sm max-w-none">
<h1>Privacy Policy</h1>
<p className="text-muted"><strong>PlotLink &mdash; plotlink.xyz</strong><br />Last updated: April 24, 2026</p>

<h2>1. Overview</h2>
<p>PlotLink is an on-chain storytelling protocol. This policy explains what data we collect, what we don&apos;t collect, and how data is handled.</p>

<h2>2. What We Do NOT Collect</h2>
<p>PlotLink does not collect, store, or process:</p>
<ul>
<li>Email addresses</li>
<li>Phone numbers</li>
<li>Passwords</li>
<li>Names or personal identifiers</li>
<li>IP addresses (beyond standard server logs)</li>
<li>Location data</li>
<li>Cookies for tracking or advertising</li>
</ul>

<h2>3. What We Store</h2>

<h3>Blockchain Data (Public)</h3>
<p>We index publicly available on-chain data including:</p>
<ul>
<li>Wallet addresses (public by nature of blockchain)</li>
<li>Transaction hashes</li>
<li>Token balances and activity</li>
<li>Published story content (stored on IPFS, referenced on-chain)</li>
</ul>
<p>This data is already public on the Base blockchain. PlotLink indexes it for display purposes.</p>

<h3>Farcaster Profile Data</h3>
<p>If your wallet is linked to a Farcaster account, we cache your public Farcaster profile (username, display name, profile picture) for display purposes. This data is publicly available via the Farcaster protocol.</p>

<h3>Airdrop Campaign Data</h3>
<p>If you participate in the PLOT airdrop campaign, we store:</p>
<ul>
<li>Your wallet address and earned points</li>
<li>Referral relationships (which wallet referred which)</li>
<li>Daily check-in streak data</li>
<li>Referral codes</li>
</ul>

<h3>Story Ratings and Comments</h3>
<p>If you rate or comment on a story, your wallet address and the rating/comment are stored in our database.</p>

<h2>4. Local Data (PlotLink OWS)</h2>
<p>The PlotLink OWS writing tool runs locally on your computer. All data &mdash; stories, drafts, AI conversations, API keys, wallet keys &mdash; is stored locally in <code>~/.plotlink-ows/</code> on your machine. PlotLink does not have access to this data.</p>

<h2>5. Third-Party Services</h2>
<p>PlotLink uses the following third-party services:</p>
<ul>
<li><strong>Base Network</strong> &mdash; public blockchain (transactions are permanent and public)</li>
<li><strong>IPFS via Filebase</strong> &mdash; decentralized storage (published content is permanent and public)</li>
<li><strong>Farcaster / Neynar</strong> &mdash; social identity (public profile data)</li>
<li><strong>Mint Club</strong> &mdash; bonding curve protocol (token minting and burning)</li>
<li><strong>Vercel</strong> &mdash; hosting (standard server logs)</li>
</ul>
<p>Each service has its own privacy policy.</p>

<h2>6. Data Retention</h2>
<ul>
<li>On-chain data and IPFS content are permanent by design and cannot be deleted</li>
<li>Database records (ratings, airdrop points, cached profiles) are retained indefinitely</li>
<li>There is no account deletion process because there are no accounts &mdash; only wallet addresses</li>
</ul>

<h2>7. Data Security</h2>
<ul>
<li>No sensitive credentials are stored server-side</li>
<li>Database access is restricted via Supabase Row Level Security</li>
<li>All API endpoints use HTTPS</li>
</ul>

<h2>8. Children</h2>
<p>PlotLink is not intended for use by anyone under 18 years of age.</p>

<h2>9. Changes</h2>
<p>We may update this policy at any time. Changes take effect immediately upon posting.</p>

<h2>10. Contact</h2>
<p>For privacy-related questions, open an issue at <a href="https://github.com/realproject7/plotlink" target="_blank" rel="noopener noreferrer">github.com/realproject7/plotlink</a>.</p>
</article>
</div>
);
}
95 changes: 95 additions & 0 deletions src/app/terms/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
export default function TermsPage() {
return (
<div className="mx-auto max-w-2xl px-6 py-12">
<article className="prose prose-sm max-w-none">
<h1>Terms of Service</h1>
<p className="text-muted"><strong>PlotLink &mdash; plotlink.xyz</strong><br />Last updated: April 24, 2026</p>

<h2>1. Overview</h2>
<p>PlotLink is an open-source, on-chain storytelling protocol on Base (L2). It allows users to publish stories as on-chain tokens and support writers via bonding curves. PlotLink provides the interface &mdash; all transactions occur on public blockchains and are governed by smart contracts.</p>

<h2>2. Acceptance</h2>
<p>By using PlotLink, you agree to these terms. If you do not agree, do not use the service.</p>

<h2>3. The Service</h2>
<p>PlotLink provides:</p>
<ul>
<li>A web interface for publishing and reading tokenized stories</li>
<li>Bonding curve token creation via Mint Club V2 (third-party protocol)</li>
<li>IPFS storage of story content via Filebase (third-party provider)</li>
<li>An AI writing assistant tool (PlotLink OWS) for local use</li>
<li>An airdrop campaign with conditional token distribution</li>
</ul>
<p>PlotLink does NOT:</p>
<ul>
<li>Custody, hold, or control user funds or tokens</li>
<li>Provide financial, investment, or legal advice</li>
<li>Guarantee any token value, return, or market outcome</li>
<li>Control or reverse on-chain transactions</li>
</ul>

<h2>4. Wallet-Based Access</h2>
<p>PlotLink uses wallet-based authentication (e.g., MetaMask, Coinbase Wallet). We do not collect email addresses, phone numbers, passwords, or other personal credentials. Your wallet address is your identity on the platform.</p>

<h2>5. User Content</h2>
<p>Stories published through PlotLink are stored on IPFS and referenced on-chain. By publishing, you represent that:</p>
<ul>
<li>You own or have the right to publish the content</li>
<li>The content does not infringe any third-party rights</li>
<li>The content does not contain illegal material</li>
</ul>
<p>Published content is permanent and cannot be deleted from IPFS or the blockchain by PlotLink.</p>

<h2>6. PLOT Token</h2>
<p>PLOT is a <strong>utility token</strong> used within the PlotLink protocol. It serves as the reserve currency for minting and burning Story tokens via Mint Club V2 bonding curves. PLOT is not an investment, security, or financial instrument. PlotLink makes no representations about the value, future price, or return potential of PLOT.</p>
<p>PLOT is minted and burned through Mint Club V2&apos;s bonding curve mechanism. PlotLink does not control the supply, price, or liquidity of PLOT.</p>

<h2>7. Story Tokens</h2>
<p>Each story published on PlotLink creates a Story token on a bonding curve. Story tokens are a <strong>mechanism for supporting writers</strong> &mdash; purchasing a Story token is a way to support the creator and participate in the story&apos;s community. Story tokens are not investments, securities, or financial instruments.</p>
<ul>
<li>Writers receive royalties (5%) on each mint as a reward for creating content</li>
<li>Token prices are determined algorithmically by the bonding curve, not by PlotLink</li>
<li>Story tokens may have no monetary value</li>
<li>Purchasing a Story token does not create any obligation from the writer or PlotLink</li>
</ul>

<h2>8. On-Chain Transactions</h2>
<p>All transactions on PlotLink &mdash; including minting, burning, and swapping Story tokens &mdash; are executed on the Base blockchain via smart contracts. By using PlotLink, you acknowledge and agree that:</p>
<ul>
<li><strong>All on-chain transactions are final and irreversible.</strong> PlotLink cannot cancel, reverse, modify, or refund any transaction once it is submitted to the blockchain.</li>
<li><strong>PlotLink is not a party to your transactions.</strong> All mints and burns are executed directly between your wallet and the bonding curve smart contract. PlotLink provides the interface only.</li>
<li><strong>You are solely responsible for your transactions.</strong> This includes verifying amounts, addresses, and gas fees before confirming.</li>
<li><strong>PlotLink cannot recover lost funds.</strong> If you send tokens to the wrong address, interact with the wrong contract, or lose access to your wallet, PlotLink cannot assist with recovery.</li>
<li>Token prices are determined by the bonding curve algorithm &mdash; PlotLink does not set, influence, or guarantee prices</li>
<li>You accept all risks associated with minting and burning tokens, including total loss of funds</li>
<li>You are responsible for understanding applicable tax obligations in your jurisdiction</li>
</ul>
<p>PlotLink earns no fees from token minting or burning. Creation fees are paid to Mint Club.</p>

<h2>9. Airdrop Campaign</h2>
<p>The PLOT Big or Nothing Airdrop is a conditional distribution. Participation does not guarantee any token distribution. The airdrop pool may be partially or fully burned based on market conditions. PlotLink makes no guarantees about token value or distribution outcomes. The airdrop is not compensation, income, or a return on investment.</p>

<h2>10. AI Writing Tool</h2>
<p>PlotLink OWS is a local application that runs on your computer. It connects to third-party AI providers (Anthropic, OpenAI, etc.) using your own API keys. PlotLink does not process, store, or have access to your AI conversations or API keys.</p>

<h2>11. Third-Party Services</h2>
<p>PlotLink integrates with third-party services including but not limited to Mint Club, Filebase (IPFS), Base network, and Farcaster. PlotLink is not responsible for the availability, accuracy, or conduct of these services.</p>

<h2>12. No Warranty</h2>
<p>PlotLink is provided &ldquo;as is&rdquo; without warranties of any kind, express or implied. We do not guarantee uninterrupted access, error-free operation, or the accuracy of any displayed data (including prices, market caps, or token metrics).</p>

<h2>13. Limitation of Liability</h2>
<p>To the maximum extent permitted by law, PlotLink and its contributors shall not be liable for any indirect, incidental, special, or consequential damages arising from your use of the service, including but not limited to loss of funds, tokens, or data.</p>

<h2>14. Modification</h2>
<p>We may update these terms at any time. Continued use of PlotLink after changes constitutes acceptance.</p>

<h2>15. Governing Law</h2>
<p>These terms are governed by the laws applicable to the user&apos;s jurisdiction. PlotLink does not operate as a registered entity in any specific jurisdiction.</p>

<h2>16. Contact</h2>
<p>For questions about these terms, open an issue at <a href="https://github.com/realproject7/plotlink" target="_blank" rel="noopener noreferrer">github.com/realproject7/plotlink</a>.</p>
</article>
</div>
);
}
Loading
Loading