Skip to content

Narrator dashboard and static CSS - #17

Merged
AevumDecessus merged 5 commits into
fragforce:devfrom
AevumDecessus:dev_setup
Jun 19, 2026
Merged

Narrator dashboard and static CSS#17
AevumDecessus merged 5 commits into
fragforce:devfrom
AevumDecessus:dev_setup

Conversation

@AevumDecessus

Copy link
Copy Markdown
Contributor

Summary

  • Add narrator dashboard at /portal/ showing available books and past recordings
  • Move all inline CSS to a single static file (static/css/style.css)
  • Add CSRF_TRUSTED_ORIGINS setting and env.sample

Changes

  • Narrator dashboard with auth guard, book queue (available books filtered by max narrators and already-recorded), and recordings list
  • Portal/Logout nav links for logged-in narrators
  • Welcome page links to the portal
  • All inline style blocks consolidated into one static CSS file
  • Consistent button styling (white text on blue) across all pages
  • Proper None check for max_narrators (0 means no recordings allowed, not unlimited)

Closes #14

Test plan

  • Log in with a valid passphrase, verify redirect to welcome page
  • Navigate to /portal/, verify available books are shown
  • Verify books at max narrators are excluded
  • Verify already-recorded books do not appear in available list
  • Verify /portal/ redirects to /login/ when not authenticated
  • Verify all pages render correctly with the static CSS

Authenticated narrators can now view their recordings and browse available books to record. The dashboard shows book metadata, recording counts, public domain/licensed badges, and a Record button per book. Includes a narrator_required decorator that redirects unauthenticated users to /login/.
Consolidates inline <style> blocks from base.html and all page-specific extra_css blocks into static/css/style.css. Standardizes button colors (white text on blue) across all pages and adds STATICFILES_DIRS to settings.
The truthiness check treated 0 as falsy, allowing books with max_narrators=0 to appear in the available list. Use an explicit None check instead.
Display "X/Y recordings" when a book has a max_narrators limit, using a proper None check instead of truthiness.
@AevumDecessus
AevumDecessus merged commit 187672d into fragforce:dev Jun 19, 2026
@AevumDecessus
AevumDecessus deleted the dev_setup branch June 19, 2026 19:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Narrator portal: book queue

1 participant