Phase 5: Weekly digest email (new this week + closing in 7 days)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 45/100
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
createdAtanddeadlinefields - Supabase Auth has user emails
Implementation Plan
- Choose email provider: Resend (recommended) or Mailvex (dogfooding)
- 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
- 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)
- Query new resources:
- Schedule sending:
- Vercel Cron (weekly, different day than link-health)
- Or Supabase pg_cron
- User preferences:
- Add
emailDigestboolean to profiles table (default true) - Allow unsubscribe in email and on profile page
- Add
Files to Create
src/emails/weekly-digest.tsx(new) - React Email templatesrc/app/api/cron/weekly-digest/route.ts(new) - Cron endpointsrc/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
resendnpm package@react-email/componentsorreact-emailfor 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
- Lenguaje dominante
- TypeScript
- Estrellas
- 1
- Forks
- 6
- Merge medio
- 23 h 53 min
- PR fusionados (30 d)
- 27
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Your-Voldemort/StudentStack
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
Your-Voldemort/StudentStack#84 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 18/100
Your-Voldemort/StudentStack#83 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 12/100
Your-Voldemort/StudentStack#82 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 4/5 Más de una semana Aptitud para principiantes 22/100
Your-Voldemort/StudentStack#79 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
Your-Voldemort/StudentStack#78 ·
Los mantenedores suelen responder en 1 día
Todos los issues de Your-Voldemort/StudentStack
Issues similares
-
[Android] Nested transforms are composed in reverse orderPosiblemente ocupada @Danyalo la tomó hoy. AbiertoRepro provided
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
software-mansion/react-native-svg#3090 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
radix-ui/primitives#4228 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
rocketride-org/rocketride-server#2705 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
archon-ready archon-size-s archon-type-bug area: web
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
coleam00/Archon#4707 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
HarperFast/grafana-datasource#177 ·