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.

21CTO
21CTO
21CTO
How One Engineer Built a Full‑Featured Podcast Search Engine Solo

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 web

Monitoring

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.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

ReactDevOpsDjangoAWSAnsiblepodcast search engine
21CTO
Written by

21CTO

21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.