/blocks-platform

The main prototype for GitHub Blocks

Primary LanguageTypeScriptMIT LicenseMIT

GitHub Blocks

Caution

Blocks was sunset on Dec 15th 2023. This repository contains the prototype platform that ran Blocks. Since the shutdown of Blocks, it is being made available AS-IS, for learning purposes. There's no support and we don't have the bandwidth to help people with questions.

📣 Read this if you're part of the team creating the GitHub Blocks projects.

This repo contains the source code for a prototype app that demos the GitHub Blocks project.

Developing locally

This app uses a GitHub App to authenticate users and access resources on GitHub, with help from the NextAuth package. You'll need to create a GitHub App app and provide the required environment variables in the .env.local file.

Visit Register new GitHub App to set up a new app and provide the following information in the form fields:

  • "GitHub App name": a name to uniquely identify your app
  • "Homepage URL": http://localhost:3000/
  • "Callback URL": http://localhost/api/auth/callback/github
  • "Request user authorization (OAuth) during installation": checked
  • "Webhook" / "Active": unchecked
  • "Repository permissions":
    • "Administration": Read-only
    • "Contents": Read and write
    • "Pull requests": Read and write
  • "Where can this GitHub App be installed?": Any account

After creating the app:

  • "Generate a new client secret" and copy it to .env.local (see below)
  • "Generate a private key" and copy it to .env.local (see below)

Now fill in .env.local as follows:

GITHUB_ID="..." # your app's "Client ID"
GITHUB_PRIVATE_KEY="""
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
""" # the contents of the private key file
GITHUB_SECRET="..." # your app's "Client secret"
GITHUB_APP_SLUG="..." # the last path segment of the "Public link"
NEXTAUTH_SECRET="secret"
NEXTAUTH_URL="http://localhost:3000"
NEXT_PUBLIC_FUNCTIONS_URL=https://next-waitlist.azurewebsites.net/
# if you're running the sandbox app locally
NEXT_PUBLIC_SANDBOX_DOMAIN=http://localhost:3001

To start working:

yarn      # install the deps
yarn dev  # start up the server

In the browser, you can choose the file on GitHub to view with url params:

owner  # the GitHub org
repo   # the GitHub repo
path   # the path to the file

Deploying to staging

Handled automatically by our GitHub action.

Our staging site is HERE.

Deploy to production

  1. Navigate to the azure project for githubnext-blocks/staging
  2. Click "Swap" button
  3. Then swap" again on the sidebar

Updating Stars List

Occasionally we'll need to update the list of GitHub Stars. To make this easier, I've added a script to package.json stars:update which fetches the list of stars from https://api-stars.github.com/ and writes them to a file on disk, stars.json.