Add discovery modes, personalization controls, taste profile page, updated pricing
- Discovery modes: Sonic Twin, Era Bridge, Deep Cuts, Rising Artists - Discovery dial (Safe to Adventurous slider) - Block genres/moods exclusion - Thumbs down/dislike on recommendations - My Taste page with Genre DNA breakdown, audio feature meters, listening personality - Updated pricing: Free (5/week), Premium ($6.99/mo), Family ($12.99/mo coming soon) - Weekly rate limiting instead of daily - Alembic migration for new fields
This commit is contained in:
@@ -29,6 +29,7 @@ class Recommendation(Base):
|
||||
|
||||
# User interaction
|
||||
saved: Mapped[bool] = mapped_column(Boolean, default=False)
|
||||
disliked: Mapped[bool] = mapped_column(Boolean, default=False, server_default="false")
|
||||
created_at: Mapped[datetime] = mapped_column(
|
||||
DateTime(timezone=True), default=lambda: datetime.now(timezone.utc)
|
||||
)
|
||||
|
||||
@@ -22,6 +22,10 @@ class User(Base):
|
||||
stripe_customer_id: Mapped[str | None] = mapped_column(String(255), nullable=True, unique=True)
|
||||
stripe_subscription_id: Mapped[str | None] = mapped_column(String(255), nullable=True)
|
||||
|
||||
# Personalization
|
||||
blocked_genres: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
adventurousness: Mapped[int] = mapped_column(default=3, server_default="3")
|
||||
|
||||
# Spotify OAuth
|
||||
spotify_id: Mapped[str | None] = mapped_column(String(255), nullable=True, unique=True)
|
||||
spotify_access_token: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
|
||||
Reference in New Issue
Block a user