Skip to content

cascadiacollections/podr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

🎧 Podr

Node.js CI Daily Build Netlify Status MIT License TypeScript Preact

🎡 A modern, blazing-fast podcast discovery and player for the web

Discover trending podcasts, save your favorites, and enjoy a clean listening experience

πŸš€ Try Live Demo β€’ πŸ“– Documentation β€’ πŸ› Report Bug β€’ πŸ’‘ Request Feature


🌟 Why Podr?

"The fastest way to discover and enjoy podcasts on the web"

Podr revolutionizes podcast discovery with lightning-fast performance and a beautifully crafted user experience. Built for podcast enthusiasts who demand speed, simplicity, and style.

🎯 Perfect For:

  • πŸ” Podcast Discovery - Find trending shows instantly
  • ⭐ Curated Collections - Save and organize your favorites
  • πŸš€ Quick Access - Zero-delay browsing with offline capabilities
  • πŸ“± Any Device - Seamless experience across all screen sizes

✨ Features

πŸš€ Performance First

  • ⚑ Instant Loading - Top podcasts data pre-loaded for zero-wait discovery
  • πŸ”„ Auto-Refresh - Daily automated builds ensure fresh content
  • πŸ“¦ Optimized Bundles - Lightweight architecture with aggressive caching
  • πŸ›‘οΈ Rock Solid - 99.9% uptime with global CDN delivery

🎨 Beautiful Experience

  • πŸ“± Responsive Design - Pixel-perfect on mobile, tablet, and desktop
  • οΏ½ Modern UI - Clean, intuitive interface with smooth animations
  • ⚑ Lightning Search - Find any podcast in milliseconds
  • ⭐ Smart Favorites - One-click bookmarking with persistent storage

�️ Developer Ready

  • πŸ”§ Modern Stack - Preact + TypeScript + cutting-edge tooling
  • πŸ§ͺ Fully Tested - Comprehensive test suite with 90%+ coverage
  • οΏ½ Security First - CSP headers, HTTPS, and secure dependencies
  • 🌐 PWA Ready - Offline capabilities and installable experience

πŸ› οΈ Tech Stack

🎨 Frontend

⚑ Build & Deploy

πŸ§ͺ Testing & Quality

πŸ”§ Developer Experience

πŸš€ Quick Start

πŸ“‹ Prerequisites

Requirement Version Download
Node.js 24+ LTS nodejs.org
Yarn 1.22+ or 4+ yarnpkg.com
Git 2.0+ git-scm.com

⚑ Installation

# πŸ“₯ Clone the repository
gh repo clone cascadiacollections/podr
# or using git
git clone https://github.com/cascadiacollections/podr.git

# πŸ“‚ Navigate to project directory
cd podr

# πŸ“¦ Install dependencies
yarn install

# πŸš€ Start development server
yarn start

πŸŽ‰ Success! Open http://localhost:9000 to see Podr in action!

πŸ“‹ Development Commands

Command Description Usage
yarn start πŸ”₯ Start dev server with hot reload Development
yarn build πŸ“¦ Build for production Local testing
yarn build:ci πŸš€ Optimized CI/production build Deployment
yarn test πŸ§ͺ Run all tests Validation
yarn test:watch πŸ‘€ Tests in watch mode Development
yarn test:coverage πŸ“Š Coverage report Quality check
yarn lint πŸ” Check code quality with ESLint Pre-commit
yarn lint:fix πŸ”§ Auto-fix ESLint issues Cleanup

πŸ”„ Development Workflow

# 1. Start development
yarn start              # Launch dev server

# 2. Make changes
# Edit files in src/ - hot reload active!

# 3. Lint your code
yarn lint               # Check for issues
yarn lint:fix           # Auto-fix problems

# 4. Test your changes
yarn test:watch         # Run tests continuously

# 5. Check code quality
yarn test:coverage      # Ensure coverage targets met

πŸ—οΈ Project Architecture

πŸ“ Repository Structure

This repository is organized as a monorepo containing the main Podr application and reusable packages:

