All Projects → grimmer0125 → search-github-starred

grimmer0125 / search-github-starred

Licence: MIT license
Full-Text Search the readme, description, homepage and URL of your GitHub starred repository. Use GitHub OAuth 2, React, Redux, Golang (server side), Elasticsearch, Redis.

Programming Languages

go
31211 projects - #10 most used programming language
javascript
184084 projects - #8 most used programming language
HTML
75241 projects
SCSS
7915 projects

Projects that are alternatives of or similar to search-github-starred

benjamincarlson.io
My personal website built with Next.js, Chakra UI, Firebase, and next-mdx-remeote.
Stars: ✭ 102 (+580%)
Mutual labels:  github-api, google-analytics
fixtures
Fixtures for all the octokittens
Stars: ✭ 82 (+446.67%)
Mutual labels:  github-api
ember-google-analytics-embed
An Ember Addon for adding analytics visualizations using the Google Analytics Embed API.
Stars: ✭ 26 (+73.33%)
Mutual labels:  google-analytics
larry
Larry 🐦 is a really simple Twitter bot generator that tweets random repositories from Github built in Go
Stars: ✭ 64 (+326.67%)
Mutual labels:  github-api
github-markdown-render
Display Markdown formatted documents on your local web server using GitHub's Markdown rendering API and CSS to mimic the visuals of GitHub itself.
Stars: ✭ 18 (+20%)
Mutual labels:  github-api
Recent-Commits-on-Repository
Find a github repository an its recent commits
Stars: ✭ 12 (-20%)
Mutual labels:  github-api
ga-fetcher
Fetch Google Analytics data with Google APIs in Node.js 🚠
Stars: ✭ 14 (-6.67%)
Mutual labels:  google-analytics
dashflare
🕵🏼‍♀️ Open Source and privacy-focused analytics solution. 📊 Advanced monitoring for your website behind Cloudflare
Stars: ✭ 78 (+420%)
Mutual labels:  google-analytics
github-app
node module to handle authentication for the GitHub Apps API
Stars: ✭ 51 (+240%)
Mutual labels:  github-api
artefactory-connectors-kit
ACK is an E(T)L tool specialized in API data ingestion. It is accessible through a Command-Line Interface. The application allows you to easily extract, stream and load data (with minimum transformations), from the API source to the destination of your choice.
Stars: ✭ 34 (+126.67%)
Mutual labels:  google-analytics
github-admin
vue和element-ui搭建一個後台管理系統,使用github提供的api搞事情。輸入您的github賬號名自動幫你生成基本的github信息哦😯
Stars: ✭ 15 (+0%)
Mutual labels:  github-api
awesome-generator
Generate awesome list over Github API
Stars: ✭ 46 (+206.67%)
Mutual labels:  github-api
2017-year-in-review
Year in Review with R Rmd Template
Stars: ✭ 34 (+126.67%)
Mutual labels:  github-api
neo
A Discord bot built to satisfy a multitude of needs
Stars: ✭ 16 (+6.67%)
Mutual labels:  github-api
git-down-repo
Download git-repo for any url
Stars: ✭ 50 (+233.33%)
Mutual labels:  github-api
org-stats
Get the contributor stats summary from all repos of any given organization
Stars: ✭ 151 (+906.67%)
Mutual labels:  github-api
myPortfolio
This is a portfolio application built by using Next.js, ChakraUi, Typescript and Dev.to api.
Stars: ✭ 127 (+746.67%)
Mutual labels:  github-api
journalist
App to write journal digitally. Simple as that.
Stars: ✭ 23 (+53.33%)
Mutual labels:  github-api
GitHubReadmeWebTrends
An automated tool created using Azure Functions that double checks each Readme to ensure every repository is leveraging Web Trends
Stars: ✭ 13 (-13.33%)
Mutual labels:  github-api
GAlogger
Log R Events and R Usage to Google Analytics
Stars: ✭ 23 (+53.33%)
Mutual labels:  google-analytics

search-github-starred

Full-Text Search the readme, description, homepage and URL of your GitHub starred repository. Try https://searchgithub.herokuapp.com which is kept alive by synthetics of newrelic. Update: Since the AWS service is not paid so this site is not working.

