No description
All checks were successful
ci/woodpecker/push/build Pipeline was successful
Co-authored-by: James Walker <james@noreply.git.jakew.me> |
||
---|---|---|
.woodpecker | ||
client | ||
migrations | ||
src | ||
.dockerignore | ||
.editorconfig | ||
.gitignore | ||
.python-version | ||
alembic.ini | ||
Dockerfile | ||
LICENSE | ||
pyproject.toml | ||
README.md | ||
Taskfile.yml | ||
uv.lock |
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.