https://github.com/nihilno/nexletter
Nexletter is an automated AI‑driven newsletter system that fetches news based on user preferences, summarizes it with a lightweight model, and delivers personalized updates straight to the inbox on a scheduled cadence.
https://github.com/nihilno/nexletter
ai-agent context emailjs inngest lucide newsapi rhf shadcn supabase supabase-auth zod
Last synced: 4 months ago
JSON representation
Nexletter is an automated AI‑driven newsletter system that fetches news based on user preferences, summarizes it with a lightweight model, and delivers personalized updates straight to the inbox on a scheduled cadence.
- Host: GitHub
- URL: https://github.com/nihilno/nexletter
- Owner: nihilno
- Created: 2025-12-22T08:47:09.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2025-12-25T11:15:52.000Z (7 months ago)
- Last Synced: 2025-12-26T02:48:09.246Z (7 months ago)
- Topics: ai-agent, context, emailjs, inngest, lucide, newsapi, rhf, shadcn, supabase, supabase-auth, zod
- Language: TypeScript
- Homepage: https://nexletter.vercel.app
- Size: 14.2 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Nexletter — AI‑Powered Personalized Newsletter
Nexletter is a full‑stack, automated AI newsletter system built with **Supabase**, **Inngest**, and **Next.js**.
Users choose their preferred news categories and how often they want to receive AI‑generated summaries.
The system then automatically fetches articles, analyzes them using an open AI model, and sends a personalized newsletter straight to their inbox every morning at **9:00 AM**.
---
## 🚀 Tech Stack
- Supabase (database + auth)
- Supabase Auth for secure email/password login
- React Context for lightweight global state management
- NewsAPI for fetching articles
- Inngest for background jobs, workflows, and scheduling
- Xiaomi / Mimo‑v2‑Flash model for AI article analysis (free)
- EmailJS for sending emails
- shadcn/ui for clean, accessible UI components
- React Hook Form + Zod for form validation
- Lucide Icons for modern iconography
---
## 📬 How It Works
Once a user logs in, they configure their **newsletter preferences**:
- Pick news **categories**
- Choose **frequency** of the AI‑generated newsletter
From there, an **Inngest workflow** takes over — a multi‑step background function that handles the entire lifecycle of generating and delivering the newsletter.
---
## ⚙️ Inngest Workflow
Each newsletter cycle consists of four steps:
### 1. Fetch Articles
Inngest calls the NewsAPI to retrieve the latest articles matching the user’s selected categories.
### 2. AI Processing
The Xiaomi/Mimo‑v2‑Flash model analyzes the articles and:
- cleans up the content
- summarizes key points
- adds a friendly, personal tone
- formats everything into a consistent newsletter template
### 3. Send Email
The final newsletter is delivered using **EmailJS**, styled and formatted for readability.
### 4. Schedule the Next Run
Based on the user’s chosen frequency, Inngest schedules the next newsletter to be sent at **9:00 AM**.
---
## 🖥️ Dashboard Features
Users can manage their preferences at any time:
- Change categories
- Update frequency
- Pause or resume the newsletter
- Pausing removes the next scheduled job
- Resuming queues a new one instantly
Everything updates in real time and syncs with Supabase.
---
## 🎨 UI & UX
The interface is clean, responsive, and mobile‑friendly:
- Built with shadcn/ui
- Smooth form handling via React Hook Form + Zod
- Icons powered by Lucide
- Thoughtful layout and spacing for a premium feel
---
## 📦 Project Highlights
- Fully automated newsletter system
- Zero‑maintenance scheduling via Inngest
- Free AI model that performs surprisingly well
- Secure auth and user data storage
- Modern, polished UI
- Clear separation of concerns and scalable architecture