8000 GitHub - cascadiacollections/podr: Podcast player for the web
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

cascadiacollections/podr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

🎧 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 20+ (24+ recommended) nodejs.org
Yarn Latest 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

πŸ”„ Development Workflow

# 1. Start development
yarn start              # Launch dev server

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

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

# 4. 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 - Rush Stack configuration
  • 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
yarn format             # Format with Prettier
yarn type-check         # TypeScript validation

πŸ§ͺ 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 lint                    # Check code style
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

πŸ“‹ 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

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

οΏ½ 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!

Releases

No releases published

Packages

 
 
 
3C23

Contributors 4

  •  
  •  
  •  
  •  
0