A Lightning Network-powered Value4Value music platform template for bands and artists with existing RSS feeds. Built with Next.js, featuring instant Bitcoin payments, Nostr integration, and Podcasting 2.0 support.
Note: This is a GitHub template repository. Click the green "Use this template" button above to create your own copy.
See this template in action with all features enabled:
- 🌐 Live Demo Site: rss-music-site.vercel.app
- 📦 Demo Repository: ChadF-Test/RSS-music-site
- 🔗 Nostr: Follow and interact with the demo site on Nostr:
npub1ada8z0wzef2wynrh59drnsx32wmajven69zggcnep3dtqc0a00nshja4wl
- Go to github.com and click "Sign up"
- Create a free account (no credit card required)
- Verify your email address
Recommended: Use the Template Button (Easiest)
- Click the green "Use this template" button at the top of this repository page
- Select "Create a new repository"
- Name your repository (e.g., "my-music-site")
- Choose public or private (your choice)
- Click "Create repository from template"
- Go to vercel.com
- Click "Sign Up" and choose "Continue with GitHub"
- Authorize Vercel to access your GitHub account
- Complete the signup (no credit card required)
-
In Vercel dashboard:
- Click "Add New Project"
- Select your GitHub repository
- Vercel will automatically detect it's a Next.js project
-
Add Environment Variables and Deploy:
- Click "Environment Variables" and add:
NEXT_PUBLIC_SITE_NAME=Your Music Site Name
- Click "Deploy"
- Wait 2-3 minutes for the build to complete
- Vercel will show you your site URL (e.g.,
https://my-music-site-abc123.vercel.app) - Go back to "Environment Variables" and add:
(Replace with your actual Vercel URL shown after deployment)
NEXT_PUBLIC_SITE_URL=https://your-actual-vercel-url.vercel.app
- Vercel will automatically redeploy with the updated URL
- Click "Environment Variables" and add:
Note: The template includes example files (
.exampleextensions) and clean/empty data files. These are automatically generated/updated by the system when you add your feeds. You can see example file formats indata/feeds.json.example,public/static-albums.json.example, andpublic/data/albums-with-colors.json.example.
-
Edit your feeds:
- Go to your GitHub repository
- Edit
data/feeds.json(the template starts with an empty array:[]) - Add your RSS feed URLs:
[ "https://example.com/your-album-feed.xml" ] - Commit the changes
Note: The system automatically processes and updates
feeds.jsonwith metadata (id, type, title, status, priority, etc.) that the site needs. After processing:- Your original URLs are preserved in the
originalUrlfield of each feed object - Publisher feeds automatically discover album feeds: When you add a publisher feed, the system finds and adds all album feeds from that publisher
- Identifying your feeds:
- Manually added feeds have
"source": "manual"and your original URL in theoriginalUrlfield - Auto-discovered feeds have
"source": "recursive"and show the publisher feed they came from in thediscoveredFromfield
- Manually added feeds have
- The file structure changes from a simple array to an object with a
feedsarray containing all the processed metadata
-
Add your visual assets (background, logo, icons):
- Go to your GitHub repository
- Navigate to the
public/folder (this is where all static assets go) - Upload or replace these files directly in the
public/folder:- Background image: Add
public/background.webp,public/background.png,public/background.jpg, orpublic/background.jpeg- Recommended format: WebP (best compression) or PNG (if you need transparency)
- Recommended size: 1920x1080px or larger (16:9 aspect ratio)
- This image appears as the full-page background on the homepage
- The code automatically tries formats in this order:
.webp→.png→.jpg→.jpeg - If the file doesn't exist, the site will work but won't show a background image
- Favicon: Add
public/favicon.ico(32x32px or 16x16px)- This is the small icon that appears in browser tabs
- Format:
.ico(required for favicon)
- Logo: Add
public/logo.webp,public/logo.png,public/logo.jpg, orpublic/logo.jpeg(optional)- Displayed in the header next to the menu button (both mobile and desktop)
- The code automatically tries formats in this order:
.webp→.png→.jpg→.jpeg - If the file doesn't exist, the logo won't be displayed (site will work normally)
- PWA Icons (for mobile app installation):
public/icon-192x192.webporpublic/icon-192x192.png(192x192px)public/icon-512x512.webporpublic/icon-512x512.png(512x512px)public/icon-76x76.webporpublic/icon-76x76.png(76x76px)- The code tries WebP first, then falls back to PNG
- Placeholder Album Art (optional fallback):
public/placeholder-album-art.webp,public/placeholder-album-art.png,public/placeholder-album-art.jpg, orpublic/placeholder-album-art.jpeg- Recommended: 1200x1200px (1:1 aspect ratio)
- Used as fallback when track or publisher artwork is missing
- Background image: Add
- Commit the changes
-
Vercel will automatically redeploy and parse your feeds when you push changes to GitHub
Your music site is now live and free! The free tier includes:
- ✅ 100GB bandwidth/month
- ✅ Unlimited requests
- ✅ Free SSL certificate
- ✅ Global CDN (automatic)
- ✅ Automatic deployments
Cost: $0/month - perfect for music sites!
- RSS Feed Parsing: Direct RSS XML parsing (no API keys required)
- Audio Streaming: Full-featured audio player
- Publisher Feed System: Dedicated pages for music publishers with artwork
- Content Filtering: Albums, EPs, Singles, and Publisher Feed views
- Progressive Web App (PWA): Install on mobile devices
- Responsive Design: Optimized for all screen sizes
- Valid RSS feeds with audio enclosures (MP3 or supported formats)
- Just add your RSS feed URLs to
feeds.json- the system handles everything automatically - Feeds are automatically parsed during Vercel deployment
- The Artists tab groups albums by artist name from your feeds
Note: On Vercel, you must edit feeds.json in your GitHub repository and push the changes. RSS feeds are parsed automatically during each deployment.
Lightning/Value4Value payments are optional but fully supported. To enable Lightning payments:
-
Add Lightning info to your RSS feeds:
- Lightning payment information must be added to your RSS feed using Podcasting 2.0
<podcast:value>tags - This cannot be done in this template - you must add Lightning info to your RSS feed wherever it was created (your podcast hosting platform, feed generator, etc.)
- The template will automatically parse and use Lightning payment info if it's present in your feeds
- Lightning payment information must be added to your RSS feed using Podcasting 2.0
-
Enable Lightning in Vercel: Add to your Vercel environment variables:
NEXT_PUBLIC_ENABLE_LIGHTNING=true
-
Enable Lightning in the site:
- After deployment, users need to enable Lightning payments using the toggle in the side menu
- The toggle is located in the hamburger menu (☰) on mobile or the sidebar on desktop
- Once enabled, users can connect their Lightning wallet and send boosts/payments
Supported Payment Methods:
- WebLN: Browser extension wallets (Alby, Zeus, etc.)
- NWC (Nostr Wallet Connect): Alby Hub, Mutiny, and other NWC-compatible wallets
- Lightning Addresses: user@getalby.com, user@strike.me, etc.
- Node Pubkeys: Direct keysend to Lightning node addresses
To give your site a permanent Nostr identity for posting boosts:
-
Create a Nostr account for your site:
- Go to nostrudel.ninja/signup to create a Nostr account
- This is a site account (not personal) - it will be used to post all boosts from your site
- Set up your site's profile with display name, profile picture, bio, and website link
-
Export your Nostr key:
- After creating your account and setting up your profile, export your keys from nostrudel.ninja
- You'll need your
nsec1...(private key) - the public key (npub) will be automatically derived from it
-
Add key to Vercel: Add to your Vercel environment variables:
NEXT_PUBLIC_SITE_NOSTR_NSEC=nsec1...
- Important: Keep your
nsec1...key safe and secure! This is your private key - anyone with it can post as your site's account - The public key (npub) is automatically derived from the nsec, so you don't need to add it separately
- Important: Keep your
Important: The /boosts page (which shows recent boosts and replies from the Nostr network) only works if you set up a Nostr account for the site using the steps above. Without Nostr keys configured, the boosts page will show "Loading boosts from Nostr relays..." but won't display any boosts.
If you have your own domain:
- Go to your Vercel project settings
- Click "Domains"
- Add your domain
- Follow the DNS configuration instructions
- Free SSL certificate is included automatically
If you want to run the site locally for development or testing:
-
Install dependencies:
npm install
-
Set up environment:
# For Lightning-enabled development (recommended) cp env.lightning.template .env.local # OR for basic music-only development cp env.basic.template .env.local
-
Configure your site name: Edit
.env.localand set:NEXT_PUBLIC_SITE_NAME="Your Music Site Name" -
Add your RSS feeds: Edit
data/feeds.jsonand add your feed URLs:[ "https://example.com/your-album-feed.xml", "https://example.com/your-publisher-feed.xml" ]
-
Start development server:
npm run dev
-
Open your browser: Navigate to
http://localhost:3000
Note: For production deployment, use the GitHub + Vercel workflow described above. Local development is optional and mainly for testing changes before deploying.