micro-medium-api

Microservice for fetching the latest posts of Medium with GraphQL.

Github星跟踪图

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

主要指标

概览
名称与所有者evenchange4/micro-medium-api
主编程语言JavaScript
编程语言JavaScript (语言数: 2)
平台
许可证MIT License
所有者活动
创建于2017-08-07 11:43:41
推送于2018-01-15 01:34:59
最后一次提交2017-09-15 08:52:49
发布数11
最新版本名称v2.1.0 (发布于 2017-08-18 12:38:01)
第一版名称v1.0.1 (发布于 2017-08-08 09:35:34)
用户参与
星数141
关注者数2
派生数18
提交数66
已启用问题?
问题数4
打开的问题数3
拉请求数9
打开的拉请求数15
关闭的拉请求数8
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?