Microservice for fetching the latest posts of Medium with GraphQL.
Further reading: [δΈζ] Microservice η’εδΊ€δ» - Dockerize θ Zeit JavaScript θ·¨εΉ³ε°θ§£ζ±ΊζΉζ‘
- Use GraphQL.
- Dataloader for per-request memory cache.
- Rate-limiting 1 requests per sec.
One click deploys to β³ now
Download from GitHub latest release.
$ ORIGIN=$YOUR_DOMAIN \
./micro-medium-api-macos --port $PORT
Note: You can run it without Node.js installed.
Pull from dockerhub.
$ docker pull evenchange4/micro-medium-api:latest
$ docker run --rm -it \
-p $PORT:3000 \
-e "ORIGIN=YOUR_DOMAIN" \
evenchange4/micro-medium-api:latest
Install from npm.
$ npm i micro-medium-api -g
$ ORIGIN=$YOUR_DOMAIN \
micro-medium-api --port $PORT
Note: You should use Node.js >= 8 .
ENV | Required | Default | Description |
---|---|---|---|
ORIGIN |
* |
Setup access-control-allow-origen for CORS. |
$ 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]
- [GET] /graphql
- [POST] /graphql
- GraphiQL
- HTTP GET example
- Real-World case: michaelhsu.tw [source code]
Note: You should deploy your own service for production usage.
- 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
- 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
$ yarn run format
$ yarn run eslint
$ yarn run test:watch
$ docker build -t micro-medium-api .
# Push to dockerhub
$ git push
Note: Multi-stage builds are a new feature in Docker 17.05.
$ npm version patch
$ git push
- β 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
).