MySQL meets Jupyter notebooks. Grasp provides a new way to learn and write SQL, by providing a coding-notebook style with runnable blocks, markdown documentation, and shareable notebooks. ✨

Overview

A New Way to Write & Learn SQL

Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Roadmap
  4. Contributing

About The Project

Grasp provides a unique and easier way to write and learn SQL. It's like Jupyter notebooks except that you can run SQL queries as code blocks. With Grasp, we wanted to create a coding notebook-like experience but for executing SQL. The main goal was to make it easy for people to learn SQL, by providing the ability to:

  1. Save the queries and their results.
  2. Share notebooks so that others can view them.
  3. Add Markdown documentation in between code blocks to provide context.

Grasp provides ways to accomplish all that! Here's what a typical Grasp notebook looks like:

Grasp Notebook Screen Shot

(back to top)

Built With

  • Python
  • FastAPI
  • Planetscale
  • React.js

(back to top)

Getting Started

To get a local copy up and running follow these simple steps.

Prerequisites

  • npm
    npm install npm@latest -g

Installation

  1. Set up your Planetscale database and add DATABASE_URL in a .env file in the root directory. Also generate a SECRET_KEY for JWT auth. You can use the following command:
    openssl rand -hex 32
  2. Clone the repo
    git clone https://github.com/outoflaksh/grasp-notebooks.git
  3. Install the Python dependencies using Pipenv or the requirements.txt file.
    pip3 install -r requirements.txt
    OR
    pip3 install pipenv
    pipenv install
    pipenv shell
    Then, run the FastAPI server with Uvicorn.
    uvicorn api.main:app
  4. Install dependencies for the React frontend.
    cd frontend && npm install
  5. Run the React server.
    npm install

(back to top)

Roadmap

  • Data visualisation
  • Export notebooks as PDF files
  • Collaborative notebooks

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

You might also like...

jQuery plugin for showing a calendar yearview with blocks (github contributions style)

jQuery plugin for showing a calendar yearview with blocks (github contributions style)

calendar-yearview-blocks jQuery plugin for showing a calendar yearview with blocks (github contributions style) Code adopted from https://github.com/b

Feb 28, 2021

Mercury: easily convert Python notebook to web app and share with others

Mercury: easily convert Python notebook to web app and share with others

Mercury Share your Python notebooks with others Easily convert your Python notebooks into interactive web apps by adding parameters in YAML. Simply ad

Dec 30, 2022

Library to make your web page shareable fast and easy in all the majors social networks.

SocialShareJS This is a simple libray to make your web page shareable fast and easy. Its allow to include the social share link of the major social ne

Jul 24, 2022

An ESLint shareable configuration that used in our projects.

eslint-config An ESLint shareable configuration that used in our projects. Install npm install -D @rahagia/eslint-config or with yarn yarn add -D @rah

Apr 18, 2022

An ESLint shareable configuration that used in our projects.

eslint-config An ESLint shareable configuration that used in our projects. Install npm install -D @clytage-pkg/eslint-config or with yarn yarn add -D

Nov 17, 2022

Ilse Langnar's Notebook is an implementation of the Vitruvian Brain framework

Ilse Langnar's Notebook is an implementation of the Vitruvian Brain framework

Ilse Langnar's Notebook is an implementation of the Vitruvian Brain framework. It works as a cross-platform note-taking application, reference, bibliography, spaced repetition(no format lock-in) and other features.

Jan 3, 2023

My custom shareable eslint configs...

My shared dx Structure . └── packages └── eslint-config-bases Packages Name Description Version @belgattitude/eslint-config-bases Opinionated esl

Dec 15, 2022

Web-Technology with Aj Zero Coding. In this tutorial we learn front-end and back-end development.

Installation through NPM: The jQWidgets framework is available as NPM package: jQuery, Javascript, Angular, Vue, React, Web Components: https://www

Nov 19, 2022

This Next.js app is designed to be used with the Figment Learn Pathways, to help developers learn about various blockchain protocols such as Solana, NEAR, Secret, Polygon and Polkadot!

This Next.js app is designed to be used with the Figment Learn Pathways, to help developers learn about various blockchain protocols such as Solana, NEAR, Secret, Polygon and Polkadot!

👋🏼 What is learn-web3-dapp? We made this decentralized application (dApp) to help developers learn about Web 3 protocols. It's a Next.js app that us

Oct 1, 2022
Owner
Lakshya
i know how to center a div
Lakshya
Create testable, reproduceable documentation with Jupyter notebooks

Create Testable, Reproduceable Docs and Blogs With Notebooks Never copy and paste code into documentation again! ?? See a live example of a post made

Outerbounds 29 Dec 8, 2022
WhyProfiler is a CPU profiler for Jupyter notebook that not only identifies hotspots but can suggest faster alternatives.

Introduction WhyProfiler is a CPU profiler for Jupyter notebook that not only identifies hotspots but can suggest faster alternatives. It is powered b

Robusta 44 Dec 5, 2022
Interactive Text Annotation for Jupyter Notebook/Lab

Interactive Text Annotation for Jupyter Notebook/Lab Perform entity extraction inline without leaving your notebook. Iteratively label and train a mod

null 8 Dec 26, 2022
Data structures & algorithms implementations and coding problem solutions. Written in Typescript and tested with Jest. Coding problems are pulled from LeetCode and Daily Coding Problem.

technical-interview-prep Data structures & algorithms implementations and coding problem solutions. Written in Typescript and tested with Jest. Coding

Lesley Chang 7 Aug 5, 2022
Chrome Extension To Reveal Observable Notebooks As Quarto QMD {ojs} Blocks & provide downloads of FileAttachments and zipped Quarto project

reveal-qmd Chrome Extension To Reveal Observable Notebooks As Quarto QMD {ojs} Blocks Usage: git clone [email protected]:hrbrmstr/reveal-qmd In Chrome (e

boB Rudis 20 Nov 29, 2022
Learn GraphQL by building a blogging engine. Create resolvers, write schemas, write queries, design the database, test and also deploy.

GraphQL Blog graphqlblog.com Learn GraphQL by building a blogging engine. Create resolvers, write schemas, write queries, design the database, test an

GraphQLApps 6 Aug 17, 2022
🌸 A fast and fun way to learn Japanese alphabets: hiragana & katakana. Don't wait - learn now!

Sakurator | Start learning 日本語 here Sakurator (Website publish date: ~4-6 April '22) - a personal trainer for learning Japanese alphabets (hiragana &

Anatoly Frolov 3 Jun 22, 2022
Stochastic neighbor embedding meets Voronoi tessellation.

Sneronoi This repository contains the source code for the generative art collection Sneronoi, written by Claus O. Wilke and released on fx(hash) on De

Claus Wilke 5 Sep 2, 2022
⏱ A Google Chrome extension for keeping track of who is talking during Google Meets

Am I Talking A Lot? ⏱ A Google Chrome extension for keeping track of who is talking during Google Meets Features Tracks talking time for each particip

Sean McPherson 8 Oct 5, 2022
A docsify.js plugin for rendering LaTeX math blocks from markdown

docsify-latex A docsify.js plugin for typesetting LaTeX with display engines from markdown. Docsify + LaTeX = ❤️ Installation Add JavaScript LaTeX dis

Scruel Tao 8 Dec 25, 2022