{"id":35003325,"url":"https://github.com/nihilno/nexletter","last_synced_at":"2026-04-10T01:43:02.470Z","repository":{"id":330290199,"uuid":"1120979757","full_name":"nihilno/nexletter","owner":"nihilno","description":"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.","archived":false,"fork":false,"pushed_at":"2025-12-25T11:15:52.000Z","size":14937,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-12-26T02:48:09.246Z","etag":null,"topics":["ai-agent","context","emailjs","inngest","lucide","newsapi","rhf","shadcn","supabase","supabase-auth","zod"],"latest_commit_sha":null,"homepage":"https://nexletter.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nihilno.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-22T08:47:09.000Z","updated_at":"2025-12-25T11:15:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nihilno/nexletter","commit_stats":null,"previous_names":["nihilno/ai-saas"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/nihilno/nexletter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nihilno%2Fnexletter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nihilno%2Fnexletter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nihilno%2Fnexletter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nihilno%2Fnexletter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nihilno","download_url":"https://codeload.github.com/nihilno/nexletter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nihilno%2Fnexletter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28071870,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-27T02:00:05.897Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agent","context","emailjs","inngest","lucide","newsapi","rhf","shadcn","supabase","supabase-auth","zod"],"created_at":"2025-12-27T04:12:13.471Z","updated_at":"2025-12-27T04:12:18.687Z","avatar_url":"https://github.com/nihilno.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nexletter — AI‑Powered Personalized Newsletter\n\nNexletter is a full‑stack, automated AI newsletter system built with **Supabase**, **Inngest**, and **Next.js**.  \nUsers choose their preferred news categories and how often they want to receive AI‑generated summaries.  \nThe 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**.\n\n---\n\n## 🚀 Tech Stack\n\n- Supabase (database + auth)\n- Supabase Auth for secure email/password login\n- React Context for lightweight global state management\n- NewsAPI for fetching articles\n- Inngest for background jobs, workflows, and scheduling\n- Xiaomi / Mimo‑v2‑Flash model for AI article analysis (free)\n- EmailJS for sending emails\n- shadcn/ui for clean, accessible UI components\n- React Hook Form + Zod for form validation\n- Lucide Icons for modern iconography\n\n---\n\n## 📬 How It Works\n\nOnce a user logs in, they configure their **newsletter preferences**:\n\n- Pick news **categories**\n- Choose **frequency** of the AI‑generated newsletter\n\nFrom there, an **Inngest workflow** takes over — a multi‑step background function that handles the entire lifecycle of generating and delivering the newsletter.\n\n---\n\n## ⚙️ Inngest Workflow\n\nEach newsletter cycle consists of four steps:\n\n### 1. Fetch Articles\n\nInngest calls the NewsAPI to retrieve the latest articles matching the user’s selected categories.\n\n### 2. AI Processing\n\nThe Xiaomi/Mimo‑v2‑Flash model analyzes the articles and:\n\n- cleans up the content\n- summarizes key points\n- adds a friendly, personal tone\n- formats everything into a consistent newsletter template\n\n### 3. Send Email\n\nThe final newsletter is delivered using **EmailJS**, styled and formatted for readability.\n\n### 4. Schedule the Next Run\n\nBased on the user’s chosen frequency, Inngest schedules the next newsletter to be sent at **9:00 AM**.\n\n---\n\n## 🖥️ Dashboard Features\n\nUsers can manage their preferences at any time:\n\n- Change categories\n- Update frequency\n- Pause or resume the newsletter\n- Pausing removes the next scheduled job\n- Resuming queues a new one instantly\n\nEverything updates in real time and syncs with Supabase.\n\n---\n\n## 🎨 UI \u0026 UX\n\nThe interface is clean, responsive, and mobile‑friendly:\n\n- Built with shadcn/ui\n- Smooth form handling via React Hook Form + Zod\n- Icons powered by Lucide\n- Thoughtful layout and spacing for a premium feel\n\n---\n\n## 📦 Project Highlights\n\n- Fully automated newsletter system\n- Zero‑maintenance scheduling via Inngest\n- Free AI model that performs surprisingly well\n- Secure auth and user data storage\n- Modern, polished UI\n- Clear separation of concerns and scalable architecture\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnihilno%2Fnexletter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnihilno%2Fnexletter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnihilno%2Fnexletter/lists"}