Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Echoletter

Echoletter is a "set it and forget it" newsletter service. Tell it what you're interested in, and our AI agent does the rest: finds the latest articles, writes a concise custom summary, and delivers it to you on a daily or weekly cadence.

Where Echoletter stands out: every newsletter is also an audio broadcast. We use Murf's API to transform text summaries into natural, expressive audio so you can catch up on your personalized news during your commute, workout, or coffee break.

Huge thanks to the Murf AI team for the amazing tools used to build this!

Tags: #MurfAIHackathon #TextToSpeech #FutureOfNews #AI #JavaScript


Features

  • Create personalized news digests based on user interests.
  • Automated article discovery and summarization via an AI agent.
  • Text-to-speech conversion for each newsletter using Murf AI—delivered as an audio broadcast.
  • Delivery scheduling (daily / weekly).
  • Background processing and job retries using BullMQ.
  • Persistent storage of subscribers/preferences using MongoDB.
  • Web UI built with React for subscription management and admin controls.

How it works (high level)

  1. User signs up and configures interests/preferences.
  2. A scheduled job (daily / weekly) triggers the agent.
  3. Agent finds recent articles matching the user's interests.
  4. Agent summarizes the articles into a single short newsletter.
  5. The newsletter text is sent to Murf's Text-to-Speech API to produce a natural-sounding audio file.
  6. The text summary and audio broadcast are delivered to the user (email ).
  7. Jobs & retries are managed via BullMQ; data is stored in MongoDB.

Tech Stack

  • Node.js (backend)
  • LangChain.js (AI orchestration)
  • Murf AI (text-to-speech)
  • Gemini (LLM)
  • MongoDB (data storage)
  • BullMQ and Cron-Job (background jobs and scheduling)
  • React (frontend)
  • JavaScript, CSS, HTML

Getting Started

These are general steps to get a local dev environment running. Adjust commands as needed for your environment and repository conventions.

Prerequisites:

  • Node.js (v16+ recommended)
  • npm or yarn
  • MongoDB (local or Atlas)
  • Redis (required by BullMQ)
  • Murf API key and any other AI keys you use
  1. Clone the repo

  2. Install dependencies

    • npm install
    • or
    • yarn
  3. Create a .env file in the project root with the required environment variables (example below).

  4. Run the app in development

    • npm run dev
    • or
    • yarn dev
  5. Open the frontend (usually at http://localhost:5173) and the backend (e.g., http://localhost:3000) depending on how the repo is organized.


Environment Variables

Create a .env (or .env.local for frontend) and fill in the required keys. Example:

  • MONGO_URI=your_mongodb_connection_string
  • REDIS_URL=redis://localhost:6379
  • MURF_API_KEY=your_murf_api_key
  • MURF_PROJECT_ID=your_murf_project_id (if used)
  • OPENAI_API_KEY=your_openai_api_key (if using OpenAI via LangChain)
  • NODE_ENV=development
  • PORT=3000
  • FRONTEND_URL=http://localhost:5173

Notes:

  • Replace keys above with actual provider values used by the project.
  • Do NOT commit secrets to source control.

Running Jobs & Workers

Echoletter uses BullMQ for background processing (article fetching, summarization, TTS generation and delivery).

  • Ensure Redis is running and accessible via REDIS_URL.
  • Start any worker processes required for processing jobs:
    • npm run worker
    • or the repository's documented worker start command.

Project Structure (example)

  • /server — backend Node.js app (API, workers, queue config)
  • /client — React frontend
  • /scripts — utility scripts (seeders, migrations)
  • /config — environment & integration configs
  • /docs — additional docs & architecture diagrams

(Adjust to match actual repository layout.)


Acknowledgments

  • Built for the Murf AI Hackathon.
  • Big thanks to Murf AI for their Text-to-Speech API.
  • Built with LangChain.js and several open-source tools.

About

This is a submission for the murf-ai coding challenge 5

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages