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
+4 -6
View File
@@ -59,13 +59,11 @@ func main() {
UploadDir: uploadDir,
}
rssH := &handler.RSSHandler{
Store: st,
BaseTitle: envOrDefault("PODSTALK_TITLE", "Podstalk"),
Link: baseURL,
Author: envOrDefault("PODSTALK_AUTHOR", "Podstalk"),
Store: st,
Link: baseURL,
}
// Auth routes — redirect to dashboard if already signed in.
// Auth routes.
http.HandleFunc("/signup", authMid.RedirectIfAuthed(authH.ServeSignup))
http.HandleFunc("/signin", authMid.RedirectIfAuthed(authH.ServeSignin))
http.HandleFunc("/signout", authH.ServeSignout)
@@ -77,7 +75,7 @@ func main() {
http.HandleFunc("/episodes/delete", authMid.RequireAuth(epH.ServeDelete))
http.HandleFunc("/settings", authMid.RequireAuth(setH.ServeSettings))
// Public RSS feed.
// Public RSS feed — per-user via ?user=N query param.
http.HandleFunc("/rss", rssH.ServeRSS)
// Public uploaded files.