docs: update weekly newsletter spec #67

Merged
addison merged 2 commits from exe-dev-bot/market:docs/spec-003-newsletter-updates into main 2026-02-05 05:11:22 -05:00
Contributor

Updates spec-003 (Weekly Newsletter) with implementation details based on review.

Changes

Added Tasks

  • RLS policies for newsletter, newsletter_send_log, announcement tables
  • Indexes for new tables
  • TypeScript types regeneration
  • Environment variables documentation
  • Service role client utility
  • Dashboard link to newsletters
  • Newsletter list page (/my/newsletters)

Clarifications

  • Content storage: Defined NewsletterContent TypeScript interface
  • Cron authentication: Use Cloudflare scheduled handler via custom worker entry point
  • Unsubscribe tokens: Use JWT (HS256) instead of custom HMAC format
  • Theme handling: Query user_settings table, default to dusk
  • Empty newsletters: Show all sections with placeholders
  • Archive retention: Keep 4 most recent per user, delete after successful generation
  • No newsletter-enabled emails: Generate newsletter but do not send

Removed

  • Manual trigger endpoint (/api/newsletter/trigger) - simplifies implementation
  • /api/newsletter/[id] endpoint - page queries DB directly

Route Changes

  • /newsletter/[id]/my/newsletters/[id] (consistent with /my/items pattern)
  • Added /my/newsletters list page
  • /newsletter/unsubscribe stays public

Approved by: Addison Emig (2026-02-05)

Updates spec-003 (Weekly Newsletter) with implementation details based on review. ## Changes ### Added Tasks - RLS policies for newsletter, newsletter_send_log, announcement tables - Indexes for new tables - TypeScript types regeneration - Environment variables documentation - Service role client utility - Dashboard link to newsletters - Newsletter list page (`/my/newsletters`) ### Clarifications - **Content storage**: Defined `NewsletterContent` TypeScript interface - **Cron authentication**: Use Cloudflare `scheduled` handler via custom worker entry point - **Unsubscribe tokens**: Use JWT (HS256) instead of custom HMAC format - **Theme handling**: Query `user_settings` table, default to `dusk` - **Empty newsletters**: Show all sections with placeholders - **Archive retention**: Keep 4 most recent per user, delete after successful generation - **No newsletter-enabled emails**: Generate newsletter but do not send ### Removed - Manual trigger endpoint (`/api/newsletter/trigger`) - simplifies implementation - `/api/newsletter/[id]` endpoint - page queries DB directly ### Route Changes - `/newsletter/[id]` → `/my/newsletters/[id]` (consistent with `/my/items` pattern) - Added `/my/newsletters` list page - `/newsletter/unsubscribe` stays public Approved by: Addison Emig (2026-02-05)
docs(spec): update spec-003 weekly newsletter with implementation details
Some checks failed
CI / Lint, Type Check & Format (pull_request) Failing after 1m4s
CI / Unit Tests (pull_request) Failing after 1m11s
CI / E2E Tests (pull_request) Failing after 3m10s
ce11c3b69e
- Add missing tasks: RLS policies, indexes, TypeScript types, env vars
- Define NewsletterContent TypeScript interface for content_json
- Clarify cron authentication via Cloudflare scheduled handler
- Use JWT for unsubscribe tokens instead of custom HMAC
- Move newsletter routes to /my/newsletters/* pattern
- Add newsletter archive UI to dashboard
- Resolve ambiguities: empty newsletters, deletion timing, theme handling
- Remove manual trigger endpoint for simplicity
- Keep 4 most recent newsletters per user (delete after generation)

Approved by: Addison Emig (2026-02-05)

Co-authored-by: Shelley <shelley@exe.dev>
docs(spec): fix contradictions and clarify terminology
Some checks failed
CI / Unit Tests (pull_request) Successful in 1m35s
CI / Lint, Type Check & Format (pull_request) Failing after 2m29s
CI / E2E Tests (pull_request) Failing after 3m36s
9eafd1ac7c
- Fix archive access contradiction: users CAN browse up to 4 newsletters
- Clarify 'items' terminology: explicitly say 'requests and for-sale items'
- Add missing tasks for worker entry file and astro config
- Add comments to featured_vendors interface explaining id vs vendor_id

Co-authored-by: Shelley <shelley@exe.dev>
addison changed title from docs(spec): update spec-003 weekly newsletter to docs: update weekly newsletter spec 2026-02-05 05:10:44 -05:00
addison deleted branch docs/spec-003-newsletter-updates 2026-02-05 05:11:22 -05:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kwila/market!67
No description provided.