Replace free-text genre field with structured style dropdowns
The customer request form previously had an open 'Style / genre / mood' text field, which produced inconsistent genre descriptions and confused Suno. Replace it with three dropdowns: - Decade / era (required) — loaded from /mnt/Storage/Decades.txt - Basic style (required) — loaded from /mnt/Storage/Music Genres.txt - Additional style (optional) — same genre list The combined value is stored in the existing style_genre column as a comma-separated string (e.g. '1980's, Pop, Funk'), so no schema change is required. The admin request page exposes the same dropdowns for corrections, and the copy-to-Hermes prompt formats the style as a clean sentence like '1980's-era Pop with Funk influences'. The canonical lists live in /mnt/Storage; bundled copies under lists/ act as a fallback when that mount is unavailable in the container. Bumps version to 0.4.6 and updates README.
This commit is contained in:
parent
d79c58691a
commit
10ee182558
7 changed files with 381 additions and 16 deletions
14
README.md
14
README.md
|
|
@ -1,6 +1,6 @@
|
|||
# Theme Song Booth
|
||||
|
||||
**Version:** `v0.4.5`
|
||||
**Version:** `v0.4.6`
|
||||
|
||||
A Flask web application for running a convention booth where visitors request a custom AI-generated theme song. Operators manage the queue from an admin dashboard, generate Suno prompts, upload MP3 previews, collect payment, and deliver final songs by email.
|
||||
|
||||
|
|
@ -38,7 +38,7 @@ A Flask web application for running a convention booth where visitors request a
|
|||
|
||||
| Page | Path | Purpose |
|
||||
|------|------|---------|
|
||||
| Request form | `/request` | Visitors enter name, email, hobbies, notable facts, preferred style/genre, vocal gender, and extra requests. Rate limited to 5 submissions per minute per IP. |
|
||||
| Request form | `/request` | Visitors enter name, email, hobbies, notable facts, and extra requests. The music style is picked from three dropdowns: **Decade** (required), **Basic style** (required), and **Additional style** (optional). Decades and genres are loaded from `/mnt/Storage/Decades.txt` and `/mnt/Storage/Music Genres.txt`. Rate limited to 5 submissions per minute per IP. |
|
||||
| Closed page | `/request` (when booth is closed) | Shows a friendly closed banner instead of the form when the operator marks the booth closed. |
|
||||
| Thanks | `/thanks/<id>` | Confirmation page shown after a request is submitted. |
|
||||
| Order status | `/status` | Customers enter their email to see all their requests and statuses. |
|
||||
|
|
@ -46,6 +46,16 @@ A Flask web application for running a convention booth where visitors request a
|
|||
| Private player | `/play/<token>` | Secret link emailed to the customer. Streams Version A and B, lets them approve or request revisions, and later download delivered files / stems. |
|
||||
| Kiosk | `/kiosk` | Public full-screen display for a booth tablet. Cycles between a QR code for `/request` and the configured price list. Updates automatically when pricing or booth state changes. |
|
||||
|
||||
### Style selection
|
||||
|
||||
The request form no longer has a free-text genre field. Instead, customers choose:
|
||||
|
||||
1. **Decade / era** — required (e.g. `1980's`).
|
||||
2. **Basic style** — required (e.g. `Pop`).
|
||||
3. **Additional style** — optional (e.g. `Funk`).
|
||||
|
||||
These are stored together in the `style_genre` column as a comma-separated string (e.g. `1980's, Pop, Funk`) so no database schema change is needed. The admin request page shows the same dropdowns and a live preview of the combined value. The copy-to-Hermes prompt formats this as a clean sentence like "1980's-era Pop with Funk influences" for better Suno results.
|
||||
|
||||
---
|
||||
|
||||
## Operator / admin pages
|
||||
|
|
|
|||
Reference in a new issue