Commit Graph

11 Commits

Author SHA1 Message Date
jbrechtel 9011a00475 Fix dashboard failing to load episodes after RSS import
Build and Deploy / build-and-deploy (push) Successful in 52s
The root cause was that modernc.org/sqlite stores time.Time as strings
but cannot scan strings back into time.Time, causing ListEpisodes to
fail. Changed PublishedAt and CreatedAt in store structs from time.Time
to string, with format/parse handled at the application level.

Also fixed a secondary issue where the published_at format stored during
import had a duplicated timezone offset.
2026-07-12 16:17:51 -04:00
jbrechtel 119d4100b5 add RSS import feature
Build and Deploy / build-and-deploy (push) Successful in 1m9s
2026-07-10 14:49:50 -04:00
jbrechtel af8f705579 Copy CSS
Build and Deploy / build-and-deploy (push) Successful in 1m25s
2026-07-08 22:00:58 -04:00
jbrechtel 76425caf65 make RSS feed link smaller and more subtle
Build and Deploy / build-and-deploy (push) Successful in 47s
Replace the full neobrutalism card with a compact inline row. The
URL is now clickable to copy, with a brief Copied! confirmation.
2026-07-08 16:39:15 -04:00
jbrechtel c3d1adddc2 Fix blank episode form: move all CSS to external static files
Build and Deploy / build-and-deploy (push) Successful in 47s
- Go html/template rejects <style> blocks and inline style attributes
  when template expressions are present in URL/CSS contexts
- Move all inline CSS to static/auth.css, static/episode.css,
  static/dashboard.css
- Serve static files from embedded FS via /static/ handler
- Fix missing </div> in episode form audio file group
2026-07-08 13:12:43 -04:00
jbrechtel 9c24b30262 Fix blank page: URL types and inline style issues in templates
Build and Deploy / build-and-deploy (push) Successful in 1m3s
- Use template.URL for all URLs passed to templates (RSSURL, ImageURL)
- Pre-compute episode image URLs in handler as safe types
- Remove all inline style attributes, use CSS classes instead
- Add template error logging to catch silent failures
- HTML/template rejects raw strings in URL and CSS+URL contexts
2026-07-08 12:24:38 -04:00
jbrechtel b7d2732207 Add scripts/run for local development
Build and Deploy / build-and-deploy (push) Successful in 1m18s
2026-07-08 12:15:28 -04:00
jbrechtel a047338210 Styled file upload buttons for audio and images
Build and Deploy / build-and-deploy (push) Successful in 40s
2026-07-08 09:43:21 -04:00
jbrechtel b179f57628 Slug-based RSS URLs and success flash messages
Build and Deploy / build-and-deploy (push) Successful in 45s
- Add podcast_slug to users with global uniqueness check
- RSS available at /rss/{slug} (path-based) with legacy ?slug= fallback
- Slug field in dashboard settings with validation (lowercase, hyphens)
- JS flash messages for success/error after form submissions
- Remove unused imports
2026-07-08 09:29:00 -04:00
jbrechtel 0861f7510b 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
2026-07-08 09:20:19 -04:00
jbrechtel 68c1f38b8d Initial commit
Build and Deploy / build-and-deploy (push) Failing after 36s
2026-07-07 21:58:39 -04:00