Skip to content

Free and open source self-hosting serverless podcast solution

License

Notifications You must be signed in to change notification settings

advanced-astro/astropod

 
 

Repository files navigation

Astropod | Free and Open Source Serverless Podcast

Built with Astro License: MIT GitHub Repo Stars

Astropod is a free and open-source self-hosting serverless podcast solution. It supports diverse deployment services and audio hosting options and includes a customizable website deployable in a few clicks, with a personalized domain and a user-friendly CMS for effortless podcast management.


Demo and Tutorial

View a live demo and a tutorial step by step of how deploy and configure your podcast with Astropod.

👉️ https://getastropod.vercel.app


Quick deploy

Deploy to Netlify Deploy with Vercel

  • Click the Deploy button to copy this project to your own GitHub or GitLab account and deploy your podcast with Netlify in minutes. ✨

  • Once you’ve got the project set up, you do need to activate Netlify Identity in the Netlify UI, the “Git Gateway” to allow e-mail/password authentication and you are ready to go.


Deployment Services

Astropod is build in the top of Astro framework and is ready to be deployed in the deployments services like GitHub Pages, Netlify, Vercel, Cloudflare, AWS and much more.

The configuration for the deployment varies depending on the platform where you are going to do it. See the official Astro information to deploy your website.

File storage

Astropod is designed to work with any file storage solution.

You can host your podcast files in your own code base inside the folder public/audio and this will automatically work with git LFS but free plans in GitHub and GitLab for LFS are limited so take that in mind. Create a file public/audio/.gitattributes with the following content to use this option.

*.aac filter=lfs diff=lfs merge=lfs -text
*.m4a filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.opus filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text

You can also host your podcast files in any other cloud storage solution like DropBox, Google Drive, Cloudinary or on your own server. Once you upload your audio file you just need to copy the public URL of the audio file into your episode AudioUrl field.

For free unlimited cloud file storage we recommend use Internet Archive.

Content Management System

Astropod is designed in such a way that you can use it directly from the source code by editing the configuration files found in the /.astropod folder and modifying the episode markdown files contained in the folder /src/content/episode.

In order to manage podcast in a simpler way, Astropod is configured by default with the CMS Serverless Decap which allows collaborative work, authentication with email or other providers and simple management.

For the easiest use of Decap we recommend deploying Astropod on Netlify since the authentication system is integrated into the platform and is configured natively. If you would like to facilitate your own OAuth authentication rather than use Netlify's service or a client side flow like implicit or PKCE, you can use one of this community-maintained projects.

The fact that Astropod comes configured by default with Decap does not mean that it is the only CMS with which it can work, if you prefer to use another CMS like Sanity, WordPress, Strapi, Tina, or any other you can follow Astro's integration guides to your integrate your favorite CMS.

Tech Stack

Requirements

  • Node 18.17.1 or higher

Commands

All commands are run from the root of the project, from a terminal:

Command Action
pnpm i Installs dependencies
pnpm dev Starts local dev & Netlify CMS proxy servers
pnpm build Build your production site to ./dist/
pnpm format Format source code
pnpm preview Serve ./dist/ & run the Netlify CMS proxy server

These commands are using pnpm, but you can choose to use npm or yarn instead if you prefer.

Project Structure

├──📂src
│   ├──📁components        // UI components
│   ├──📂content
│   │   └──🗂️episode       // Podcast episodes folder
│   ├──📁layouts           // UI Layouts
│   ├──📁helpers           // App helpers like static data or functions
│   └──📂pages
│       └──📃rss.xml.js    // Feed RSS generation file
├──📁.astropod             // Astropod config
├──📄astro.config.mjs      // Astro config
└──📄decap.config.mjs      // Decap config

Contributing

Suggestions and pull requests are welcomed! Feel free to open a discussion or an issue for a new feature request or bug.

One of the best ways of contribute is to grab a bug report or feature suggestion that has been marked accepted and dig in.

Please be wary of working on issues not marked as accepted. Just because someone has created an issue doesn't mean we'll accept a pull request for it.

License

Astropod is licensed under the MIT license — see the LICENSE file for details.

Contributors

Contributors

Made with contrib.rocks.

About

Free and open source self-hosting serverless podcast solution

Topics

Resources

License

Stars

Watchers

Forks

Languages

  • Astro 75.6%
  • JavaScript 22.8%
  • TypeScript 1.6%