Coder Social home page Coder Social logo

quadratichq / quadratic Goto Github PK

View Code? Open in Web Editor NEW
2.7K 26.0 128.0 1.08 GB

Quadratic | Data Science Spreadsheet with Python & SQL

Home Page: https://QuadraticHQ.com

License: Other

JavaScript 2.47% HTML 0.46% CSS 0.28% TypeScript 48.75% Python 1.56% Rust 45.95% SCSS 0.06% Procfile 0.01% Shell 0.35% Dockerfile 0.05% PLpgSQL 0.07%
python data-science spreadsheet sql quadratic etl data-engineering data-analysis data wasm

quadratic's Introduction

E2E Tests Python Tests Unit Tests Twitter Follow

quadratic icon small The infinite multiplayer spreadsheet, with Python, SQL, and AI

Modern multiplayer spreadsheet with Python, AI, and SQL built-in.

Built with Rust + WASM + WebGL to run seamlessly at 60+ FPS in the browser.

Get from data to insight more effectively as a team.

Quadratic in a standalone macOS window; users are working together on a spreadsheet to measure the life expectancy in Canada.

Production build

The main branch is always live for individuals and teams to use.

Try it out! ⟶ https://app.quadratichq.com

Documentation

Read the documentation ⟶ https://docs.quadratichq.com

Community

Join the conversation on our Discord channel ⟶ https://discord.gg/quadratic

What is Quadratic?

Quadratic is a Web-based spreadsheet application that runs in the browser and as a native app (via Electron).

Our goal is to build a spreadsheet that enables you to pull your data from its source (SaaS, database, CSV, API, etc) and then work with that data using the most popular data science tools today (Python, Pandas, SQL, JS, Formulas, etc).

What can I do with Quadratic?

  • Build dashboards
  • Create internal tools in minutes
  • Quickly mix data from different sources
  • Explore your data for new insights
  • Visualize your Python workflows as a spreadsheet
  • Mix technical and non-technical team members in your analysis

Development progress and roadmap

