How One Engineer Built a Full‑Featured Podcast Search Engine Solo
This article details how a single engineer created Listen Notes, a podcast search engine and API, by leveraging standard web technologies, AWS infrastructure, Django backend, React frontend, Ansible-driven DevOps, and a suite of monitoring and productivity tools, proving that a solo effort can launch a robust internet product.
Overview
Listen Notes is a podcast search engine and database that offers a website for listeners (search, "listen later" playlists, audio clips, and keyword alerts) and a developer API for programmatic access.
Infrastructure
The service runs entirely on AWS. As of May 5, 2019, twenty servers handle different roles:
production-web – serves web traffic for ListenNotes.com.
production-api – serves API traffic (v1api and v2api).
production-db – runs PostgreSQL primary and replica.
production-es – runs an Elasticsearch cluster.
production-worker – processes offline jobs for database updates and recommendation features.
production-lb – load balancer that also hosts Redis and RabbitMQ.
production-pangu – a flexible server for one‑off scripts and tests.
Servers are named with a numeric suffix (e.g., production-web1) to allow easy horizontal scaling.
Backend
The backend is built with Django on Python 3, running on Ubuntu. uWSGI serves the application behind NGINX, which acts as a load balancer. Primary data stores are PostgreSQL (relational data) and Redis (caching, statistics). Elasticsearch indexes podcasts and episodes for search. Celery handles background processing, with Celery Beat for scheduled tasks. Supervisord manages processes on each server. The author deliberately avoids Docker/Kubernetes, noting that over‑engineering can be counter‑productive for a small team.
Frontend
The web frontend uses React, Redux, Webpack, and modern JavaScript. Bundles are uploaded to Amazon S3 and delivered via CloudFront. Pages are a mix of server‑side rendering (Django templates) and client‑side React components, with some fully server‑rendered pages for SEO and simplicity.
Audio Player
A heavily customized react-media-player component powers the audio player used on ListenNotes.com, embedded players on Twitter, and third‑party sites.
Podcast API
The developer API mirrors the website stack: the same Django/Python backend and React‑based dashboard/documentation.
DevOps
Infrastructure provisioning and code deployment are managed with Ansible YAML playbooks. Deployment is performed via a deploy.sh script with three arguments (environment, repo version, server type). The process clones the repository on the target host, checks out the specified version, installs dependencies, and restarts services via supervisorctl. The author prefers this simple approach over complex CI pipelines.
./deploy.sh production HEAD webMonitoring
Datadog provides metrics and alerts, integrated with PagerDuty for phone/SMS notifications. Rollbar monitors Django exceptions and sends alerts to email and Slack. Slack webhooks are also used to notify the author of key user actions.
Development Environment
The author works from a WeWork office using a MacBook Pro, Vagrant + VirtualBox for a local replica of the production stack, and a monorepo that contains all code (backend, frontend, DevOps scripts). Development is done in PyCharm.
Tools & Services
iTerm2, tmux – terminal utilities.
Notion – documentation and task tracking.
G Suite – email and calendar.
MailChimp, Amazon SES – email newsletters and transactional mail.
Gusto, Upwork – payroll and contractor hiring.
Google Ads Manager – advertising.
Cloudflare – DNS, CDN, firewall.
Zapier, Trello – workflow automation.
Medium – blog platform.
GoDaddy, Namecheap – domain registration.
Stripe, Stripe Atlas – payments and company incorporation.
Clerky – legal documents for financing.
Quickbooks – accounting.
1Password – credential management.
Brex, Amex Business – credit cards and AWS credits.
Conclusion
The article argues that with today’s abundant tools and services, a single engineer (or a tiny team) can build a production‑grade internet product without hiring many staff, emphasizing pragmatic, “boring” technology choices over hype.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
21CTO
21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
