Back to templates

Template details

Radio-T Site

Hugo-based website and Dockerized publishing scripts for the Russian tech podcast Radio-T.

About this template

Radio-T Site is a Hugo-powered repository that builds the Radio-T podcast website and automates episode publishing with Dockerized scripts. It combines a static site generator with a frontend build pipeline and a set of make-based publisher commands for handling episode metadata, MP3 tagging, and deployment.

What is Radio-T Site?

Radio-T Site is the source repository for the Russian technology podcast Radio-T. It contains a Hugo static site generator, a frontend build pipeline using Node and Go, and a set of make-based publisher scripts that prepare and upload podcast episodes. The site takes episode topics from news.radio-t.com and episode numbers from the site API, and outputs a fully generated static site with MP3 files tagged and distributed to content nodes.

Key Features

  • Hugo static generation — The site is built with Hugo v0.160.1; running docker compose run --rm hugo regenerates the static site, with production assets output to hugo/static/build/ and a manifest written to hugo/data/manifest.json.
  • Docker-based build — Both the Hugo site and the publisher image are built through docker compose, making the environment reproducible; the publisher service expects the MP3 folder mounted as a volume.
  • Episode template creation — make new fetches topics from the news feed and the next episode number from the API, then creates a ready-to-edit episode markdown template.
  • Next-topic preparation — make prep generates a "Темы для ..." template for the upcoming episode, also pulling the episode number from the site API.
  • MP3 tagging and distribution — make upload-mp3 EPISODE=685 embeds ID3 tags and cover art into the episode file, then pushes it to multiple nodes via an external Ansible container.
  • One-command deployment — make deploy commits changes, triggers a push and build on master, then builds the chat log and clears episode topics.
  • Dual dev modes — npm run dev runs Hugo LiveReload on localhost:3000 without turbolinks, while npm run dev:turbo disables LiveReload and enables turbolinks for a different editing experience.
  • Defined asset layout — Logos live in src/images/, favicons in static/ described by layouts/partials/favicons.html, and episode covers in static/images/covers/ with legacy cover.jpg and cover_rt_big_archive.png kept for compatibility.

Who is it for?

Radio-T Site is built for podcast producers and maintainers who want a scriptable pipeline from episode topics to a deployed site. It suits developers who need Docker-based reproducible builds for Hugo and Node frontends, and for anyone automating MP3 metadata and Ansible-based distribution. Contributors to the Radio-T podcast will find the make commands tailored to their editorial workflow.

What can you do with it?

  • Podcast editors: create episode drafts with make new, pulling topics from the show's news feed automatically.
  • Community moderators: prepare the next episode's topic thread with make prep, using the official API to set the correct number.
  • Release engineers: tag and upload an MP3 using make upload-mp3 EPISODE=685, which also sends the file to content nodes over Ansible.
  • Maintainers: deploy the whole site with make deploy, which handles git commit, remote build, chat log generation, and topic cleanup.

How does it work?

The project splits into two parts: the Hugo site generation and the publishing scripts in the ./publisher directory. First, build both Docker images with docker compose. Then, use make new or make prep to scaffold content, make upload-mp3 to process and distribute audio, and make deploy for the final deployment. Environment variables RT_NEWS_ADMIN and PODCAST_ARCHIVE_CREDS provide credentials for the news API and SFTP archives.

FAQ

Does Radio-T Site work without Docker?

The documented workflow relies on docker compose to build the Hugo site and the publisher image, and the publisher commands expect a ready publisher container. While the frontend build can run directly with Node and Go, the recommended path is container-based.

What versions are required for the frontend?

The frontend dependencies list Node v22, GoLang, and Hugo v0.160.1. The commands run through npm scripts in the hugo directory.

How do I upload a specific episode MP3?

Run make upload-mp3 EPISODE=685 from the publisher directory, after mounting the directory containing the MP3 files as a volume in the docker compose configuration for the publisher service.

What environment variables are needed?

RT_NEWS_ADMIN holds the user:passwd pair for the news admin, and PODCAST_ARCHIVE_CREDS stores user:passwd for SFTP archives. These are required for publisher operations.

screenshot of Radio-T Site on template0.com