All Projects → caaatisgood → metabase-school

caaatisgood / metabase-school

Licence: other
A Metabase-integrated, real-time collaborative tool for writing SQL

Programming Languages

typescript
32286 projects
CSS
56736 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to metabase-school

Metabase
The simplest, fastest way to get business intelligence and analytics to everyone in your company 😋
Stars: ✭ 26,803 (+66907.5%)
Mutual labels:  metabase, sql-editor
datart
Datart is a next generation Data Visualization Open Platform
Stars: ✭ 1,042 (+2505%)
Mutual labels:  sql-editor
dbt-spotify-analytics
Containerized end-to-end analytics of Spotify data using Python, dbt, Postgres, and Metabase
Stars: ✭ 92 (+130%)
Mutual labels:  metabase
Cboard
An easy to use, self-service open BI reporting and BI dashboard platform.
Stars: ✭ 2,795 (+6887.5%)
Mutual labels:  metabase
JimuReport
「低代码可视化报表」类似excel操作风格,在线拖拽完成设计!功能涵盖: 报表设计、图形报表、打印设计、大屏设计等,完全免费!秉承“简单、易用、专业”的产品理念,极大的降低报表开发难度、缩短开发周期、解决各类报表难题。
Stars: ✭ 2,895 (+7137.5%)
Mutual labels:  metabase
eastmoney
python requests + Django+ nodejs koa+ mysql to crawl eastmoney fund and stock data,for data analysis and visualiaztion .
Stars: ✭ 56 (+40%)
Mutual labels:  metabase
hassio-addons
DSMR Reader Datalogger and Metabase Home Assistant Add-ons
Stars: ✭ 29 (-27.5%)
Mutual labels:  metabase
dockerX
Examples of amazing Docker/Docker-Compose/Docker Swarm technologies
Stars: ✭ 17 (-57.5%)
Mutual labels:  metabase
firefox explore
Explore your firefox browsing history trends using Metabase Analytics Tool
Stars: ✭ 24 (-40%)
Mutual labels:  metabase
metabase-datomic
Datomic driver for Metabase
Stars: ✭ 59 (+47.5%)
Mutual labels:  metabase
sso-examples
Single Sign-On (SSO) examples for Metabase integration
Stars: ✭ 39 (-2.5%)
Mutual labels:  metabase
Superset
Apache Superset is a Data Visualization and Data Exploration Platform
Stars: ✭ 42,634 (+106485%)
Mutual labels:  sql-editor
Poli
An easy-to-use BI server built for SQL lovers. Power data analysis in SQL and gain faster business insights.
Stars: ✭ 1,850 (+4525%)
Mutual labels:  sql-editor
Hue
Open source SQL Query Assistant service for Databases/Warehouses
Stars: ✭ 351 (+777.5%)
Mutual labels:  sql-editor
Sqlpad
Web-based SQL editor run in your own private cloud. Supports MySQL, Postgres, SQL Server, Vertica, Crate, ClickHouse, Trino, Presto, SAP HANA, Cassandra, Snowflake, BigQuery, SQLite, and more with ODBC
Stars: ✭ 4,113 (+10182.5%)
Mutual labels:  sql-editor
datastation
App to easily query, script, and visualize data from every database, file, and API.
Stars: ✭ 2,519 (+6197.5%)
Mutual labels:  sql-editor

Metabase School

Motivation

Almost a year ago (around Jan 2020), some folks from my company (Arc & Codementor), who are good at writing SQL, decided to start an entry-level SQL class for everyone. We had a few classes where everyone will listen to the SQL experts, and then go to one of our frequently used querying tool, Redash, for practice. That's how "SQL master class" started. Everything happened in the same meeting room, face-to-face, like a computer class in college.

Then COVID-19 hit, and we transitioned to a fully remote work policy. We immediately found it difficult to sustain "SQL master class" remotely. The remote tools we used (a.k.a., Zoom or Google Meet) didn't allow the SQL experts to understand everyone's learning status at any given time the way they could in a non-remote environment. Colleagues who were struggling with getting the query right couldn't get immediate help — there's just too high of a barrier to sharing queries with one another remotely.

