• Stars
    star
    121
  • Rank 292,942 (Top 6 %)
  • Language
    Elixir
  • License
    MIT License
  • Created over 5 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Podcast Hosting & Publishing | The spark ✨ that lights the fire 🔥

Radiator 🔥

Radiator is the 100% open source podcast hosting project for the next century of the internet.

Build Status

Status

We are still in an exploration phase. Technically the foundation for hosting a podcast with a valid RSS feed is there but it's very simplistic and missing features left and right. Using this in production is not recommended yet as breaking changes will occur without prior notice.

Built With

  • Phoenix Framework — the backend API (currently both GraphQL and REST endpoints) and (currently) admin interface
  • PostgreSQL — main data store
  • Minio — private cloud storage for audio and image files
  • Vue.js — JavaScript framework

Development

Docker Deployment

If you just want to take a look at the project, you can deploy a ready-to-run stack with docker-compose:

git clone https://github.com/podlove/radiator
cd radiator/docker-compose
docker-compose up

Then access the following services:

Service URL
Radiator http://localhost:4000
Minio http://localhost:9000
MailHog http://localhost:8025
GraphiQL http://localhost:4000/api/graphiql

For full deployment and options please see radiator-deploy

This compose file stores its persistent data in docker volumes, so to cleanly reset you need to delete them after a docker-compose down with docker volume rm rad_minio_config rad_minio_data rad_psql_db

Minio Setup

  • Install minio
  • Install minio client
  • start minio and take note of the AccessKey and SecretKey in the startup notice (for example manually minio server ./data)
  • configure minio client:
mc config host add radiator http://127.0.0.1:9000 <AccessKey> <SecretKey>
  • setup minio:
mc mb radiator/radiator
mc mb radiator/radiator-test
mc policy set public radiator/radiator

Phoenix Setup

git clone https://github.com/podlove/radiator.git
cd radiator

# start postgres

# set minio access keys in config/config.exs
#   config :ex_aws,
#     access_key_id: "<AccessKey>",
#     secret_access_key: "<SecretKey>",
#     json_codec: Jason

mix deps.get
mix ecto.create
mix ecto.migrate
cd assets && npm install
cd ..
mix phx.server

Seed database with data for development (unless you did mix ecto.reset, it runs seeds automatically):

mix run priv/repo/seeds.exs

Creates:

  • "ACME" network
  • user "admin" with password "password"

Download UserAgent database for tracking:

mix ua_inspector.download --force

⚠️ Migrations during development ⚠️

During the early stages of development we edit existing migrations to keep them readable instead of adding new ones as you would expect in a live system.

So whenever you pull an update that changed a migration, you need to:

mix ecto.reset
env MIX_ENV=test mix ecto.reset

API

At the moment both GraphQL and REST endpoints are available. The aim is to provide a full GraphQL api as primary target and some basic REST endpoints for quick usecases.

GraphQL

Entrypoint: /api/graphql

Open http://localhost:4000/api/graphiql for schema and documentation exploration.

For calls that need authentication, make sure to put the token gotten from a

mutation {
	authenticatedSession(
		username_or_email: "admin",
		         password: "password" ) {
		token
	}
}

request into the Authorization: Bearer <token> header.

REST

⚠️ The REST API has not been updated in a long time and is probably out of order. For now, use GraphQL if you can.

Follows HAL+json specification.

Entrypoint: /api/rest/v1

Some endpoints:

  • /api/rest/v1/podcasts
  • /api/rest/v1/podcasts/:podcast_id
  • /api/rest/v1/podcasts/:podcast_id/episodes
  • /api/rest/v1/podcasts/:podcast_id/episodes/:episode_id
  • /api/rest/v1/files

Admin Interface

At http://localhost:4000/admin/podcasts you will find a simple admin interface to manage podcasts and episodes. There is no concept of users yet, so there is no registration, login or any kind of authentication.

Network

Edit Podcast

License

Radiator is MIT Licensed.

More Repositories

1

podlove-web-player

Podlove Web Player is a Podcast-optimized, HTML5-based audio player based on VueJS.
JavaScript
354
star
2

podlove-publisher

Podlove Podcast Publisher for WordPress
PHP
294
star
3

podlove-ui

Monorepo for all UI related projects like Web Player and Subscribe Button
TypeScript
83
star
4

podlove-subscribe-button

Universal button to subscribe to buttons in the desired podcast client or player website
CoffeeScript
61
star
5

html5-audio-driver

Pure HTML5 Audio Driver
TypeScript
34
star
6

podlove-specifications

Specfications by the Podlove Project in MultiMarkdown format
20
star
7

webvtt-parser

PHP library to parse WebVTT files.
PHP
15
star
8

podlove-timeline

PHP library providing a toolkit to handle various timeline/chapter formats.
PHP
8
star
9

podlove-subscribe-button-wp-plugin

WordPress plugin integrating the Podlove Subscribe Button
PHP
8
star
10

documentation

Guides & Documentation
MDX
7
star
11

podlove-web-player-v3

Podlove Webplayer v3 - Maintenance Repository
JavaScript
7
star
12

metalove

Elixir library to ingest podcast feeds and metadata, including chapter marks and id3 information.
Elixir
7
star
13

subscribe

Hosted site to easily share podcast subscription links.
Elixir
6
star
14

podlove-web-player-wp-plugin

WordPress plugin integrating the Podlove Web Player
PHP
6
star
15

radiator-cms

Frontend for Podlove Radiator
CSS
6
star
16

podlove-validator

The Podlove Feed Validator
XSLT
6
star
17

podlove-subscribe-button-website

Promotional website for the Podlove Subscribe Button
HTML
4
star
18

podlovers.org

Static Frontend Generator for Podcasts created with Podlove Publisher
Vue
4
star
19

next

Playground for the Podlove NG Core. deprecated, go there instead:
Elixir
4
star
20

hal

Elixir library to generate JSON HAL responses
Elixir
3
star
21

podlove-beta-tester

WordPress plugin to enable pre-release updates for our plugins
PHP
2
star
22

podlove-preview

Turns podcast feeds into websites
Elixir
2
star
23

podlove-subscribe-button-testsite

Testing website to allow podcast clients to test their subscription URI schemes
PHP
1
star
24

podlove-web-player-v4

Documentation for Podlove Web Player 4
1
star
25

radiator-deploy

Documentation and Sources on how to deploy Radiator (Currently Docker)
Dockerfile
1
star
26

source-publisher

Gridsome Plugin for Podlove Publisher APIs
JavaScript
1
star
27

radiator-deprecated

deprecated repo, use podlove/radiator instead
Elixir
1
star
28

cdn

Podlove CDN assets
HTML
1
star
29

radiator-media-sketch

Thinking out in code -- playing with a media file API for Radiator
Elixir
1
star