Quadratic is in Beta.

  • WebGL Grid (pinch and zoom grid)
  • Open and Save files locally
  • Python, Pandas Support (WASM)
  • Excel Formula Support (in progress)
  • Cell Formatting (issue #44)
  • Undo / Redo (issue #42)
  • Multiplayer Support
  • Charts and Graphs
  • Teams support
  • JS support
  • SQL Database Support
  • AI Auto Complete

Feature request or bug report? Submit a Github Issue.

Want to contribute? Read our Contribution Guide.

Want to learn more about how Quadratic works? Read the How Quadratic Works doc.

Examples

Access example sheets - Examples

Quadratic is hiring

Check out our open roles ⟶ careers.quadratichq.com

quadratic's People

Contributors

ajboots avatar asaaj avatar bartbroere avatar bibhubhatta avatar boaarmpit avatar davidfig avatar davidkircos avatar ddimaria avatar dependabot[bot] avatar hactarce avatar jimniels avatar juanbercoff avatar kieranholroyd avatar ltyl avatar luke-quadratic avatar manchegop avatar n-demir avatar nerptastic avatar paweljastrzebski avatar tmiller avatar waveminded avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

quadratic's Issues

Demos

  • Create a way to load and save files (to json, simple)
  • Create a few examples to be able to demo

Improve Quadratic Cell API in Python

getCell()
getCells()
c()

  • Come up with easier to use functions to get quadratic data
  • Get as pandas data frame
  • Remove necessity to add await (very confusing for typical python users)
  • Return cells in a native type that is easier to work with and more beginner friendly
    Includes making cell type work for default operations like adding.

Cell Interaction: Notes

Using this issue to keep track of common interaction issues:

  • When moving back to a python cell, it should save your scroll position.
  • Command + Enter should not close the editor
  • Better indicator of cells that contain code

Integrating Python requests

As discussed before with @davidkircos , it would be cool if requests could be integrated in Quadratic.

This in turn could enable all kinds of cool use cases, like loading CSV from an URL.

import pandas
from io import StringIO
import requests

pandas.read_csv(StringIO(requests.get('https://gist.githubusercontent.com/netj/8836201/raw/6f9306ad21398ea43cba4f7d537619d0e07d5ae3/iris.csv').text))

My current progress of shimming requests is tracked here bartbroere/requests#1 and here: https://github.com/NetherlandsForensicInstitute/pyodide/blob/0.19.0/packages/requests/meta.yaml

It is integrated in custom Pyodide builds by patching the original requests package. I would be happy to help and get this to work.

Cleanup Before Release

  • Bug where cursor moves but the editor does not.
  • Make sure self explanatory enough for someone coming in for the first time
  • - Opens a example file by default
  • Zoom bar
  • Static items in top bar
  • Make bottom bar show cursor location and last edited
  • CodeEditor
  • - show commands, buttons
  • - show selected cell
  • - ? add cursor showing which cell is currently being edited? (stashed)
  • make sure npm run dev works properly

Copy Paste Error

Bug

What is the issue?

Copy pasting a group of cells results in error page

How to reproduce the issue?

Copy paste any cells that contains the table data and paste it in an empty location.

What are the environment details?

OS: macOS Monetery 12.0.1
System: Macbook M1 Pro 2021
node version: 10.15.1
npm version: 7.24.2
browser: Firefox 99.0.1

Screenshots

Screen Shot 2022-04-24 at 11 41 55

QuadraticDependencyGraph Usage Bugs

The dependency graph usage has many bugs.

  • Clean up cell loop to not run cells multiple times
  • Updates to Cell deps does not remove old deps
  • Deleted Cells are not removed from Dep Tree
  • Everywhere UpdateCellsDB or DeleteCellsDB are called we need to call actions instead that manage the DGraph as well as updating the DB

Optional -- Probably Move to A Future Task

  • Tests to verify everything is working properly.
  • Loops can be created

Progress Indicator for Cells While Running Code

Show progress for cells that are running.
If a cell returned an array, show that space as allocated while running. Maybe keep old values as shimmering?
Move Python code execution to a WebWorker (if feasible).

Python Errors: Stack Trace is Wrong

Line errors are not helpful when they come from other packages. Says a line number that isn’t in your code, without the full stack trace.

Example formula:

import pandas as pd

a = pd.DataFrame()
a[0][0]

Screen Shot 2022-04-20 at 3 08 44 PM

Demo App Collaborative Files

Dexie Cloud

You can use your when creating databases using npx dexie-cloud create. Let me know if you need more email addresses added!

Some new docs were added [Dexie Cloud docs](https://dexie.org/cloud/docs/) in recent days. Unless you already have the grip of it, one way to get started with the service is by playing around with the [todo-list sample app](https://github.com/dexie/Dexie.js/tree/master/samples/dexie-cloud-todo-app).

feat: Data Types

  • Have grid cells format text for common data types: currency, date, number, etc
  • In Python take cells input and interpret them natively in their Quadratic Cell type. Ex if a user inputs a date, when the cell data arrives in python, it should be a DateTime type.

Resizable Columns

Quadratic columns are currently a fixed width.

To Do list

  • UI for column header
  • UI for row header
  • UI for resizing columns
  • Backend for storing column widths
  • Make sure all offsets in the code work properly with columns of varying width (clicking on a cell, drawing cells, etc.)

ReferenceError: WebAssembly is not defined

In browsers where WASM is not supported show a modal asking users to use Chrome.

Sentry Issue: QUADRATIC-4

ReferenceError: WebAssembly is not defined
  at abort (/pyodide/v0.19.0/full/pyodide.asm.js:14:202379)
  at None (/pyodide/v0.19.0/full/pyodide.asm.js:14:191667)
  at loadPyodide (../src/js/pyodide.js:282:9)

Alert on Startup to Use Chrome

Quadratic is only officially supported on Chrome and stable on Firefox. Safari is not well supported.

We should create a welcome message for users of Safari encouraging them to use Chrome.

Cell Select & Multi Select Bug (rewrite)

https://github.com/davidkircos/quadratic/blob/06b4b6e012d7c49c7513dc6bca2d80a5bc3d65e1/src/grid/interaction/interaction.ts#L106-L111

Does not work for selecting a single cell, or selecting cells anywhere in the negative cell space.

  • Write multi select cursor as ReactPixi element
  • Write select logic on QuadraticGrid
  • Rewerite input box
  • Double click to edit cell
  • Move input state to atom
  • Cleanup - Delete old unused logic
  • Cleanup - File organization
  • Cleanup - Move Atoms to files

Database Support

Knex.js for connecting databases

Should work for npm start & electron. No support for "Cloud".

  • get node+express running alongside app (web + electron)
  • store database credentials in localstorage
  • pipe requests through Node, Express API running locally
  • Database credentatls are added via file bar
  • Databaes are queried via cells.
  • Create SQL Editor
  • Select target database, or grid

Python client for uploading data

Hi there! First of all love your product and the direction it's going. I come from a background of using numpy, pandas, vaex etc on a daily basis and so have learned to be pretty comfortable querying and manipulating data in python. Doing the same operations through google sheets, by comparison, makes me surprisingly frustrated.

I run a lot of ML experiments that output numbers it would be easiest for me to see in a spreadsheet format. Recently I looked into using the google sheets API or python clients (pygsheets and gsheets) and while the onboarding experience was quite terrible (it took so long to figure out authentication) the eventual experience has been quite nice for me. To keep it simple, I generate a pandas dataframe and push it up to a new worksheet I create for that experiment.

That get's me now 80% of the way there because I then just have to apply some styling and copy some additional cells from a template I have and I get a mostly programmatically auto-generated output from my freeform experiments, which I love!

So, is there any ideas of in the future making a python client that makes it very easy to use quadratic as the frontend for ML experiment results or any other data science workflow? A lot of folks use jupyter notebook variants or streamlit, but they don't quite work as well as I think this could.

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.