A ready-to-use template for creating beautiful podcast websites built with Podcast Framework.
Click the "Use this template" button above to create your own repository.
git clone https://github.com/YOUR_USERNAME/your-podcast.git
cd your-podcastnpm installCreate a Sanity project at sanity.io/manage
- Click "Create Project"
- Name your project
- Copy the Project ID
# Copy the template
cp .env.template .env.local
# Edit .env.local and add your credentials
nano .env.localRequired variables:
SANITY_PROJECT_ID- Your Sanity project IDSANITY_DATASET- Usually "production"SANITY_TOKEN- Create a token in Sanity dashboard
Start the website:
npm run devStart Sanity Studio (in another terminal):
npm run sanity:devThe Sanity Studio is your content management interface. Run it locally to add/edit episodes:
npm run sanity:devThis starts the Studio at http://localhost:3333
To make your Studio accessible from anywhere (recommended for production):
- Make sure your
.env.localhas correct credentials - Deploy to Sanity Cloud:
npm run sanity:deploy
- Follow the prompts to choose a studio hostname
- Your Studio will be available at
https://your-studio.sanity.studio
The free tier includes unlimited Studio hosting.
- Create and edit podcast episodes
- Manage guests and hosts
- Configure podcast metadata
- Upload audio files
- Add episode transcripts
- Rich text editing for show notes
- @rejected-media/podcast-framework-core - Components, layouts, utilities
- @rejected-media/podcast-framework-sanity-schema - CMS schemas
- Astro 5 - Static site generator
- Sanity 3 - Headless CMS
- Header - Navigation with mobile menu
- Footer - Social links and newsletter
- NewsletterSignup - Email subscription
- EpisodeSearch - Client-side search
- TranscriptViewer - Transcript display
- FeaturedEpisodesCarousel - Episode carousel
- SkeletonLoader - Loading states
- BlockContent - Rich text renderer
- β SEO optimized (meta tags, Schema.org)
- β Google Analytics 4 ready
- β Responsive design
- β Accessibility (WCAG 2.1 AA)
- β Episode transcripts
- β Newsletter signup
- β Community contributions
- β Multi-cloud deployment (Cloudflare/Vercel/Netlify)
Create src/components/ComponentName.astro to override any framework component:
---
// src/components/Header.astro
---
<header class="custom-header">
<!-- Your custom header -->
</header>The framework automatically uses your version!
// sanity/sanity.config.ts
import { extendEpisodeSchema } from '@rejected-media/podcast-framework-sanity-schema';
const episode = extendEpisodeSchema([
{
name: 'sponsor',
type: 'reference',
to: [{ type: 'sponsor' }]
}
]);Edit podcast.config.js to enable/disable features:
features: {
transcripts: true,
newsletter: true,
search: true,
comments: false // Disable comments
}- Push your code to GitHub
- Go to Cloudflare Dashboard
- Click "Create a project"
- Connect your GitHub repository
- Configure:
- Build command:
npm run build - Build output directory:
dist
- Build command:
- Add environment variables (SANITY_PROJECT_ID, etc.)
- Deploy!
- Setup Guide: See Quick Start above
- Deployment Guide: See Deployment above
- Customization: See Customization above
The framework includes a CLI tool for common tasks:
# Validate your project
npx @podcast-framework/cli validate
# List available components
npx @podcast-framework/cli list-components
# Override a component
npx @podcast-framework/cli override Header
# Check for framework updates
npx @podcast-framework/cli check-updates
# Update framework packages
npx @podcast-framework/cli updateFound a bug or want to contribute? Visit the main repository.
MIT License - see LICENSE
Happy podcasting! ποΈ