micro-medium-api

Microservice for fetching the latest posts of Medium with GraphQL.

Github stars Tracking Chart

Micro-medium-api

Microservice for fetching the latest posts of Medium with GraphQL.

Further reading: [中文] Microservice 產品交付 - Dockerize 與 Zeit JavaScript 跨平台解決方案

Travis
Codecov Status
Github Tag
node

Dependency Status
devDependency Status
peerDependency Status
Greenkeeper badge
prettier
license

Feature

  • Use GraphQL.
  • Dataloader for per-request memory cache.
  • Rate-limiting 1 requests per sec.

How To Use

a. Deploy to Now.sh

One click deploys to △ now

Deploy to now

b. Binary executable

Download from GitHub latest release.

$ ORIGIN=$YOUR_DOMAIN \
  ./micro-medium-api-macos --port $PORT

Note: You can run it without Node.js installed.

c. Docker image

Pull from dockerhub.

Docker Automated build
Docker Pulls
Docker Size

$ docker pull evenchange4/micro-medium-api:latest
$ docker run --rm -it \
  -p $PORT:3000 \
  -e "ORIGIN=YOUR_DOMAIN" \
  evenchange4/micro-medium-api:latest

d. NPM CLI

Install from npm.

npm downloads
npm

$ npm i micro-medium-api -g
 
$ ORIGIN=$YOUR_DOMAIN \
  micro-medium-api --port $PORT

Note: You should use Node.js >= 8 .

API

Environment variables, ENV, Required, Default, Description, ---------, ---------, ---------, ---------, ORIGIN, *, Setup access-control-allow-origin for CORS., ### CLI arguments

$ micro-medium-api --help
Usage: micro-medium-api <command> [options]
 
Options:
  -p, --port     HTTP server PORT                                [default: 3000]
  -h, --help     Show help                                             [boolean]
  -v, --version  Show version number                                   [boolean]

GraphQL endpoint

  • [GET] /graphql
  • [POST] /graphql

Demo

Note: You should deploy your own service for production usage.

Technology Stacks

  • Micro: Asynchronous HTTP microservices.
  • Micro-router: A tiny and functional router for Zeit's Micro.
  • Micro-ratelimit: Rate-limiting middleware for micro.
  • Graphql-tools: ? Build and mock your GraphQL.js schema using the schema language.
  • Graphql-server-micro: ? GraphQL server
  • Dataloader: DataLoader is a generic utility to be used as part of your application's data fetching layer to provide a consistent API over various backends and reduce requests to those backends via batching and caching.
  • Dockerhub: Automatically deploy docker image.
  • Now.sh: Realtime global deployments
  • Pkg: Package your Node.js project into an executable
  • Travis: CI

Developer Guide

Requirements

  • node >= 8.5.0
  • npm >= 5.3.0
  • yarn >= 1.0.2
$ git clone https://github.com/evenchange4/micro-medium-api.git
$ yarn install --pure-lockfile

$ yarn run dev # dev server
$ yarn start   # prod server
$ yarn run pkg # output binary files

Test

$ yarn run format
$ yarn run eslint
$ yarn run test:watch

Docker

$ docker build -t micro-medium-api .

# Push to dockerhub
$ git push

Note: Multi-stage builds are a new feature in Docker 17.05.

Github release / NPM release

$ npm version patch
$ git push

Inspiration

CONTRIBUTING

  • ⇄ Pull requests and ★ Stars are always welcome.
  • For bugs and feature requests, please create an issue.
  • Pull requests must be accompanied by passing automated tests ($ yarn run test).

CHANGELOG

LICENSE

MIT: http://michaelhsu.mit-license.org

Overview

Name With Ownerevenchange4/micro-medium-api
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 2)
Platform
License:MIT License
Release Count11
Last Release Namev2.1.0 (Posted on 2017-08-18 12:38:01)
First Release Namev1.0.1 (Posted on 2017-08-08 09:35:34)
Created At2017-08-07 11:43:41
Pushed At2018-01-15 01:34:59
Last Commit At2017-09-15 08:52:49
Stargazers Count140
Watchers Count3
Fork Count18
Commits Count66
Has Issues Enabled
Issues Count4
Issue Open Count3
Pull Requests Count9
Pull Requests Open Count15
Pull Requests Close Count8
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top