podcast-generator/README.md
Jake Walker 7d60654d37
All checks were successful
ci/woodpecker/push/build Pipeline was successful
frontend rewrite
2025-02-05 22:47:39 +00:00

2.4 KiB

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.