GithubHelp home page GithubHelp logo

sindresorhus / gh-latest-repos Goto Github PK

View Code? Open in Web Editor NEW
150.0 6.0 21.0 332 KB

Microservice to get the latest public GitHub repos from a user

Home Page: gh-latest-repos-sindresorhus.vercel.app

License: MIT License

JavaScript 100.00%
microservice github graphql repository api-server javascript nodejs

gh-latest-repos's Introduction

gh-latest-repos

Microservice to get the latest public GitHub repos from a user

I currently use this on my website.

It returns the latest repos along with some metadata. The result is cached for a day.

Example response

Usage

With now

$ git clone https://github.com/sindresorhus/gh-latest-repos.git
$ now gh-latest-repos --env GITHUB_TOKEN=xxx --env GITHUB_USERNAME=xxx --env ACCESS_ALLOW_ORIGIN=xxx --env MAX_REPOS=xxx

Manual

To deploy on your own hosting provider, check out 11e01ac, set the below environment variables, and start it with npm start.

Environment variables

Define the following environment variables:

  • GITHUB_TOKEN - Personal access token.
  • GITHUB_USERNAME - The username you like to get repos from.
  • ACCESS_ALLOW_ORIGIN - The URL of your website or * if you want to allow any origin (not recommended), for the Access-Control-Allow-Origin header.
  • MAX_REPOS - The number of repos returned. Optional. Defaults to 6.

gh-latest-repos's People

Contributors

kevva avatar kikobeats avatar mathdroid avatar richienb avatar sindresorhus avatar willnode avatar yaodingyd avatar yeskunall avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

gh-latest-repos's Issues

Add stargazers and fork count for each repo

Description

I like to see the number of stars and forks for my repositories, just like what's seen in Github Profile picture.

screen shot 2017-10-15 at 10 24 40 am

Use case is to simulate these cards in other websites.

Properly handling 'just unfrozed' requests

In some cases gh-latest-repos returns just an empty request [].

My hypothesis of cause

I observe in now that a frozen microservice means the process just been killed and only be activated again if a request are made, which is a problem because variables are lost and request to GitHub API have to be reinitiated again.

Because variables are lost, there's race condition between client request and request to GitHub API, hence gh-latest-repos just returns [] instead of waiting for response from GitHub API.

And because of #9 I realized that I can't make a workaround by requesting to gh-latest-repos twice. ๐Ÿ˜ข

Solution

I have my own patch to send 202 (Accepted) without cache control in case empty [] will send (so the client can make another request again)

if (responseText === '[]') {
	response.statusCode = 202;
	response.end('[]');
	return;
}

I can made a PR for this but I realize this is too much for just solving this problem so I have a better idea:

Make fetchRepos() to be synchronous?

Filter out repos without description

Issuehunt badges

Those are usually issue test-cases or other uninteresting stuff.

Would be nice to be able to do this in the GraphQL query, but I have no idea how to achieve that. Alternatively, we could do a fetch, filter, and then if less than MAX_REPOS do another fetch.


IssueHunt Summary

[
<
i
m
g

s
r
c

'
h
t
t
p
s
:
/
/
a
v
a
t
a
r
s
0
.
g
i
t
h
u
b
u
s
e
r
c
o
n
t
e
n
t
.
c
o
m
/
u
/
1
1
3
9
2
6
9
5
?
v

4
'

a
l
t

'
y
a
o
d
i
n
g
y
d
'

w
i
d
t
h

2
4

h
e
i
g
h
t

2
4

y
a
o
d
i
n
g
y
d
]
(
h
t
t
p
s
:
/
/
i
s
s
u
e
h
u
n
t
.
i
o
/
u
/
y
a
o
d
i
n
g
y
d
)

h
a
s

b
e
e
n

r
e
w
a
r
d
e
d
.

Backers (Total: $40.00)

Submitted pull Requests


Tips


IssueHunt has been backed by the following sponsors. Become a sponsor

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.