Skip to content

webbgeorge/castkeeper

Repository files navigation

CastKeeper

CastKeeper is a free application for archiving podcasts. It is designed to be easy to self-host, published as a Docker container. It supports a variety of file storage options.

CastKeeper was built primarily to do 2 things:

  1. Store copies of podcasts, safe from being taken offline or being modified (e.g. due to abandonment or editorial changes), allowing for future re-listening.
  2. Transcribe and index the text content of those podcasts, allowing searching for when certain topics were discussed (coming very soon in a future release).

Getting started

Documentation

The CastKeeper documentation is available at castkeeper.org.

Contributing

Contributions are welcome. If you wish to contribute more than bug-fixes, please start a discussion in GitHub issues first to ensure the feature is desired - as I want to make sure your time isn't wasted.

Developer guide

Prerequisites

  • Go 1.25
  • Node.js 22
  • Docker and Docker Compose (or equivalent)
# Install tools and dependencies
make install

Running tests

# Run unit tests + static analysis checks
make test

# Run unit tests only
go test ./... -short -count=1

# Run E2E tests
docker compose up -d
make test_e2e

Running local development server (default configuration)

To run locally with the default configuration, using local object storage:

# Create a user to log in with (first time only)
make create_user USERNAME=testuser

# Run server
make run

# or, watch and rebuild on file changes
make watch

Visit the web UI at: http://localhost:8080

Running local development server (alt configuration)

To run locally with the alt configuration, using S3 (localstack):

# Start Docker Compose
docker compose up -d

# Create a user to log in with (first time only)
make create_user_alt_config USERNAME=testuser

# Run server
make run_alt_config

Visit the web UI at: http://localhost:8081

License

CastKeeper Copyright (C) 2025 George Webb

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

About

A free application for archiving podcasts.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •