No description
Find a file
Jake Walker e38edc45fa
All checks were successful
ci/woodpecker/push/build Pipeline was successful
Add rekordbox tracklist parsing
Co-authored-by: James Walker <james@noreply.git.jakew.me>
2025-02-08 16:59:55 +00:00
.woodpecker allow manual pipeline 2025-01-09 21:42:00 +00:00
client add podcast landing page 2025-02-08 16:28:38 +00:00
migrations frontend rewrite 2025-02-05 22:47:39 +00:00
src Add rekordbox tracklist parsing 2025-02-08 16:59:55 +00:00
.dockerignore frontend rewrite 2025-02-05 22:47:39 +00:00
.editorconfig frontend rewrite 2025-02-05 22:47:39 +00:00
.gitignore web app rewrite 2025-01-10 13:30:09 +00:00
.python-version initial commit 2025-01-09 21:38:48 +00:00
alembic.ini frontend rewrite 2025-02-05 22:47:39 +00:00
Dockerfile frontend rewrite 2025-02-05 22:47:39 +00:00
LICENSE update documentation 2025-01-13 13:09:23 +00:00
pyproject.toml frontend rewrite 2025-02-05 22:47:39 +00:00
README.md frontend rewrite 2025-02-05 22:47:39 +00:00
Taskfile.yml fix spa routing 2025-02-05 23:29:48 +00:00
uv.lock frontend rewrite 2025-02-05 22:47:39 +00:00

Podcast Server

This is a really simple project allowing for quick creation of podcasts. The server provides a simple admin panel to manage podcasts, and the ability to upload episodes. Any uploaded episodes have their audio level normalised, and are re-encoded to AAC which tends to use less disk space than original formats.

Environment Variables

Name Default Description
PG_DIRECTORY ./data (/data for Docker) Where any files are stored. This includes episodes, images and application data.
PG_UPLOADS_DIRECTORY ./uploads (/uploads for Docker) Where any currently uploading files are stored. This directory does not need persistence in Docker.
PG_OIDC_AUTHORIZE_URL (required) The OpenID Connect authorize endpoint from the authentication provider.
PG_OIDC_TOKEN_URL (required) The OpenID Connect token endpoint from the authentication provider.
PG_OIDC_JWKS_URL (required) The OpenID Connect JWKS endpoint from the authentication provider.
PG_OIDC_AUTHORITY (required) The OpenID Connect issuer URL from the authentication provider.
PG_OIDC_PERMITTED_JWT_AUDIENCES (required) A list of valid audiences from the authentication provider.
PG_OIDC_CLIENT_ID (required) The OpenID Connect client ID from the authentication provider.
PG_OIDC_SUB_JWT_ATTRIBUTE sub The JWT token attribute that contains the user's ID.
PG_OIDC_NAME_JWT_ATTRIBUTE name The JWT token attribute that contains the user's name or username.
PG_OIDC_SCOPES ["openid", "email", "profile", "offline_access"] OpenID Connect scopes.

Development

Backend

This backend of the project is made using Python and FastAPI. To get started, ensure you have Python and the uv package manager installed.

# install dependencies
uv sync

# migrate the database
uv run alembic upgrade head

# run server in development mode
uv run fastapi dev main.py

Frontend

The frontend of the project is made using Solid.js. To get started, ensure you have Node.js installed, and corepack enabled (with corepack enable).

cd frontend

# install dependencies
pnpm install

# run server in development mode
pnpm run dev

After changing the backend, run pnpm run generate-client to generate the API client for the frontend from the server's OpenAPI schema.