This is the missing function on GitHub. GitHub site only supplies the function to search repo-descripton and also only exact phrase match. This site supports both types. Type "A B" for phrase A B and type A B for sequence not important case.

Please try: https://searchgithub.herokuapp.com.

It uses OAuth 2, React, Redux, Golang (server side), Elasticsearch, Redis and so on. Will open source later.

Local Development

  1. npm install

  2. install go extension of Visual Studio Code.

  3. change the necessary fields in .vscode/launch.json (YOUR_ fields), example:

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Launch",
                "type": "go",
                "request": "launch",
                "mode": "debug",
                "remotePath": "",
                "preLaunchTask": "buildclient",
                "port": 2345,
                "host": "127.0.0.1",
                "program": "${workspaceRoot}",
                "env": {
                    "GITHUB_CLIENT_ID" : "YOUR_GITHUB_CLIENT_ID", //ouath of your github app
                    "GITHUB_CLIENT_SECRET": "YOUR_GITHUB_CLIENT_SECRET",  //ouath of your github app
                    "CallbackURL": "http://YOUR_SITE_ADDRESS/auth/callback/",
                    "AWS_ACCESS_KEY_ID": "YOUR_AWS_ACCESS_KEY_ID",  // elasticserach of aws
                    "AWS_SECRET_ACCESS_KEY": "YOUR_AWS_SECRET_ACCESS_KEY", // elasticserach of aws
                    "REDIS_URL": "YOUR_REDIS_URL" //setup your heroku redis or other service's redis
                },
                "args": []
            }
        ]
    }
  4. use Visual Studio Code to launch the server.

  5. open localhost:5000.

YOUR_REDIS_URL could be redis://localhost:6379 or redis://h:YOUR_REDIS_PWD@REDIS_ADDRESS:PORT. You can use docker run -p 6379:6379 --name some-redis -d redis to run a local dockerized Redis.

Set up AWS' Elasticserach

The keypoint is to create a AMI role to have a permission to write to AWS' Elasticsearch, then only give anonymous users the read permission.

Set up an AWS AMI

This project uses Resource-based Policies, so it does not need to add any permission to this AMI user.

Set up Elasticsearch

Launch a Elasticsearch service and choose version 2.3. The current go API is not updated to the latest Elasticsearch version yet.

Then create a new Domain, e.g. searchgithub. Then modify the access policy like this,

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": “Domain ARN/githubrepos/_search"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "User ARN"
      },
      "Action": "es:*",
      "Resource": "Domain ARN/*"
    }
  ]
}

githubrepos is the fixed Elasticsearch index in this project. The first statement is let browser have read permission, and the the second is to let the server have the write permission if it has AWS access key of the AMI user.

The account name of each user will be used as the type of Elasticsearch.

Modify the Elasticsearch setting in indexAPI.go and repos.js

indexAPI.go:

awsURL = "AWS_ELASTICSEARCH_DOMAIN_ENDPOINT"

repos.js:

const client = new elasticsearch.Client({
  host: 'AWS_ELASTICSEARCH_DOMAIN_ENDPOINT/githubrepos',
});

AWS_ELASTICSEARCH_DOMAIN_ENDPOINT could be found out in AWS dashboard. E.g. https://search-searchgithub-XXXXXXXXXXXXXXXXXXXXXXXXXX.us-west-2.es.amazonaws.com

use locally dockerized Elasticsearch

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" grimmer0125/elasticsearch:2.3

Then use http://localhost:9200 as the above AWS_ELASTICSEARCH_DOMAIN_ENDPOINT in the codes.

Deployment on Heroku

Heroku' Redis add-on will automatically create the REDIS_URL as the environment config variable, shown in the dashboard setting page. The other variables needed to be added in the Heroku setting page. https://devcenter.heroku.com/articles/heroku-redis#configuring-your-instance indicates that its REDIS_URL may change at any time.

Referenced repository

The parameters and the flow about github api calls are from https://github.com/mjmsmith/starredsearch, which is a excellent project and uses Swift on server side to implement the function seraching the information on starred repositories. This repo is based on that repository and add the feature, fulll-text (elasticserach).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].