JSON Canvas – An open file format for infinite canvas data

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • obsidian-chat-stream

    Obsidian canvas plugin for using AI completion with threads of canvas nodes

  • I would highly recommend using this plugin with it - https://github.com/rpggio/obsidian-chat-stream

    It has basically changed the way I interact with LLMs and research and plan things

  • WBO

    Online collaborative Whiteboard that is simple, free, easy to use and to deploy

  • As a maintainer of an open source JavaScript infinite canvas application [1], I was very interested, and now I am a little disappointed. The set of supported objects on the canvas is quite minimal.

    [1] https://github.com/lovasoa/whitebophir

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

    SurveyJS logo
  • obsidian-api

    Type definitions for the latest Obsidian API.

  • I really like that you commit to keep this stable and open.

    Do you plan to make the TypeScript definition part of this new site?

    https://github.com/obsidianmd/obsidian-api/blob/master/canva...

    For me it's easier to read TS format.

  • Magnit.NodeGraph

    Web Component implementation of a node graph using vanilla javascript.

  • Oh sweet! I was in the middle of building my own version of a node-graph component (ref: https://github.com/catapart/Magnit.NodeGraph), but the `canvas.js` implementation from this JsonCanvas repo is exactly what I was trying to build. I really, really like how elegantly uncomplex it is. Could not have been more exactly what I was looking for. So thanks for this!

    As far as the spec, I don't really like the idea of forcing well-known types for the nodes. A generic spec should allow for entirely generic nodes that can represent themselves to consuming functions with a 'type' property as a key, as well as arbitrary data types linked to arbitrary nodes. For instance: one of my use cases is an 'addition' node, which would take two number values and produce a number value. This node would also use an entrance execution pin as well as an exit execution pin.

    If the spec were to include a 'pin' data type and capture the type keys and labels for pins, those pins could be stored as a list on the node. Then, the type property could just tell the executing context how to route the node data and the pin properties would bring type safety to the functional inputs passed to the mapped function.

    Anyway, I assume all of that is out of scope for initial offerings, but that's my two cents on a generalized node spec. Regardless, thanks again for the sweet, simplistic node graph implementation!

  • noyaml

    A silly emotional rant about the state of devops tooling/the infrastructure sector in 2018. #noyaml.com

  • YAML is kind of like C++:

    > You like C++ because you're only using 20% of it. And that's fine, everyone only uses 20% of C++, the problem is that everyone uses a different 20% :)

    https://eli.thegreenplace.net/2009/10/17/the-c-bashing-seaso...

    The YAML footguns are too numerous to reproduce here, so here are some sources:

    https://stackoverflow.com/questions/3790454/how-do-i-break-a...

    https://www.arp242.net/yaml-config.html

    https://noyaml.com/

  • sqlite-jsonschema

    A SQLite extension for validating JSON objects with JSON Schema

  • Exactly so. SQLite also has a rich collection of CHECK constraints which can raise errors if data is not to your liking in some fashion, this includes validating JSON. Not a JSON schema, admittedly, although (just like for Postgres) this is available as an extension. https://github.com/asg017/sqlite-jsonschema

    Saying that SQLite doesn't have "real types" is simply false. If one doesn't want to learn how to use a tool, blaming it for that failure is poor form.

  • go-sqlite

    Low-level Go interface to SQLite 3

  • Check out https://github.com/zombiezen/go-sqlite if you're interested in trying out Sqlite in Go again. Nice interface, negligible compile time impact, fast, compiles without CGO. It's very comfortable.

    I agree that going from text to sqlite is a bit of a hurdle, especially if you're not writing C :)

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • argdown

    a simple syntax for complex argumentation

  • ```

    You'd then be able to interleave prose and graph structures in a single file rather than dealing with two separate parsing structures. Even better, the end result would still be Markdown compliant.

    [0]: https://argdown.org/

  • PixiJS

    The HTML5 Creation Engine: Create beautiful digital content with the fastest, most flexible 2D WebGL renderer.

  • fabric.js

    Javascript Canvas Library, SVG-to-Canvas (& canvas-to-SVG) Parser

  • diagrammer

    A library to display an interactive editor for any graph-like data. (by sameergoyal)

  • Great work & thanks for doing this.

    I built a library at AWS for a general canvas editor called Diagram Maker. It recently got archived so I stood up a fork here: https://github.com/sameergoyal/diagrammer and the data format we use is strikingly similar. Check it out here: https://sameergoyal.github.io/diagrammer/?path=/docs/docs-us.... The key differences are panels, workspace & editor.

    I dont actively work on the project outside of bugs, but maybe there are ways to collaborate here, like moving my project to use & extend the JSON canvas spec.

  • jsoncanvas

    An open file format for infinite canvas data.

  • There is one example in the repo:

    https://github.com/obsidianmd/jsoncanvas/blob/main/sample.ca...

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts