summaryrefslogtreecommitdiff
path: root/Biz/PodcastItLater/Core.py
AgeCommit message (Collapse)Author
2 daysFix billing migration to work with SQLite ALTER TABLE limitationsBen Sima
- Remove UNIQUE constraints from ALTER TABLE statements (SQLite doesn't support adding constraints via ALTER TABLE) - Add better logging for migration failures (debug level) - Rely on application logic to ensure uniqueness instead of DB constraint - This fixes the silent failure where stripe_customer_id and stripe_subscription_id columns weren't being added
3 daysRemove manual approval requirement for new accountsBen Sima
New accounts now default to 'active' status instead of 'pending'. Users can start using the service immediately after signup.
6 daysfeat(PodcastItLater): Add Stripe billing infrastructureBen Sima
Add complete Stripe integration backend ready for testing once stripe package is available in Nix environment. Components: - Billing.py: Stripe Checkout, Billing Portal, webhook handling - Database migrations for subscription tracking - Usage tracking with tier-based limits - Idempotent webhook processing with stripe_events table Tier limits: free (10/mo), personal (50/mo), pro (unlimited) Webhook events handled: - checkout.session.completed (link customer to user) - customer.subscription.{created,updated,deleted} (sync state) - invoice.payment_failed (mark past_due) Requires: Stripe Python package in Nix, Web.py routes (next commit) Related to task t-144e7lF Amp-Thread-ID: https://ampcode.com/threads/T-8feaca83-dcc2-46cb-8f71-d0785960a2f7 Co-authored-by: Amp <amp@ampcode.com>
6 daysfeat(PodcastItLater): Apply Bootstrap 5 UI and fix dev loginBen Sima
- Apply Bootstrap 5 CSS and icons to all pages (Web.py, Admin.py) - Convert all components to use Bootstrap classes instead of inline styles - Add dev mode banner showing demo@example.com for instant login - Implement secure demo account (demo@example.com) with auto-approval - Fix HTMX loading issue when load_styles=False - Update Database.create_user() to accept optional status parameter - Add Bootstrap tables, cards, badges, and button groups throughout - All tests passing Completes task t-144drAE Amp-Thread-ID: https://ampcode.com/threads/T-8feaca83-dcc2-46cb-8f71-d0785960a2f7 Co-authored-by: Amp <amp@ampcode.com>
2025-09-04Refactor Admin and Database path stuffBen Sima
Moved the Admin related stuff to a separate file. Removed the repetitive `db_path` arg everywhere and replaced it with correct assumptions, similar to whats in other apps.
2025-09-04Add Default Titles for Queue ItemsBen Sima
Implement a migration to add default titles to queue items with NULL titles. This ensures that every queue item has a meaningful title, improving user experience and data consistency. The migration updates items with 'Untitled Article' when no title is present.
2025-09-04Add User Status Management to PodcastItLaterBen Sima
Implement user status tracking with pending, active, and disabled states. This allows administrators to control user access and provides a mechanism for approving new users before granting full system access. Added database migration, admin interface, and authentication checks to support this feature.
2025-09-04Add Episode Metadata: Author and Original URLBen Sima
Enhance episode tracking by adding support for author and original article URL. This allows users to see more context about each podcast episode, improving the overall user experience and providing additional information about the source material.
2025-09-04Add Metadata Extraction for Podcast QueueBen Sima
This commit adds support for extracting title and author metadata from URLs when adding articles to the podcast queue. It includes database schema changes, migration logic, and UI updates to display the extracted metadata.
2025-09-03Add Environment-Aware Database Path HandlingBen Sima
2025-08-28Prototype PodcastItLaterBen Sima
This implements a working prototype of PodcastItLater. It basically just works for a single user currently, but the articles are nice to listen to and this is something that we can start to build with.