All Projects → podlove → Radiator

podlove / Radiator

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

Programming Languages

elixir
2628 projects

Projects that are alternatives of or similar to Radiator

Phauxth
Authentication library for Phoenix, and other Plug-based, web applications
Stars: ✭ 418 (+442.86%)
Mutual labels:  phoenix-framework
Elixir Phoenix Realworld Example App
Exemplary real world application built with Elixir + Phoenix
Stars: ✭ 764 (+892.21%)
Mutual labels:  phoenix-framework
Sobelow
Security-focused static analysis for the Phoenix Framework
Stars: ✭ 1,103 (+1332.47%)
Mutual labels:  phoenix-framework
Canary
🐣 Elixir authorization and resource-loading library for Plug applications.
Stars: ✭ 450 (+484.42%)
Mutual labels:  phoenix-framework
Phoenix Battleship
The Good Old game, built with Elixir, Phoenix, React and Redux
Stars: ✭ 503 (+553.25%)
Mutual labels:  phoenix-framework
Guardian auth
The Guardian Authentication Implementation Using Ecto/Postgresql Elixir Phoenix [ User Authentication ]
Stars: ✭ 15 (-80.52%)
Mutual labels:  phoenix-framework
Cercle
Cercle is a CRM+Project Manager for your organization - Phoenix Framework & Vuejs
Stars: ✭ 284 (+268.83%)
Mutual labels:  phoenix-framework
Firebird
Template for Phoenix 1.3 projects
Stars: ✭ 66 (-14.29%)
Mutual labels:  phoenix-framework
Fun with flags
Feature Flags/Toggles for Elixir
Stars: ✭ 554 (+619.48%)
Mutual labels:  phoenix-framework
Elixirbooks
List of Elixir books
Stars: ✭ 1,021 (+1225.97%)
Mutual labels:  phoenix-framework
Matestack Ui Core
Matestack enables you to create sophisticated, reactive UIs in pure Ruby, without touching JavaScript and HTML. You end up writing 50% less code while increasing productivity, maintainability and developer happiness.
Stars: ✭ 469 (+509.09%)
Mutual labels:  phoenix-framework
Awesome Phoenix
🔥 Collection of awesome open-source apps made with Phoenix Framework
Stars: ✭ 481 (+524.68%)
Mutual labels:  phoenix-framework
Phoenix mjml
Phoenix Template Engine for Mjml
Stars: ✭ 35 (-54.55%)
Mutual labels:  phoenix-framework
React Phoenix
Make rendering React.js components in Phoenix easy
Stars: ✭ 426 (+453.25%)
Mutual labels:  phoenix-framework
Phoenix In Action
Code snippets and examples from the book Phoenix in Action from Manning and Geoffrey Lessel
Stars: ✭ 60 (-22.08%)
Mutual labels:  phoenix-framework
Hammer
An Elixir rate-limiter with pluggable backends
Stars: ✭ 366 (+375.32%)
Mutual labels:  phoenix-framework
Phoenix routes js
Phoenix routes helpers in JavaScript code.
Stars: ✭ 17 (-77.92%)
Mutual labels:  phoenix-framework
Ex admin
ExAdmin is an auto administration package for Elixir and the Phoenix Framework
Stars: ✭ 1,180 (+1432.47%)
Mutual labels:  phoenix-framework
Shorten api tutorial
🔗How to make a link shortener using Elixir, Phoenix and Mnesia
Stars: ✭ 60 (-22.08%)
Mutual labels:  phoenix-framework
Bucklescript Phx
BuckleScript binding for Phoenix Channel/Presence
Stars: ✭ 42 (-45.45%)
Mutual labels:  phoenix-framework

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].