written-beyond 3 hours ago

100/10 for mobile usability. Panning, Zooming, selecting and moving was so seamless I thought I was tripping out.

  • lelanthran 2 hours ago

    > 100/10 for mobile usability. Panning, Zooming, selecting and moving was so seamless I thought I was tripping out.

    Yeah, my first thought was that the diagramming bit needs to be ripped out into its own library, because I can see a use for the diagramming bits for more than ER diagrams.

  • Galanwe 3 hours ago

    That's really good yes, even double tapping editing does not reset the zoom level. Definitely one of the best mobile friendly site I have seen.

    • sixtyj 2 hours ago

      This. Author(s) did the homework.

corkybeta 4 hours ago

Could we have the option of straight lines and 90 degree angles? I’ve never really liked the bendy ones. Looks cool, good job!

  • robhati 2 hours ago

    Thanks and I will add this to my todos!

    • ffsm8 18 minutes ago

      A few years ago I created a similar layout engine, it was extremely janky when I abandoned it because I first wanted to solve order/placing of the tiles but was unable to figure out a good algorithm for it

      Eg your example diagram has an optimal order in which there are no overlapping lines... But it's surprisingly hard to figure that out without doing n^m calculations... And I wanted to use it in a game, so a shitton of tiles.

      Dunno where I was going with this, just got reminded of that project after looking at this great implementation.

      It also reminded me of the xyflow lib

robhati 4 hours ago

It's a small too nothing great I just figured others might find it useful too. I kept finding myself needing to visualize database schemas, but most tools had the same problems: paywalls, mandatory signups, or sending your SQL to someone else's server.

No backend, no accounts, no data leaving your machine.

A few implementation details that were fun:

* Built on <canvas> instead of DOM/SVG. Tables are rasterized into cached bitmaps with viewport culling, which keeps things smooth even with hundreds of tables on screen.

* The SQL parser tracks source spans for every token. That lets edits stay surgical so a rename a table and only the relevant identifier (and its references) change while comments and formatting remain untouched.

* The URL contains the entire schema. Sharing simply serializes the schema into the URL itself, so there's no backend, no stored state, and no account required.

* I also experimented with a Rust/WASM version because why not? but the parser was ~37% slower because the JS↔WASM boundary cost outweighed the compute savings but The O(n^2) overlap-resolution pass was about 2.2x faster though * In the end I stuck with plain JavaScript. No framework ~32KB gzipped

  • Hendrikto 4 minutes ago

    > The URL contains the entire schema.

    Isn’t that going to be a problem due to the URL length limitations?

    > It is RECOMMENDED that all senders and recipients support, at a minimum, URIs with lengths of 8000 octets in protocol elements.

    https://www.rfc-editor.org/rfc/rfc9110#section-4.1-5

  • __natty__ an hour ago

    Truely good work! It’s responsive, clean and “onboarding” experience without signup walls is great. Good job.

WhyIsItAlwaysHN 2 hours ago

Maybe you can support schemas in more dialects by using a similar approach to a little tool I made: sqlscope.netlify.app

Basically integrate sqlglot to translate the schema between dialects and then use a base dialect for generating the schema.

The two tools seem complementary and you seem to be a better designer, so it would be nice to see it all together

_f1ou 4 hours ago

The GitHub link takes you to the front page of GitHub instead of the actual project.

  • serious_angel 4 hours ago

       Just to clarify, what link is it?  
       I've check it out, and the GitHub icon, in the header on the top right corner, is correct, and links to the following project:  
       - https://github.com/royalbhati/sqltoerdiagram
    • robhati 4 hours ago

      I have just updated it. He was right to point that out.

  • robhati 4 hours ago

    updated thanks.

John_Kwick 3 hours ago

Okay thats pretty cool. Nice job!

robhati 6 hours ago

I kept finding myself needing to visualize database schemas, but most tools had the same problems: paywalls, mandatory signups, or sending your SQL to someone else's server.

So I ended up building my own.

You paste in your CREATE TABLE statements and it generates an interactive ER diagram right in the browser. You can drag tables around, auto arrange the layout, edit table/column names directly on the canvas (it rewrites the SQL for you), add notes and group boxes, and export as PNG or SVG.

No backend, no accounts, no data leaving your machine.

A few implementation details that were fun:

* Built on <canvas> instead of DOM/SVG. Tables are rasterized into cached bitmaps with viewport culling, which keeps things smooth even with hundreds of tables on screen.

* The SQL parser tracks source spans for every token. That lets edits stay surgical so a rename a table and only the relevant identifier (and its references) change while comments and formatting remain untouched.

* The URL contains the entire schema. Sharing simply serializes the schema into the URL itself, so there's no backend, no stored state, and no account required.

* I also experimented with a Rust/WASM version because why not? but the parser was ~37% slower because the JS↔WASM boundary cost outweighed the compute savings but The O(n^2) overlap-resolution pass was about 2.2x faster though * In the end I stuck with plain JavaScript. No framework ~32KB gzipped

It's a small too nothing great I just figured others might find it useful too.