Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Phase 5: Weekly digest email (new this week + closing in 7 days)

オープン
#38 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
45/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
活発
技術スタック
react, supabase, typescript

調査の方向性

Read PRD §8.12 and inspect the existing link-health cron, resource fields, profiles schema, and profile page. Then use the listed files—src/emails/weekly-digest.tsx, src/app/api/cron/weekly-digest/route.ts, src/lib/email.ts, and vercel.json—as entry points. Done means opted-in users receive the two requested sections with unsubscribe and preference controls on the scheduled weekly run.

索引モデルが issue の本文から書いたものです。

説明

enhancement

Description

Implement weekly digest email as specified in PRD §8.12. This is a P2 requirement for Phase 5.

Acceptance Criteria (from PRD §8.12)

  • "New this week" + "closing in 7 days" — sent via Resend or Mailvex

Current State

  • No email infrastructure exists
  • Link-health cron runs weekly (Monday 03:00 UTC)
  • Resources have createdAt and deadline fields
  • Supabase Auth has user emails

Implementation Plan

  1. Choose email provider: Resend (recommended) or Mailvex (dogfooding)
  2. Create email template:
    • Section 1: New this week (resources created in last 7 days)
    • Section 2: Closing in 7 days (deadlines within 7 days)
    • Unsubscribe link
  3. Build email generation logic:
    • Query new resources: createdAt > now() - 7 days
    • Query closing deadlines: deadline BETWEEN now() AND now() + 7 days
    • Render HTML email (React Email or MJML)
  4. Schedule sending:
    • Vercel Cron (weekly, different day than link-health)
    • Or Supabase pg_cron
  5. User preferences:
    • Add emailDigest boolean to profiles table (default true)
    • Allow unsubscribe in email and on profile page

Files to Create

  • src/emails/weekly-digest.tsx (new) - React Email template
  • src/app/api/cron/weekly-digest/route.ts (new) - Cron endpoint
  • src/lib/email.ts (new) - Email sending utility (Resend client)
  • vercel.json - add weekly digest cron schedule

Email Template Structure

Subject: StudentStack Weekly — 3 new offers, 2 deadlines closing soon

┌─────────────────────────────────────────────┐
│  🎓 StudentStack Weekly Digest              │
├─────────────────────────────────────────────┤
│  📅 New This Week (3)                       │
│  ┌─────────────────────────────────────┐   │
│  │ GitHub Copilot — Free Student Plan  │   │
│  │ AI coding assistance • Free         │   │
│  │ [Claim Offer]                       │   │
│  └─────────────────────────────────────┘   │
│  ...                                       │
├─────────────────────────────────────────────┤
│  ⏰ Closing in 7 Days (2)                   │
│  ┌─────────────────────────────────────┐   │
│  │ Google Summer of Code 2026          │   │
│  │ Applications close Oct 15           │   │
│  │ [View Details]                      │   │
│  └─────────────────────────────────────┘   │
├─────────────────────────────────────────────┤
│  [Unsubscribe] • [Manage Preferences]       │
└─────────────────────────────────────────────┘

Dependencies

  • resend npm package
  • @react-email/components or react-email for templates
  • Vercel Cron or Supabase pg_cron for scheduling

Notes

  • Only send to users who opted in (emailDigest = true)
  • Batch send in chunks (Resend supports batch)
  • Track open/click rates via Resend dashboard
  • Consider: only send if there's actual new content
主要言語
TypeScript
スター
1
フォーク
6
平均マージ
11時間 16分
マージ済み PR(30日)
16

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

Your-Voldemort/StudentStack のほかの issue

Your-Voldemort/StudentStack の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。