A marketplace for premium Counterparty asset names, enabling users to browse and purchase unique blockchain assets through the Counterparty DEX.
π Live at: xcpfolio.com
- Browse 200+ Premium Assets: Curated collection of memorable Counterparty asset names
- Smart Filtering & Search: Filter by category, length, price, and age
- XCP Wallet Integration: Connect wallet to purchase assets directly on-chain
- Real-time DEX Data: Live order book and pricing from Counterparty
- Mobile Optimized: Responsive design for all devices
- Privacy-First Analytics: Fathom Analytics integration
- Asset Metadata API: JSON endpoints for each asset
- Framework: Next.js 15.4
- Language: TypeScript
- Styling: Tailwind CSS
- Web3: XCP Wallet Extension integration
- APIs: Counterparty API v2, XCP.io
- Analytics: Fathom Analytics
- Deployment: Vercel
- Clone the repository:
git clone https://github.com/XCP/xcpfolio.com.git
cd xcpfolio.com- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env.local- (Optional) Add your Fathom Analytics site ID:
NEXT_PUBLIC_FATHOM_SITE_ID=YOUR_SITE_ID
- Run development server:
npm run dev- Click the deploy button above
- Add environment variables in Vercel dashboard (optional):
NEXT_PUBLIC_FATHOM_SITE_ID
- Deploy!
npm run build
npm start| Variable | Required | Description |
|---|---|---|
NEXT_PUBLIC_FATHOM_SITE_ID |
No | Fathom Analytics site ID for privacy-first tracking |
βββ app/ # Next.js App Router
β βββ [asset]/ # Dynamic asset detail pages
β βββ api/ # API routes
β β βββ [asset]/ # JSON metadata endpoints
β βββ how-it-works/ # How it works page
β βββ fathom.tsx # Analytics component
β βββ layout.tsx # Root layout
β βββ page.tsx # Homepage
βββ components/ # Reusable React components
β βββ AssetCard.tsx
β βββ AssetGrid.tsx
β βββ Header.tsx
β βββ WalletButton.tsx
βββ contexts/ # React Context providers
β βββ Web3Context.tsx
βββ lib/ # Utilities and API functions
β βββ api.ts # Counterparty API integration
β βββ metadata.ts # Asset metadata
βββ public/ # Static assets
βββ hooks/ # Custom React hooks
GET /api/[asset]- Returns JSON metadata for any asset- CORS enabled for cross-origin access
- Used in Counterparty asset descriptions
- Counterparty API v2: Asset data, orders, transactions
- XCP.io API: Additional blockchain data
- XCP Wallet Extension: Web3 transactions
- No server-side wallet operations
- Environment variables for sensitive configuration
- Privacy-focused analytics (no personal data collection)
- All transactions handled client-side via XCP Wallet
Tracked events (via Fathom):
- Page views
purchase_clicked- When user clicks purchase buttoninquire_clicked- When user clicks inquire for unlisted assets
npm run dev # Development server with hot reload
npm run build # Production build
npm run start # Start production server
npm run lint # Run ESLint
npm run type-check # TypeScript type checking- Asset grid loads and displays correctly
- Search/filter functionality works
- Asset detail pages load
- XCP Wallet connection works
- Purchase flow initiates correctly
- Mobile responsive design
- JSON API endpoints return correct data
Contributions welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT License - see LICENSE file for details
- Email: dan@droplister.com
- GitHub Issues: github.com/XCP/xcpfolio.com/issues
- Twitter: @droplister
- Production Site: xcpfolio.com
- GitHub Repository: github.com/XCP/xcpfolio.com
- Counterparty Protocol: counterparty.io
- XCP Wallet Extension: Chrome Web Store
This marketplace is in beta. Current limitations:
- Purchase flow requires XCP Wallet Extension
- Some assets may show outdated pricing (cache delay)
- Limited to desktop browsers with extension support
- Mobile wallet support
- Batch purchasing
- Price alerts
- Asset watchlist
- Historical price charts
- Advanced filtering options
Built with β€οΈ for the Counterparty community by 21e14