Skip to content

jjeanjacques10/newsletter-api

Repository files navigation

Newsletter API



Demo · Report Bug · Request Feature

Jean Jacques Barros Repository size GitHub last commit License GitHub Pull Requests Stargazers

API that returns a JSON news list of popular newsletters. Currently, the API only supports one newsletter, but it will be extended to support more than one in the future.

Technologies

Getting started

Configuration Newsletter #1

set the following environment variables in .env:

GOOGLE_SHEET_ID_DESCHAMPS=
GOOGLE_SHEET_ID_CAVEIRA_TECH=

PROJECT_ID=
PRIVATE_KEY_ID=
PRIVATE_KEY=
CLIENT_EMAIL=
CLIENT_ID=
CLIENT_X509_CERT_URL=
PRODUCTION=< true | false >

REDIS_URL=

Running the server

npm install
npm run dev

to run the server in production mode, set the PRODUCTION environment variable to true

npm install
npm run build
npm run start

call the following URL to get the list of news:

or using heroku deployed app:

Newsletters configured

Newsletter Updated Endpoint
#1 Filipe Deschamps Newsletter 11:10 AM - 11:50 AM GET /news/filipedeschamps
#2 Caveira Tech Newsletter 11:40 AM GET /news/caveiratech

Response format

{
    "data": [
      {
            "uuid": "ec29d802-95e7-4f2c-8de3-90b69a2197c9",
            "update_date": "2022-06-29T14:11:39.000Z",
            "title": "Mark Zuckerberg espera atrair 1 bilhão de usuários para o metaverso até o final da década:",
            "content": "Mark Zuckerberg espera atrair 1 bilhão de usuários para o metaverso até o final da década: o CEO da Meta acredita que essas pessoas gastarão centenas de dólares por ano em ativos digitais como roupas para seus avatares, em decoração de seus escritórios e casas virtuais, e em aplicativos de produtividade geral.  Zuckerberg também afirma que experiências no metaverso contribuem para uma “sensação realista de presença”, algo não possível através das videochamadas atuais.  As informações são da rede CNBC. ",
            "source": "https://filipedeschamps.com.br/newsletter"
        }
    ]
}

Diagram

Next steps

  • Update cache parameter in request to get the latest news
  • Add support for more than one newsletter
  • Return the list of news in a Text plain format
  • Observability and monitoring with Prometheus + Grafana
  • Configure cron job to update the cache

developed by @jjeanjacques10