πŸ“¦ podr/
β”œβ”€β”€ πŸ“± src/                           # Main Podr application
β”‚   β”œβ”€β”€ 🎨 ui/                        # React/Preact components
β”‚   β”‚   β”œβ”€β”€ πŸ§ͺ __tests__/             # Component test suites
β”‚   β”‚   β”œβ”€β”€ πŸ“± App.tsx                # Main application shell
β”‚   β”‚   β”œβ”€β”€ πŸ” Search.tsx             # Podcast search interface
β”‚   β”‚   β”œβ”€β”€ πŸ“‹ List.tsx               # Podcast listing component
β”‚   β”‚   β”œβ”€β”€ πŸ“„ Result.tsx             # Individual search results
β”‚   β”‚   └── πŸ›‘οΈ ErrorBoundary.tsx      # Error handling wrapper
β”‚   β”œβ”€β”€ πŸ› οΈ utils/                     # Shared utilities & helpers
β”‚   β”‚   β”œβ”€β”€ 🌐 AppContext.tsx         # Global application state
β”‚   β”‚   β”œβ”€β”€ πŸ”§ helpers.ts             # Pure utility functions
β”‚   β”‚   └── πŸͺ hooks.ts               # Custom React hooks
β”‚   β”œβ”€β”€ πŸ“ types/                     # TypeScript type definitions
β”‚   β”‚   └── testing-library__jest-dom.d.ts
β”‚   └── 🎨 app.scss                   # Global styles & variables
└── πŸ“¦ packages/                      # Reusable packages
    └── πŸ”Œ webpack-api-inliner-plugin/ # API inlining webpack plugin
        β”œβ”€β”€ πŸ“– README.md              # Plugin documentation
        β”œβ”€β”€ πŸ“ CHANGELOG.md           # Release notes
        β”œβ”€β”€ πŸ”§ index.ts               # Main plugin implementation
        └── πŸ“‹ package.json           # Package configuration

πŸ“¦ Packages

  • webpack-api-inliner-plugin - A webpack plugin that fetches API data at build time and inlines it for faster initial page rendering

πŸ›οΈ Architecture Principles

  • 🧩 Component-Based - Modular, reusable UI components
  • πŸ“± Mobile-First - Responsive design from ground up
  • ⚑ Performance - Code splitting and lazy loading
  • πŸ”’ Type Safety - Comprehensive TypeScript coverage
  • πŸ§ͺ Test Coverage - Unit and integration testing
  • β™Ώ Accessibility - WCAG 2.1 AA compliance

🐳 Dev Container Setup

Experience zero-config development with our containerized environment:

# πŸš€ One-click setup in VS Code
code .                  # VS Code will prompt for container reopen

🎁 What's Included:

  • βœ… Node.js 24 - Latest LTS with optimal performance
  • βœ… Yarn - Fast, reliable package management
  • βœ… Git + Git LFS - Full version control with large files
  • βœ… GitHub CLI - Streamlined GitHub workflow
  • βœ… VS Code Extensions - Pre-configured development tools

πŸ“¦ Pre-installed Extensions:

  • ESLint + Prettier - Code quality and formatting
  • TypeScript - Enhanced IntelliSense
  • CSS Peek - Quick stylesheet navigation
  • Auto Rename Tag - Synchronized tag editing
  • GitLens - Advanced Git visualization

πŸ’‘ Pro Tip: The dev container ensures every team member has an identical development environment!

πŸ”§ Code Quality Standards

We maintain enterprise-grade code quality through automated tooling:

πŸ“ Linting & Formatting

  • ESLint 9 - Modern flat config with TypeScript support
  • React Performance Rules - Prevents unnecessary re-renders
    • eslint-plugin-react - Standard React linting
    • eslint-plugin-react-perf - Performance-focused rules
  • Prettier - Consistent code formatting
  • Import Organization - Auto-sorted imports
  • EditorConfig - Cross-IDE consistency

🎯 Type Safety

  • TypeScript - 100% type coverage goal
  • Strict Mode - Maximum type checking
  • Path Aliases - Clean import statements
  • Modern JSX - Latest React patterns
# πŸ” Check code quality
yarn lint               # Run ESLint checks (catches re-render issues)
yarn lint:fix           # Auto-fix ESLint issues
yarn format             # Format with Prettier
yarn type-check         # TypeScript validation

πŸ’‘ Performance Tip: ESLint now catches common re-render issues like inline arrow functions and object/array literals in JSX. See docs/ESLINT.md for details.

πŸ§ͺ Testing Strategy

Comprehensive testing ensures reliability and prevents regressions:

🎯 Testing Philosophy

  • πŸ’― High Coverage - Target 90%+ code coverage
  • 🧩 Component Focus - Test behavior, not implementation
  • ⚑ Fast Feedback - Sub-second test execution
  • πŸ”„ Continuous - Tests run on every commit

πŸ› οΈ Testing Commands

# πŸš€ Quick test run
yarn test                    # Run full test suite

# πŸ‘€ Development mode
yarn test:watch             # Watch mode with hot reload

