Tellyport: Random TV Episode Picker for Your Favorite Shows
Building a Random TV Episode Selector: Why I Built Tellyport
We all have our favorite TV shows. Sometimes, we want to rewatch an old show that we love, but choosing which episode to watch is the hardest part. If only we could teleport to an episode without overthinking it…
That’s exactly what Tellyport does—a random TV episode picker that eliminates decision fatigue. It’s a pretty straightforward idea: stop overthinking which episode to watch and just let the app pick one for you.
How the Random Episode Generator Works
You search for any TV show and boom—you get a random episode to watch. No more scrolling through episode lists trying to remember “which season was that good episode in?” The TV show randomizer grabs data from The Movie Database (TMDb) API and shows you:
- Episode title and overview
- Season and episode number
- Air date
- Episode artwork
Basically, it’s shuffle mode for TV shows—a feature that streaming platforms really should have built-in by now.
Tech Stack: Building with Svelte and Deno
I built this as a full-stack app with Deno on the backend and Svelte on the frontend.
Building the Backend API with Deno and TypeScript
I went with Deno for the backend API because:
- TypeScript just works out of the box—no config files needed
- Built-in security with explicit permissions
- Native fetch API, so no need to install HTTP libraries
- Honestly, no
node_modulesfolder is refreshing
The API is structured around use cases with modules for searching TV shows, picking random episodes, managing API keys, and rate limiting. Pretty standard stuff, but Deno made it feel cleaner than usual.
Creating the Frontend with Svelte
For the frontend, I used Svelte. If you haven’t tried Svelte yet, you’re missing out—it’s ridiculously nice to work with. Minimal boilerplate, great reactivity, and the file-based routing is super intuitive. I built a few reusable components (Card, Pagination) and pre-rendered the pages for better performance.
Why Choose Deno and Svelte?
Honestly, I just wanted to play with Deno and Svelte. I’d heard good things about both, and they didn’t disappoint. Both have first-class TypeScript support, which meant I could move fast without worrying about type errors popping up later.
Key Features of the TV Episode Randomizer
TV Show Search with TMDb Integration
Search pulls from TMDb’s database, so you get show posters, descriptions, and all that good metadata. There’s pagination too, so you can scroll through results if your show doesn’t pop up right away.
Random Episode Selection
When you pick a show, the app grabs all the seasons and episodes, then uses a proper random selection algorithm. Every episode has an equal shot—no sneaky bias toward recent seasons.
API Key Management and Rate Limiting
I added a simple registration system that generates API keys. Had to learn about secure key generation and rate limiting to keep things from getting abused. Not the most exciting feature, but necessary.
Development Challenges and Solutions
Integrating The Movie Database (TMDb) API
TMDb’s API is solid, but integrating external APIs means dealing with rate limits, caching strategies, and the occasional network hiccup. I also had to normalize data since different endpoints return things in slightly different formats.
Deploying a Deno Application on Deno Deploy
Getting this deployed was actually pretty smooth thanks to Deno Deploy. It’s Deno’s serverless platform, and it’s ridiculously easy to use. You literally just point it at your GitHub repo and it handles the rest. No Docker configs, no complex build steps—just push your code and it deploys.
The platform gives you:
- Automatic deployments from GitHub
- Edge deployment (your code runs close to your users)
- Built-in HTTPS
- Zero cold starts
The Deno ecosystem is still smaller than Node’s, but tools like Deno Deploy make up for it with simplicity. Plus, not dealing with node_modules in production is a win.
Frontend State Management in Svelte
The usual frontend challenges: loading states, error messages that don’t sound like robot speak, and keeping search state intact when users navigate around. Nothing groundbreaking, but important for making the web app feel smooth.
Future Features for the Random Episode Picker
I’ve got a running list of features I might add if I find the time:
Episode Filters and User Preferences
- Filter by season or exclude certain ones
- “Never show me this episode again” button
- Maybe weight the randomization toward episodes you favorite
Social and Sharing Features
- Share your random episode with friends
- Watch history so you don’t get the same episode twice in a row
- See what episodes other people are getting
Streaming Service Integration
- Deep links to streaming services
- “Where to watch” info for Netflix, Hulu, Disney+, and more
- Some kind of watch party feature maybe?
Smart Randomization Algorithms
- Weight randomization by episode ratings
- “Give me a fan favorite” mode
- Group by themes (holiday episodes, season finales, etc.)
Try the Random TV Episode Generator
Check out Tellyport if you’re like me and spend 20 minutes deciding what to watch. Sometimes the best solution is just letting the computer decide for you.
This project started because I have enough decisions to make each day, why stress about picking a TV show? But it turned into a fun excuse to play with Deno and Svelte. Plus, I actually use it.
If you’re interested in building your own TV show randomizer or want to see the source code, the project demonstrates how to integrate The Movie Database API, build with modern JavaScript frameworks, and deploy serverless applications.
Happy watching! 📺✨