All Projects → pubcast → Pubcast

pubcast / Pubcast

Licence: mpl-2.0
An experimental ActivityPub based podcasting platform.

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Pubcast

Reel2bits
Self-hosted Soundtracks and Podcasts sharing, with ActivityPub federation.
Stars: ✭ 128 (+52.38%)
Mutual labels:  activitypub, podcasts
Podlive Macos
Never miss a live streaming podcast!
Stars: ✭ 40 (-52.38%)
Mutual labels:  podcasts
Repl
The Learning Hub for UoL's Online CS Students
Stars: ✭ 367 (+336.9%)
Mutual labels:  podcasts
Lemmy
🐀 Building a federated link aggregator in rust
Stars: ✭ 5,728 (+6719.05%)
Mutual labels:  activitypub
Awesome Activitypub
Awesome list of ActivityPub based projects
Stars: ✭ 401 (+377.38%)
Mutual labels:  activitypub
Mastodon
Your self-hosted, globally interconnected microblogging community
Stars: ✭ 26,120 (+30995.24%)
Mutual labels:  activitypub
Awesome Russian It
📖 🎧 📺 📆 Список полезных русскоязычных ресурсов, связанных с ИТ
Stars: ✭ 323 (+284.52%)
Mutual labels:  podcasts
Winds
A Beautiful Open Source RSS & Podcast App Powered by Getstream.io
Stars: ✭ 8,530 (+10054.76%)
Mutual labels:  podcasts
Sermon Manager
Sermon Manager for WordPress is the #1 plugin for churches who want to manage their sermons easily and missionally.
Stars: ✭ 35 (-58.33%)
Mutual labels:  podcasts
Infosec getting started
A collection of resources/documentation/links/etc to help people learn about Infosec and break into the field.
Stars: ✭ 526 (+526.19%)
Mutual labels:  podcasts
Microblog.pub
A self-hosted, single-user, ActivityPub powered microblog.
Stars: ✭ 493 (+486.9%)
Mutual labels:  activitypub
Frontend Feed
🇧🇷 Lista de blogs e sites úteis para frontenders
Stars: ✭ 416 (+395.24%)
Mutual labels:  podcasts
Virtualproduction Vrchat
Multicam Virtual Reality Production Rig + Crane + Overlays for VRChat
Stars: ✭ 18 (-78.57%)
Mutual labels:  podcasts
Aardwolf
Powering connected social communities with open software.
Stars: ✭ 379 (+351.19%)
Mutual labels:  activitypub
Resources
Here is a list of best resources to get you started with learning how to code (mostly related to Web Development). Feel free to add your favorite resources as well and help others in their journey of learning.
Stars: ✭ 1,037 (+1134.52%)
Mutual labels:  podcasts
Activity
ActivityStreams & ActivityPub in golang, oh my!
Stars: ✭ 373 (+344.05%)
Mutual labels:  activitypub
Bookwyrm
Social reading and reviewing, decentralized with ActivityPub
Stars: ✭ 483 (+475%)
Mutual labels:  activitypub
Homehost
self-hosted, Netflix-like app made for streaming
Stars: ✭ 564 (+571.43%)
Mutual labels:  podcasts
Podstation
podStation is a web podcast aggregator for Chrome.
Stars: ✭ 76 (-9.52%)
Mutual labels:  podcasts
Reach Podcast Player
This is a rss-based podcast player made in electron and angular!
Stars: ✭ 49 (-41.67%)
Mutual labels:  podcasts

🎙 Pubcast

Gitter chat

An experimental (Read: not-usable or in anyway done) distributed/federated podcasting platform based on ActivityPub.

Usage

Getting started:

Ensure that you're using go11 with go-modules turned on.

export GO111MODULE=on # Put this in your .zshrc or .bash_profile or whatnot

Clone/Download the project with:

go get github.com/pubcast/pubcast

Building a binary with make (or mmake if you're fancy):

make

Building and then running that binary:

make run

Running tests:

make test

Setting up your database (this works best if you have postgres already running locally):

make database

Creating a new migration in db/migrations:

make migration NAME=some_name_here

Learning about ActivityPub

explaination

Basic Description

ActivityPub gives every user (or actor in it's vocab) on a server an "inbox" and an "outbox". But these are really just endpoints:

https://myactpub.site/activity/user/flaque/inbox
https://myactpub.site/activity/user/flaque/outbox

ActivityPub asks that you accept GET and POST requests to these endpoints where a POST tells a the server to put that in a user's queue or feed and GET lets the user retrieve info from the feed.

You send messages called ActivityStreams that are really just a special spec of JSON:

{"@context": "https://www.w3.org/ns/activitystreams",
 "type": "Create",
 "id": "https://social.example/alyssa/posts/a29a6843-9feb-4c74-a7f7-081b9c9201d3",
 "to": ["https://chatty.example/ben/"],
 "author": "https://social.example/alyssa/",
 "object": {"type": "Note",
            "id": "https://social.example/alyssa/posts/49e2d03d-b53a-4c4c-a95c-94a6abf45a19",
            "attributedTo": "https://social.example/alyssa/",
            "to": ["https://chatty.example/ben/"],
            "content": "Say, did you finish reading that book I lent you?"}

Objects, Actors, and Activities

(Note: Pubcast uses a slightly different internal naming than ActivityPub. To have more understandable code in the context of podcasts, ActivityPub's Organization actor type is a Show inside Pubcast. Additionally, the Object type is a Pubcast Episode.)

ActivityPub is based on a formalized vocabulary of data types, actions and folks doing the actions.

An Object is a generic data type written in JSON:

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Object",
  "id": "http://www.test.example/object/1",
  "name": "A Simple, non-specific object"
}

Objects have a set collection of formalized properties such as id, name, url, etc but you technically can create your own. Objects serve as a base type for other Activity Steam's core set of types.

For example, there are a set of actor types that themselves are Objects.

/* A "Person" actor type */
{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Person",
  "name": "Sally Smith"
}

Activities are also subtypes of Object, and are used to describe relationships between objects. Some examples of activities include:

  • Accept
  • Create
  • Move
  • Question
  • Undo
  • Follow
  • View

An Activity json might look something like this:

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally created a note",
  "type": "Create",
  "actor": {
    "type": "Person",
    "name": "Sally"
  },
  "object": {
    "type": "Note",
    "name": "A Simple Note",
    "content": "This is a simple note"
  }
}

Links

Design

Podcast Object

Podcasts include four main pieces of information: the header info, the shownotes, the preview, and the audio. A Header includes the title and date of the show. Shownotes are a collection of info about the show; they're basically an HTML supported description. A preview is an image thumbnail for the show. Audio is the actual stuff you're listening to.

A Podcast ActivityStream Object can therefore look something like this:

"object" : {
 "id": "https://example.org/activity/organization/npr/planet-money",
 "type": "Podcast",
 "name": "This American Life",
 "date": "2008-09-15T15:53:00",
 "shownotes": "Check out our <a href='foo.com'>website!</a>",
 "preview": {
    "type": "Image",
    "href": "http://example.org/album/máiréad.jpg",
    "mediaType": "image/jpeg"
  },
  "audio": {
    "type": "Audio",
    "href": "https://example.org/activity/organization/npr/planet-money/episodes/1.mp4",
    "mediaType": "audio/mp4"
  }
}
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].