That's how "Metabase School" was born. It's a real-time collaborative editor, integrated with the Metabase API, which lets multiple people write, view, and execute queries together.

Features

Click the image below to see a demo video:

Requirements

  • A Metabase instance with the following API endpoints:
    • POST /api/session
    • GET /api/user/current
    • GET /api/database
    • POST /api/dataset
  • Decide if you want to self-host Metabase School

Self-hosting

Metabase School uses Netlify & Netlify Functions to host the site and provide APIs that interact with your Metabase API.

As for the collaborative code editor, it leverages Firebase Realtime Database to make it work.

Set up Firebase

  • Create a Firebase project
  • Go to Project settings > Service Accounts, hit Generate new private key. A JSON config file should be downloaded.
  • Go to Realtime Database, and create your database in locked mode.
  • In Realtime Database > Rules > Edit, replace it with:
{
  "rules": {
    "classrooms": {
      ".read": "auth.admin_username === 'YOUR_HARD_CODED_USERNAME'",
      ".write": "auth.admin_username === 'YOUR_HARD_CODED_USERNAME'"
    }
  }
}

Set up Netlify

  • Fork this repository and deploy it to Netlify
  • Configure environment variables in Site settings > Build & deploy > Environment (see example below) then redeploy.
# Replace them with values in the JSON config file (from Firebase)
FB_SERVICE_ACCOUNT_TYPE=<YOUR_SERVICE_ACCOUNT_TYPE>
FB_SERVICE_ACCOUNT_PROJECT_ID=<YOUR_SERVICE_ACCOUNT_PROJECT_ID>
FB_SERVICE_ACCOUNT_PRIVATE_KEY_ID=<YOUR_SERVICE_ACCOUNT_PRIVATE_KEY_ID>
FB_SERVICE_ACCOUNT_PRIVATE_KEY=<YOUR_SERVICE_ACCOUNT_PRIVATE_KEY>
FB_SERVICE_ACCOUNT_CLIENT_EMAIL=<YOUR_SERVICE_ACCOUNT_CLIENT_EMAIL>
FB_SERVICE_ACCOUNT_CLIENT_ID=<YOUR_SERVICE_ACCOUNT_CLIENT_ID>
FB_SERVICE_ACCOUNT_AUTH_URI=<YOUR_SERVICE_ACCOUNT_AUTH_URI>
FB_SERVICE_ACCOUNT_TOKEN_URI=<YOUR_SERVICE_ACCOUNT_TOKEN_URI>
FB_SERVICE_ACCOUNT_AUTH_PROVIDER_X509_CERT_URL=<YOUR_SERVICE_ACCOUNT_AUTH_PROVIDER_X509_CERT_URL>
FB_SERVICE_ACCOUNT_CLIENT_X509_CERT_URL=<YOUR_SERVICE_ACCOUNT_CLIENT_X509_CERT_URL>

# The value should be the same as the one in your Realtime Database Rules
ADMIN_USERNAME=<YOUR_HARD_CODED_USERNAME>

# Values can be found in your Firebase project settings
FB_DATABASE_URL=<YOUR_FIREBASE_DATABASE_URL>
NEXT_PUBLIC_FIREBASE_API_KEY=<YOUR_FIREBASE_API_KEY>
NEXT_PUBLIC_FIREBASE_PROJECT_NAME=<YOUR_FIREBASE_PROJECT_NAME>
NEXT_PUBLIC_FIREBASE_DATABASE_URL=<YOUR_FIREBASE_DATABASE_URL>

# Your Metabase API host
NEXT_PUBLIC_METABASE_API_HOST=<YOUR_METABASE_API_HOST>
  • Visit your Netlify app
  • Login with the exact credential you used for your Metabase, and you're good to go!

Not to self-host

Development

Installation

  • Clone this repo
  • Install dependencies
npm i
npm i -g netlify-cli

Configure environment variables

  • Rename .env.development.example to .env.development then update the values in it. This file is for Netlify Functions.
  • Rename .env.local.example to .env.local then update the values in it. This file is for Next.js.

Start developing

ntl dev
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].