# πŸ“Š Coverage analysis
yarn test:coverage          # Generate detailed coverage report

# πŸ” Specific test patterns
yarn test Button            # Test files matching "Button"
yarn test --testNamePattern="search" # Test names containing "search"

πŸ“‹ What We Test

  • βœ… Component Rendering - UI components render correctly
  • βœ… User Interactions - Clicks, inputs, and navigation
  • βœ… State Management - Context and hooks behavior
  • βœ… API Integration - Mock external dependencies
  • βœ… Error Boundaries - Graceful error handling

πŸ“Š Coverage Reports are automatically generated and stored in coverage/ directory

πŸš€ Deployment & CI/CD

🌐 Automated Deployment Pipeline

Zero-downtime deployments with enterprise-grade reliability:

graph LR
    A[Push to main] --> B[GitHub Actions]
    B --> C[Build & Test]
    C --> D[Deploy to Netlify]
    D --> E[Live on podr.netlify.app]
Loading

🎯 Deployment Features

πŸ”„ Continuous Deployment

  • βœ… Auto Deploy - Every main push goes live
  • βœ… Preview Deploys - Each PR gets preview URL
  • βœ… Rollback Ready - One-click revert capability
  • βœ… Zero Downtime - Seamless deployments

⚑ Performance Optimized

  • βœ… Global CDN - Edge caching worldwide
  • βœ… Compression - Gzip/Brotli for all assets
  • βœ… Caching - Aggressive browser caching
  • βœ… Security Headers - CSP, HSTS, and more

πŸ› οΈ Manual Deployment

# πŸ“¦ Build for production
yarn build:ci               # Optimized production build

# πŸš€ Deploy to Netlify (if CLI configured)
netlify deploy --prod --dir=dist

# πŸ” Preview deployment locally
yarn serve                  # Serve built files locally

πŸ“ˆ Build Optimizations

  • πŸ—œοΈ Bundle Splitting - Separate vendor and app chunks
  • 🎯 Tree Shaking - Dead code elimination
  • πŸ“¦ Asset Optimization - Image compression and minification
  • πŸ”— Preload Hints - Critical resource prioritization

🀝 Contributing

We ❀️ contributions! Help make Podr even better for the podcast community.

πŸš€ Quick Contribution Guide

# 1. 🍴 Fork the repository
gh repo fork cascadiacollections/podr

# 2. 🌟 Create feature branch
git checkout -b feature/amazing-feature

# 3. ✨ Make your changes
# Edit files, add tests, update docs

# 4. βœ… Verify quality
yarn test                    # Run tests
yarn build                   # Ensure it builds

# 5. πŸ“ Commit with clear message
git commit -m "feat: add amazing feature that does X"

# 6. πŸš€ Push and create PR
git push origin feature/amazing-feature
gh pr create --title "Add amazing feature" --body "Description of changes"

🎯 Contribution Types

Type Description Examples
πŸ› Bug Fixes Fix broken functionality Resolve search issues, fix styling
✨ Features Add new capabilities New UI components, API integrations
πŸ“š Documentation Improve project docs README updates, code comments
⚑ Performance Speed improvements Bundle optimization, caching
🧹 Refactoring Code quality improvements TypeScript migration, cleanup
πŸ”’ Security Security improvements Vulnerability fixes, updates

πŸ“‹ Contribution Guidelines

  • βœ… Follow Code Style - ESLint + Prettier enforced
  • βœ… Write Tests - Maintain 90%+ coverage
  • βœ… Update Docs - Keep README and comments current
  • βœ… Small PRs - Focused, reviewable changes
  • βœ… Clear Commits - Use conventional commit format
  • βœ… Security First - Report vulnerabilities privately (see SECURITY.md)

πŸ“– Detailed guidelines: See CONTRIBUTING.md for complete information

πŸ”’ Security

We take security seriously. If you discover a security vulnerability:

οΏ½ Project Stats

GitHub repo size GitHub code size in bytes GitHub last commit GitHub commit activity


οΏ½πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸŽ‰ Free to use, modify, and distribute!


πŸ™ Acknowledgments

Podr stands on the shoulders of giants:

πŸš€ Performance Preact - Lightning-fast React alternative Rush Stack - Enterprise build tools

🎨 Design Pico.css - Elegant minimal framework PostCSS - Modern CSS processing

☁️ Infrastructure Netlify - Global edge deployment GitHub Actions - CI/CD automation


🎡 Made with ❀️ by the Podr team

Empowering podcast discovery, one search at a time

⭐ Give us a star if Podr helped you discover amazing podcasts!

About

Podcast player for the web

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •