Per-user podcasts, file uploads, RSS images, Docker support
Build and Deploy / build-and-deploy (push) Failing after 13s

- Each user owns a podcast: podcast title/author/image on users table
- Episodes scoped by user_id with context-based auth
- Audio file upload replaces URL linking, served from /uploads/
- Podcast and per-episode images with itunes:image in RSS
- RSS per-user via ?user=N, dashboard shows user-specific feed URL
- Settings form for title + author + image per user
- Docker multi-stage build (golang:1.25-alpine / alpine:3.21)
- Removed PODSTALK_TITLE/AUTHOR env vars
This commit is contained in:
2026-07-08 09:20:19 -04:00
parent f43c98b56f
commit 0861f7510b
8 changed files with 151 additions and 105 deletions
+7 -7
View File
@@ -17,9 +17,7 @@ docker run -d \
-v podstalk-data:/data \
-v podstalk-uploads:/uploads \
-e PODSTALK_LINK=https://podcast.example.com \
-e PODSTALK_TITLE="My Podcast" \
podstalk
```
On first launch, visit `http://localhost:8080/signup` to create your account.
@@ -31,15 +29,17 @@ On first launch, visit `http://localhost:8080/signup` to create your account.
| `PODSTALK_DB` | `podstalk.db` | SQLite database path |
| `PODSTALK_UPLOAD_DIR` | `uploads` | Audio/image file storage |
| `PODSTALK_LINK` | `http://localhost:8080` | Public URL (used in RSS feed) |
| `PODSTALK_TITLE` | `Podstalk` | Fallback podcast title |
| `PODSTALK_AUTHOR` | `Podstalk` | RSS author field |
The podcast title and image can also be set from the dashboard after signing in.
Podcast details (title, author, image) are managed from the dashboard after signing in.
## RSS Feed
The RSS 2.0 feed (with iTunes extensions) is available at `/rss`. It includes
`<enclosure>`, `<itunes:image>`, `<guid>`, and `<pubDate>` for each episode.
The RSS 2.0 feed (with iTunes extensions) is available at `/rss`. Each user
gets their own feed. By default `/rss` serves the first user's podcast; pass
`?user=N` to select a specific user's feed.
The feed includes `<enclosure>`, `<itunes:image>`, `<guid>`, `<pubDate>`, and
`<itunes:author>` for each episode.
## Running Without Docker