Skip to content
Podcast Hosting & Publishing | The spark ✨ that lights the fire πŸ”₯
Branch: master
Clone or download
Latest commit fa38667 May 16, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets upgrade tailwind to 1.0 (#66) May 15, 2019
bin redo storage; upload enclosures to episodes Feb 21, 2019
config Docker deployment (#60) May 12, 2019
guides
lib fix(feed): fix enclosure, add itunes:summary (#70) May 16, 2019
priv Public file access & Download Tracking (#59) May 15, 2019
test feat(api,graphql): add episodesCount to podcast GraphQL queries (#67) May 15, 2019
.dockerignore chore: add .dockerignore May 16, 2019
.drone.yml chore: only build docker image on master May 15, 2019
.formatter.exs
.gitignore
.iex.exs Public file access & Download Tracking (#59) May 15, 2019
CONTRIBUTING.md doc: add `CONTRIBUTING.md` to facilitate a contributing structure Apr 8, 2019
Dockerfile
LICENSE Create LICENSE Mar 13, 2019
README.md
docker-compose.yml Docker deployment (#60) May 12, 2019
entrypoint.sh Docker deployment (#60) May 12, 2019
mix.exs Public file access & Download Tracking (#59) May 15, 2019
mix.lock Public file access & Download Tracking (#59) May 15, 2019
notes.md

README.md

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 up

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 policy 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

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.

You can’t perform that action at this time.