Add social media scheduler with templates and analytics#964
Open
kevmodrome wants to merge 6 commits intostagingfrom
Open
Add social media scheduler with templates and analytics#964kevmodrome wants to merge 6 commits intostagingfrom
kevmodrome wants to merge 6 commits intostagingfrom
Conversation
Phase 1 implements the foundation for the social media scheduling system: Database & Services: - Migration 020: social_posts, social_post_platforms, social_auto_rules, social_templates, social_queue_settings, social_credentials tables - SocialPostService: CRUD operations for posts and platforms - SocialTemplateService: Template management - SocialCredentialService: Encrypted credential storage (AES-256-GCM) - Type definitions for platforms (Twitter, Bluesky, LinkedIn) Admin UI: - /admin/social - List page with filters (status, type, platform) - /admin/social/new - Create post with multi-platform support - /admin/social/[id] - Edit post with scheduling options - Navigation link added to admin sidebar E2E Tests (8 tests, all passing): - Create, edit, delete social posts - Multi-platform post creation - Access control for non-admin users Key fixes during implementation: - Fixed SvelteKit redirect handling (redirect() outside try/catch) - Fixed HTML checkbox form parsing (Zod transform for "on" values) - Fixed Svelte hydration timing in E2E tests Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
## Calendar Page (/admin/social/calendar) - Month and week view toggles - Navigate between months with prev/next buttons - Today button to jump to current date - Color-coded posts by status (draft, scheduled, published, failed) - Click posts to edit them ## Queue Settings Page (/admin/social/settings) - Global queue settings (posting times, days, timezone, min gap) - Platform-specific overrides for Twitter, Bluesky, LinkedIn - Pause/resume queue controls per platform - Edit forms with validation for time and day formats ## Edit Page Scheduling - Schedule posts with date and time picker - Unschedule posts to return to draft status - Status card shows current post state ## Backend - SocialQueueService for queue configuration management - Remote functions for settings CRUD operations - Queue pause/resume functionality ## E2E Tests - Calendar navigation and view switching - Settings page access and display - Scheduling and unscheduling posts - All 15 social posts tests passing Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…(Phase 3) - Add SocialAutoRuleService for CRUD operations on auto-posting rules - Add SocialEventHandler service to trigger social posts on content/job publish and sponsor activation - Wire up event triggers in content.remote.ts (updateContent, updateJob, approveJob) - Wire up sponsor activation trigger in sponsors/data.remote.ts - Add rules management UI pages (/admin/social/rules, /new, /[id]) - Fix hidden checkbox inputs sending empty strings (validation error) - Add 4 E2E tests for auto-posting rules (create, edit, delete, toggle) - All 20 social posts E2E tests passing Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…er (Phase 4)
- Template management: create, edit, delete templates for different content types
- Templates support variables like {{title}}, {{description}}, {{url}}, {{tags}}
- Platform-specific templates for Twitter, Bluesky, and LinkedIn
- Analytics dashboard with summary cards, platform breakdown, and activity charts
- Added 6 new E2E tests for template CRUD and analytics (26 total tests passing)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Contributor
✅ Unit Test ResultsStatus: All Tests Passed Test Summary
Coverage
|
Contributor
❌ Playwright Test ResultsStatus: Tests Failed
|
The import path used 'Textarea.svelte' (lowercase 'a') but the actual file is 'TextArea.svelte' (uppercase 'A'). This worked on macOS but failed on Linux CI due to case-sensitive filesystem. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Contributor
✅ Unit Test ResultsStatus: All Tests Passed Test Summary
Coverage
|
Contributor
✅ Playwright Test ResultsStatus: All Tests Passed
|
- Add credentials management page at /admin/social/credentials - Support storing encrypted credentials for Twitter, Bluesky, LinkedIn - Add remote functions for CRUD operations on credentials - Add E2E tests for credentials page (13 tests) - Fix button size variant: change size="small" to size="sm" - Add test encryption key to .env.test Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Contributor
✅ Unit Test ResultsStatus: All Tests Passed Test Summary
Coverage
|
Contributor
✅ Playwright Test ResultsStatus: All Tests Passed
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Complete social media scheduler with templates, auto-posting rules, scheduling, and analytics dashboard for Twitter/X, Bluesky, and LinkedIn.
Key Features
Test Coverage
26 E2E tests covering posts, calendars, settings, rules, templates, and analytics (100% passing).
Commits