{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,16]],"date-time":"2025-10-16T20:54:36Z","timestamp":1760648076390,"version":"3.28.0"},"reference-count":0,"publisher":"SciPy","license":[{"start":{"date-parts":[[2024,7,10]],"date-time":"2024-07-10T00:00:00Z","timestamp":1720569600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"abstract":"<jats:p>The rise of machine learning (<jats:abbrev alt=\"machine learning\">ML<\/jats:abbrev>) and artificial intelligence (<jats:abbrev alt=\"artificial intelligence\">AI<\/jats:abbrev>), especially the generative <jats:abbrev alt=\"artificial intelligence\">AI<\/jats:abbrev> (<jats:abbrev alt=\"generative artificial intelligence\">GenAI<\/jats:abbrev>), has increased the need for wrapping models or algorithms into <jats:abbrev alt=\"graphical user interface\">GUI<\/jats:abbrev> apps. For example, a large language model (<jats:abbrev alt=\"large language model\">LLM<\/jats:abbrev>) can be accessed through a string-to-string <jats:abbrev alt=\"graphical user interface\">GUI<\/jats:abbrev> app with a textbox as the primary input.\nMost of existing solutions require developers to manually create widgets and link them to arguments\/returns of a function individually. This low-level process is laborious and usually intrusive. Funix automatically selects widgets based on the types of the arguments and returns of a function according to the type-to-widget mapping defined in a theme, e.g., <jats:monospace>bool<\/jats:monospace> to a checkbox. Consequently, an existing Python function can be turned into a <jats:abbrev alt=\"graphical user interface\">GUI<\/jats:abbrev> app without any code changes. As a transcompiler, Funix allows type-to-widget mappings to be defined between any Python type and any React component and its <jats:monospace>props<\/jats:monospace>, liberating Python developers to the frontend world without needing to know JavaScript\/TypeScript. Funix further leverages features in Python or its ecosystem for building apps in a more Pythonic, intuitive, and effortless manner. With Funix, a developer can make it (a functional app) before they (competitors) fake it (in Figma or on a napkin).<\/jats:p>","DOI":"10.25080\/jfyn3740","type":"proceedings-article","created":{"date-parts":[[2024,10,4]],"date-time":"2024-10-04T20:42:26Z","timestamp":1728074546000},"page":"174-195","source":"Crossref","is-referenced-by-count":1,"title":["Funix - The laziest way to build GUI apps in Python"],"prefix":"10.25080","author":[{"given":"Forrest Sheng","family":"Bao","sequence":"first","affiliation":[{"name":"Founder, Textea, Inc."}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Mike","family":"Qi","sequence":"additional","affiliation":[{"name":"Engineer, Textea, Inc."}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Ruixuan","family":"Tu","sequence":"additional","affiliation":[{"name":"Undergraduate student, Dept. of Computer Sciences, University of Wisconsin-Madison"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Erana","family":"Wan","sequence":"additional","affiliation":[{"name":"MS student, Dept. of Computer Science, University of Southern California"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"32550","published-online":{"date-parts":[[2024,7,10]]},"event":{"name":"Python in Science Conference","number":"23rd","location":"Tacoma, Washington","acronym":"SciPy"},"container-title":["Proceedings of the Python in Science Conference","Proceedings of the 23rd Python in Science Conference"],"original-title":[],"deposited":{"date-parts":[[2024,11,5]],"date-time":"2024-11-05T21:10:08Z","timestamp":1730841008000},"score":1,"resource":{"primary":{"URL":"https:\/\/doi.curvenote.com\/10.25080\/JFYN3740"}},"subtitle":["Make it (the app) before they fake it (in Figma or on a napkin)"],"proceedings-subject":"Scientific Computing with Python","short-title":[],"issued":{"date-parts":[[2024,7,10]]},"references-count":0,"URL":"https:\/\/doi.org\/10.25080\/jfyn3740","relation":{},"ISSN":["2575-9752"],"issn-type":[{"type":"print","value":"2575-9752"}],"subject":[],"published":{"date-parts":[[2024,7,10]]}}}