{"id":15767753,"url":"https://github.com/qix-/cassowary-playground","last_synced_at":"2025-03-31T11:13:17.713Z","repository":{"id":65993782,"uuid":"597831038","full_name":"Qix-/cassowary-playground","owner":"Qix-","description":"A playground for Cassowary constraints","archived":false,"fork":false,"pushed_at":"2023-02-05T20:27:21.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-05T13:41:20.291Z","etag":null,"topics":["cassowary","cassowary-algorithm","cassowary-constraints","constraints","demo","dsl","peg","pegjs","playground"],"latest_commit_sha":null,"homepage":"https://junon.me/cassowary-playground/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Qix-.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"github":"qix-"}},"created_at":"2023-02-05T19:07:41.000Z","updated_at":"2023-09-13T12:15:13.000Z","dependencies_parsed_at":"2023-05-21T17:45:27.851Z","dependency_job_id":null,"html_url":"https://github.com/Qix-/cassowary-playground","commit_stats":{"total_commits":6,"total_committers":1,"mean_commits":6.0,"dds":0.0,"last_synced_commit":"8777e34636a3f389883fa8e11f0a70eca9c52989"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Qix-%2Fcassowary-playground","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Qix-%2Fcassowary-playground/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Qix-%2Fcassowary-playground/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Qix-%2Fcassowary-playground/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Qix-","download_url":"https://codeload.github.com/Qix-/cassowary-playground/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246458004,"owners_count":20780677,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cassowary","cassowary-algorithm","cassowary-constraints","constraints","demo","dsl","peg","pegjs","playground"],"created_at":"2024-10-04T13:41:01.184Z","updated_at":"2025-03-31T11:13:17.690Z","avatar_url":"https://github.com/Qix-.png","language":"Rust","funding_links":["https://github.com/sponsors/qix-"],"categories":[],"sub_categories":[],"readme":"# Cassowary Playground\n\nA small playground for checking out Cassowary constraints.\n\nPlease see the demo site for instructions: https://junon.me/cassowary-playground\n\n## Disclaimer\n\nPlease do not judge me for the code written here. It was done in ~3 hours or so.\nIt was purposefully hacked together to get it work as quickly as possible, and\nthere is a lot of _cursed nonsense_ across all of the languages used (Rust,\nJavascript and PEG.js).\n\nThe error handling on this is also abysmal. I didn't optimize for a great DX,\nas I wanted to play with some ideas as fast as possible (this is a tool I'm\nusing to research automated circuit design tooling I'm interested in creating).\n\nSo, if you're a recruiter or otherwise looking at my profile for reasons to judge,\nfeel free, but please know this code was a wreck from the first minute I started\non it and I do not have any interest in improving it. Sorry about that!\n\nThe interface between the WASM binary and Javascript is embarassingly crude as I\ndidn't want to get WASI involved (I don't particularly approve of WASI's design\ndecisions so tend to avoid it) and didn't want the hastle of another build tool\n(wasm-pack) so I just went without any string or complex type support in the FFI\nend of things. Worked out okay, just needed to use a stack-based stateful protocol.\nI should probably mention that you should avoid stateful stack-based protocols\nwhen you can.\n\nAlso, please ignore the globals in Rust. I'm... aware. I know.\n\n**tl;dr** please don't take any code here as \"good\" or \"I should copy this\" material.\nIt's all really bad.\n\n## Building\n\nYou'll need `npm`, `node` and `cargo` with a suitably recent toolchain and the `wasm32-unknown-unknown`\ntarget installed.\n\nThen run `make` and serve the `/www/` directory that is generated.\n\n## License\n\nAside from the dependencies' respective licenses, all code under this repository\nis released as either Public Domain, CC0, WTFPL, or MIT license - whatever\nfloats your boat. If you want a Copyright, you can use `Copyright (c) 2023, Josh Junon`.\nI will not be enforcing it, though. Go nuts.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqix-%2Fcassowary-playground","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqix-%2Fcassowary-playground","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqix-%2Fcassowary-playground/lists"}