Overview · Features · Architecture · Quick Start · Contracts · Contributing
| Feature | Status | Branch |
|---|---|---|
| Beat upload flow with IPFS | Done | main |
| Marketplace grid with filters | In Progress | feat/marketplace-filters |
| Audio preview player (30s clips) | In Progress | feat/audio-preview |
| Mobile app (React Native) | In Progress | crate-mobile |
| Mainnet deployment | Planned | — |
Crate is a peer-to-peer sample and beat marketplace built on Stellar. It proves a simple thesis: producers deserve to be paid instantly, and Ethereum fees make that impossible on a $20 beat.
Stellar settles in 5 seconds at fractions of a cent. Crate builds on top of that to give producers a 90% revenue split — no middlemen, no waiting 30 days for a payout, no label taking your cut.
"Getting your beat sold on Crate isn't just a transaction. It's validation. It's making it."
- Instant settlement — XLM hits your wallet in 5 seconds after purchase
- 90/10 split — Keep 90% of every sale vs. the industry standard 30–50%
- Three license tiers — Lease, Premium, and Exclusive pricing per beat
- Collab splits — Co-produced beats split earnings automatically, no manager needed
- IPFS storage — Your beats live on decentralized storage. No platform can take them down
- On-chain licensing — Every purchase mints a verifiable license record
- 30-second previews — Full untagged beat unlocked only after purchase
- Instant ownership — License proof stored on-chain, no disputes
- Browse by genre, BPM, key, mood — Discover exactly what you need
- Exclusive purchases — Buy a beat exclusively and it's removed from the marketplace
- No intermediaries — Soroban smart contract handles payments, splits, and licensing
- Freighter wallet — Seamless Web3 experience with Stellar Wallet Kit
- Real-time balance — Live XLM balance updates via Horizon
- Mobile-ready — Responsive UI, companion React Native app available
┌──────────────────────────────────────────────────────────────────┐
│ Crate Frontend │
│ React 18 · TypeScript · Vite · Tailwind │
└──────────────────────────┬───────────────────────────────────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌──────────────┐ ┌────────────────────┐
│ Crate Backend │ │ Soroban │ │ IPFS / Pinata │
│ Node · Express │ │ Contract │ │ Audio + Metadata │
│ Analytics/IPFS │ │ (Rust/WASM) │ │ Decentralized CDN │
└────────┬────────┘ └──────┬───────┘ └────────────────────┘
│ │
└──────────────────┘
│
┌────────▼────────┐
│ Stellar Network │
│ Testnet → Main │
│ 5s · ~$0.0001 │
└─────────────────┘
| Function | Description |
|---|---|
upload_sample(title, cid, prices, genre, bpm) |
List a beat with three license tier prices |
purchase_license(sample_id, tier) |
Buy a license — auto-splits XLM 90/10 |
withdraw_earnings(producer) |
Pull accumulated balance to wallet |
delist_sample(sample_id) |
Remove beat (only if no active licenses) |
get_sample(id) |
Fetch beat metadata and pricing |
get_earnings(address) |
Check withdrawable balance |
get_stats() |
Platform-wide totals |
| Layer | Technology |
|---|---|
| Frontend | React 18, TypeScript, Vite, Tailwind CSS |
| Wallet | Freighter via @creit.tech/stellar-wallets-kit |
| Blockchain | Stellar, Soroban smart contracts (Rust) |
| Storage | IPFS via Pinata gateway |
| SDK | @stellar/stellar-sdk v13 |
| Backend | Node.js, Express, TypeScript |
| Mobile | React Native, Expo |
- Node.js 20+
- Freighter Wallet browser extension (set to Testnet)
# Clone
git clone https://github.com/Crate-Protocol/crate-frontend.git
cd crate-frontend
# Install
npm install
# Configure
cp .env.example .env
# Fill in your Pinata JWT and contract ID
# Start
npm run dev# Deployed contract on Stellar Testnet
VITE_CONTRACT_ID=CA7DGEWWS3VH5J2I4I7FFEB5UHK2MJSYWDKDQKXQM7GDNLI2IRATDTLG
# Pinata IPFS (for beat uploads)
VITE_PINATA_JWT=your_pinata_jwt_here
VITE_PINATA_GATEWAY=https://gateway.pinata.cloud
# Network
VITE_NETWORK=TESTNET
VITE_HORIZON_URL=https://horizon-testnet.stellar.org
VITE_RPC_URL=https://soroban-testnet.stellar.org| Contract | Network | Address |
|---|---|---|
crate_marketplace |
Stellar Testnet | CA7DGEWW...DTLG |
src/
├── components/
│ ├── Navbar.tsx # Top nav with wallet connect
│ ├── SampleCard.tsx # Beat card with preview + buy
│ ├── WalletButton.tsx # Connect / disconnect
│ └── AudioPlayer.tsx # 30-second preview player
├── contracts/
│ └── crate.ts # Soroban contract bindings
├── hooks/
│ ├── useWallet.ts # Freighter wallet state
│ └── useContract.ts # Contract read/write helpers
├── pages/
│ ├── Home.tsx # Landing + hero
│ ├── Marketplace.tsx # Browse beats
│ ├── Upload.tsx # List your beat
│ ├── Profile.tsx # Earnings + withdrawals
│ └── SampleDetail.tsx # Beat page + license tiers
└── styles/
└── index.css # Design tokens + globals
| Tier | Rights | Typical Price |
|---|---|---|
| Lease | Non-exclusive, limited commercial use, 100k streams | 10–50 XLM |
| Premium | Exclusive commercial, unlimited streams, full radio rights | 100–500 XLM |
| Exclusive | Full ownership transfer, beat removed from marketplace | 500–5000 XLM |
Each tier is enforced by the smart contract — no PDF contracts, no lawyers, no disputes.
| Ethereum | Stellar | |
|---|---|---|
| Settlement time | 12+ seconds (PoS) | ~5 seconds |
| Transaction fee | $2–50 | ~$0.0001 |
| Fee on a $20 beat sale | $1–10 (5–50%) | $0.001 (<0.01%) |
| Smart contracts | EVM/Solidity | Soroban/Rust |
| Asset issuance | ERC-20 | Native |
A producer selling a $20 beat on Ethereum loses $5+ in gas. On Crate, they keep $18.
Crate is open source and community-driven. Contributions welcome.
# Fork → clone → branch
git checkout -b feat/your-feature
# Make changes, then open a PRSee CONTRIBUTING.md for guidelines. Check open issues for good first issues.
| Repo | Description |
|---|---|
| crate-contracts | Soroban smart contracts (Rust) |
| crate-backend | API, IPFS proxy, analytics |
| crate-mobile | React Native mobile app |
MIT — see LICENSE