GithubHelp home page GithubHelp logo

teaglebuilt / gatsby-theme-binder Goto Github PK

View Code? Open in Web Editor NEW
10.0 3.0 0.0 83 KB

:moon: Gatsby theme for interactive remark code blocks powered by jupyter kernels for code execution.

JavaScript 59.41% CSS 40.59%

gatsby-theme-binder's Introduction

Gatsby Theme Binder

Power your gatsby site with kernels from jupyter Powered by mybinder.org

This project was initially inspired by Min RK's Thebelab package. Then finding Juniper. The goal is take this functionality wrapped into a gatsby package that allows for customization and accesibility.

How it works

The theme will connect to a launched docker image of your chosen github repository as a jupyter notebook. An active connection will persist to the given kernel that is active in your notebook. You can choose which kernel to connect to in your gatsby config. You can use this theme just for a source connection with server sent events, or you can also import the interactive text editor and execute / render results from the kernel itself as a remark component. There are further instructions below.

Note, this is my first gatsby theme and I am not sure if this is the most effective approach. I would appreciate any feedback on how this theme could improve in terms of usage and accesibility. Thankyou for testing this out and please get in touch with me for feedback.

Install


npm install @teaglebuilt/gatsby-theme-binder

gatsby-config.js

plugins: [
  {
    resolve: `@teaglebuilt/gatsby-theme-binder`,
    options: {
      contentPath: "content",
      types: ["py"],
      binder: {
        repo: "teaglebuilt/Cookbook",
        branch: "master",
        kernelType: "python3"
      }
    }
  }
];

NOTE: If you added a filetype to the types option, you will see an error when you bring up the browser on localhost. This is because the theme created the folder for code, but there is not a file in the directory for the given filetype. Add a file with some code and the error will disappear. This is because the files are loaded into graphql to be queried in the componenmt.

  • contentPath - name of parent directory where two folders will be created within.

    • posts ..markdown folder
    • code ..folder for code files...python, rust, javascript, etc...
  • types - Your code files will load into graphql so make sure and reference any file types that you want to include that might exist in the code folder.

  • binder - list the repo, branch, and kernel that you wish to connect to when binder has launched the docker image with the given kernel.

How to import the markdown component

import loadAst and pass in the htmlAst to render as markdown. Example below

import React from "react";
import { graphql } from "gatsby";
import Layout from "../components/layout";
import { loadAst } from "@teaglebuilt/gatsby-theme-binder/src/markdown";

export const query = graphql`
  query($Slug: String) {
    markdownRemark(fields: { slug: { eq: $Slug } }) {
      htmlAst
      frontmatter {
        id
        title
        description
      }
    }
  }
`;

const PostTemplate = ({ data }) => {
  const markdown = data.markdownRemark;
  const { frontmatter, htmlAst } = markdown;
  const { title, description } = frontmatter;
  const html = loadAst(htmlAst);
  return (
    <Layout title={title} description={description}>
      {html}
    </Layout>
  );
};

export default PostTemplate;

gatsby-theme-binder's People

Contributors

teaglebuilt avatar

Stargazers

Satya Adda avatar Ryan Sudhakaran avatar  avatar Jonny Hou avatar Dilan David avatar Chenhui Zhang avatar Frédéric Montet avatar  avatar Raj K Singh avatar Todd Birchard avatar

Watchers

James Cloos avatar  avatar  avatar

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.