A modern podcast website for FertiliTEA with Dr. D - Real Talk on Fertility, Family Building, and Reproductive Health.
- ποΈ Podcast RSS feed integration with custom audio player
- π Episode search and topic filtering
- π Blog powered by Sanity CMS
- π Newsletter integration with Buttondown
- π Analytics with Supabase
- π¨ Fully responsive design
- β‘ Built with Next.js 15 and TypeScript
- Framework: Next.js 15 with App Router
- Language: TypeScript
- Styling: Tailwind CSS
- CMS: Sanity
- Database: Supabase
- Newsletter: Buttondown
- Deployment: Vercel
- Node.js 18+ installed
- npm or yarn package manager
- Sanity account (free tier)
- Supabase account (free tier)
- Buttondown account ($9/mo)
- Clone the repository:
git clone <your-repo-url>
cd FertiliTEA- Install dependencies:
npm install- Set up environment variables:
cp .env.local.example .env.localEdit .env.local and add your credentials:
# Sanity CMS
NEXT_PUBLIC_SANITY_PROJECT_ID=your_project_id_here
NEXT_PUBLIC_SANITY_DATASET=production
# Supabase
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url_here
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key_here
# Buttondown
BUTTONDOWN_API_KEY=your_buttondown_api_key_here
# Analytics (Optional)
NEXT_PUBLIC_GA_ID=your_google_analytics_id_here- Create a new Sanity project:
cd sanity
npm create sanity@latest-
Follow the prompts to create your project
-
Copy your project ID and add it to
.env.local -
Deploy Sanity Studio:
npm run dev- Access Sanity Studio at:
http://localhost:3000/studio
-
Create a new project at supabase.com
-
Run the SQL schema from
supabase-schema.sqlin the SQL Editor:- Go to SQL Editor in your Supabase dashboard
- Copy the contents of
supabase-schema.sql - Run the query
-
Get your project URL and anon key from Settings > API
-
Add them to
.env.local
-
Create an account at buttondown.email
-
Go to Settings > Programming
-
Copy your API key
-
Add it to
.env.local
Run the development server:
npm run devOpen http://localhost:3000 in your browser.
βββ app/ # Next.js app directory
β βββ api/ # API routes
β βββ blog/ # Blog pages
β βββ studio/ # Sanity Studio
β βββ page.tsx # Home page
βββ components/ # React components
β βββ ui/ # shadcn/ui components
β βββ ... # Custom components
βββ lib/ # Utility functions
βββ sanity/ # Sanity configuration
β βββ schemas/ # Content schemas
β βββ lib/ # Sanity client
βββ img/ # Static images
βββ public/ # Public assets
-
Push your code to GitHub
-
Import your repository on Vercel
-
Add your environment variables in the Vercel dashboard
-
Deploy!
The Sanity Studio is embedded at /studio and will be deployed with your Next.js app.
- Go to
/studioin your browser - Click "Blog Post"
- Fill in the title, content, and other fields
- Publish
- Go to
/studio - Click "Testimonial"
- Add new testimonials with ratings and text
- Mark as "Featured" to show in the carousel
- Go to
/studio - Click "Topic"
- Add topics with custom colors for filter pills
- Hero: Podcast introduction with platform links
- AudioPlayer: Custom audio player with controls
- EpisodesSection: Dynamic episode grid with search
- SearchFilter: Search bar and topic filter pills
- SubmitSection: Listener question submission form
- NewsletterSection: Email signup with Buttondown
- TestimonialsCarousel: Auto-playing testimonial carousel
/api/submit-question: Handle listener question submissions/api/newsletter-subscribe: Handle newsletter subscriptions
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
Copyright Β© 2025 FertiliTEA with Dr. D. All rights reserved.
For questions or issues, contact: fertiliteawithdrd@gmail.com