# Announcing Genie Builder, a no-code plugin to quickly build web GUIs & dashboards

**URL:** https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643
**Category:** Package Announcements
**Tags:** web, webapps, vscode, genie, no-code
**Created:** [July 22, 2022, 4:40pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643 "2022-07-22T16:40:11Z")
**Posts on this page:** 20
**Page:** 2

<div class="post-metadata">

### Author: ![PharmCat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pharmcat/32/6953_2.png) [@PharmCat](https://discourse.julialang.org/u/PharmCat)
#### Post date: [November 24, 2022, 9:08pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/24 "2022-11-24T21:08:20Z")

</div>

Great work!

I think no-code editor not recognize upload forms like this:

```julia
<% uploader(label="Upload Dataset", :autoupload, :multiple, accept=".csv", method="POST", url="http://localhost:9101", fieldname="csv_file") %>

```

---

<div class="post-metadata">

### Author: ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)
#### Post date: [November 25, 2022, 8:07am UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/25 "2022-11-25T08:07:16Z")

</div>

It should… All no-code gets converted into low-code API calls. What error are you getting?

---

<div class="post-metadata">

### Author: ![PharmCat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pharmcat/32/6953_2.png) [@PharmCat](https://discourse.julialang.org/u/PharmCat)
#### Post date: [November 26, 2022, 4:36pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/26 "2022-11-26T16:36:51Z")

</div>

When I put in builder (to app.jl.htm), I get the result bellow. On site it look fine.

 ![image](https://global.discourse-cdn.com/julialang/original/3X/8/6/866419f007019fc0b56afdac06176d0e3a4f6e9a.png)

---

<div class="post-metadata">

### Author: ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)
#### Post date: [November 27, 2022, 1:04pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/27 "2022-11-27T13:04:30Z")

</div>

Yes, that’s to be expected. The code between \<% %\> is run on the server and the no-code editor does not know how to handle it. You can put it inside a div to have it constrained to a container. Once we’ll have a proper no-code uploader component we’ll use that and it will look nice.

---

<div class="post-metadata">

### Author: ![MilesCranmer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/milescranmer/32/21070_2.png) [@MilesCranmer](https://discourse.julialang.org/u/MilesCranmer)
#### Post date: [November 27, 2022, 6:45pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/28 "2022-11-27T18:45:52Z")

</div>

Hey @essenciary, This is awesome, thanks for posting it!

I was wondering if you know if it’s possible to host a Genie server in a HuggingFace space?

HuggingFace for those who don’t know is a way to freely host in-browser demos of ML models – the popular example being stable diffusion: [runwayml/stable-diffusion-v1-5 · Hugging Face](https://huggingface.co/runwayml/stable-diffusion-v1-5). It’s nice because it lets you hosting arbitrary interactive code with a complex environment and backend, so people can try out your model in-browser without you needing to host the server yourself.

Now, the unfortunate thing is that their spaces API is largely Python: [Spaces](https://huggingface.co/docs/hub/spaces). I’ve tried to set up a Julia demo in the past on it: [PySR - a Hugging Face Space by MilesCranmer](https://huggingface.co/spaces/MilesCranmer/PySR) (a live demo of [PySR](https://github.com/MilesCranmer/PySR) - the PyJulia frontend of [SymbolicRegression.jl](https://github.com/MilesCranmer/SymbolicRegression.jl)), but it was super hacky and only worked sometimes. I basically wrote a thin Gradio frontend which would execute system commands to install Julia command and then the packages I need. However, the current demo started segfaulting so I just gave up.

However, seeing how mature Genie.jl is makes me wonder whether it’s possible to run a Julia server directly within HuggingFace’s stack, rather than try to interface through PyJulia. Most people don’t know how to host a server themselves, but can put together a script and push it to a git repo - which is pretty much all you need to define a HuggingFace space.

They do have docs on hosting custom HTML here: [Static HTML Spaces](https://huggingface.co/docs/hub/spaces-sdks-static) as well as custom Python: [Custom Python Spaces](https://huggingface.co/docs/hub/spaces-sdks-python). One could probably run a full Julia runtime behind the scenes, given they let you use large PyTorch transformers. Maybe worth a shot? HuggingFace is such a valuable resource in ML (and non-ML demos too) that it would be awesome if there was a way to host Julia code on it - maybe Genie makes this possible!

Cheers,  
Miles

---

<div class="post-metadata">

### Author: ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)
#### Post date: [November 28, 2022, 10:07am UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/29 "2022-11-28T10:07:54Z")

</div>

@MilesCranmer Excellent idea, thanks for sharing! Don’t have an answer right now but I’ve added it to our todo list to investigate 🙂

---

<div class="post-metadata">

### Author: ![PharmCat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pharmcat/32/6953_2.png) [@PharmCat](https://discourse.julialang.org/u/PharmCat)
#### Post date: [November 28, 2022, 5:29pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/30 "2022-11-28T17:29:18Z")

</div>

Hi!

Try to understand how to link file upload and ReactiveModel and can’t found docs about `@handlers` macro (0 docs found). It is very difficult to search solution in examples… 🙂 For my case, I have upload route

```julia
route("/", method = POST) do
  files = Genie.Requests.filespayload()
  if length(files) == 0
      @info "No file uploaded"
  end
  return "Upload finished"
end

```

Than I want to make something with this files inside model:

```julia
module App
  using GenieFramework
  using CSV, DataFrames
  @genietools
  export AppModel
  @reactive mutable struct AppModel <: ReactiveModel
    df::R{DataFrame}
  end
 # do something with files, parse them, and put in model.df... 
  @handlers begin
    @out message = "Hello World!"
    @onchange isready begin
      @show "App is loaded"
    end
  end
  @page("/", "app.jl.html")
end

```

how to link them without make file on disk…

When I use part from example:

```julia
route("/", method = POST) do
    model = AppModel |> init |> handlers
    # Somecode...
end

```

I have:

```julia
┌ Error: 2022-11-28 21:15:03 UndefVarError: __model__ not defined

```

---

<div class="post-metadata">

### Author: ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)
#### Post date: [November 28, 2022, 7:06pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/31 "2022-11-28T19:06:32Z")

</div>

I’ll write a snippet and share.

---

<div class="post-metadata">

### Author: ![hhaensel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hhaensel/32/1207_2.png) [@hhaensel](https://discourse.julialang.org/u/hhaensel)
#### Post date: [November 30, 2022, 11:34am UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/33 "2022-11-30T11:34:48Z")

</div>

I revamped the event handler that @wildart added to include event info.  
With this we can easily build a file upload:

```julia
using Stipple, StippleUI, Stipple.ReactiveTools
using CSV, DataFrames

const UPLOAD = "upload"

write(joinpath(pwd(), "test.csv"), "a,b\n1,2\n10,11")

# do something with files, parse them, and put in model.df... 
@handlers begin
    @out message = ""
    @private df = DataFrame()
    @out table = DataTable()
    @onchange isready begin
        @show "App is loaded"
    end
    @onchange df table = DataTable(df)
end

@event :uploaded begin
    for f in event["files"]
        f["__status"] == "uploaded" || continue
        filepath = joinpath(pwd(), UPLOAD, f["fname"])
        message *= f["fname"] * ":<br>first line: " * readline(filepath) * "<br><br><br>"
        if endswith(filepath, r"csv"i)
            df = CSV.read(filepath, DataFrame)
        end
        rm(filepath)
    end
end

@event :clear begin                                                                                                                                                 
    model.message[] = ""                                                                                                                                              
    println(event)                                                                                                                                                    
end

function ui()
    [
        uploader("Upload files", url = "/upload" , autoupload = true, :multiple,
            @on(:uploaded, :uploaded, "for (let f in event.files) { event.files[f].fname = event.files[f].name }")
        )

        card(class = "q-mt-lg q-pa-md text-white",
            style = "background: radial-gradient(circle, #35a2ff 0%, #014a88 100%); width: 30%",
            [
                cardsection(Stipple.Html.div(class = "text-h5 text-white", "Upload logs"))
                separator()
                cardsection(span(v__html = :message))
            ]
        )

        btn(class = "q-mt-lg", "Clear Log", color = "primary", @on(:click, :clear))

        table(class = "q-mt-lg", :table)
    ] |> join
end

@page("/", ui)

route("/upload", method = POST) do
    files = Genie.Requests.filespayload()
    upload_dir = joinpath(pwd(), UPLOAD)
    mkpath(upload_dir)

    for f in files
        filepath = joinpath(upload_dir, f[2].name)
        write(filepath, f[2].data)
        @info "Uploading: " * f[2].name
        # if no model context is necessary, the data can be loaded here
        if endswith(filepath, r"csv"i)
            df = CSV.read(filepath, DataFrame)
            @info df
        end
    end

    if length(files) == 0
        @info "No file uploaded"
    end

end

up()

```

It’s also up on StippleDemos.  
Note that you have to use the `Stipple#master` until we release the next version…

EDIT: Latest change supports field usage without preceeding `model.` and succeeding `[]`. Manual addressing of the model now needs to be preceeded by ` __model__ `, e.g.  
` __model__.message[!] = "Shush!"`  
for silent, i.e. non-notifying, updates of a field. This is analogous to the usage of `@onchange`

---

<div class="post-metadata">

### Author: ![anoojpatel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/anoojpatel/32/12464_2.png) [@anoojpatel](https://discourse.julialang.org/u/anoojpatel)
#### Post date: [December 27, 2022, 7:15pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/34 "2022-12-27T19:15:22Z")

</div>

I just built a quick demo to run a Genie webapp in Huggingface Spaces demo using Docker spaces! [Genie.jl on HuggingFace Demo - a Hugging Face Space by nooji](https://huggingface.co/spaces/nooji/GenieOnHuggingFaceSpaces)

I’m currently working with the team to figure out how to leverage gpu docker images as well, so we can host demos that can leverage GPUs. I think they just need to enable this on the infra-side when building and running the images.

---

<div class="post-metadata">

### Author: ![MilesCranmer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/milescranmer/32/21070_2.png) [@MilesCranmer](https://discourse.julialang.org/u/MilesCranmer)
#### Post date: [January 15, 2023, 9:39pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/35 "2023-01-15T21:39:08Z")

</div>

Awesome! I’m excited to see where this goes 🙂

---

<div class="post-metadata">

### Author: ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)
#### Post date: [March 23, 2023, 5:34pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/36 "2023-03-23T17:34:43Z")

</div>

Hi everybody! Super exciting and important update! 📣

We’ve released the private beta version of Genie Cloud, the no-code platform to quickly build and deploy Genie web apps. 🎉

For more details check out the announcement thread here: [Announcing Genie Cloud (Private Beta), the no-code platform to quickly build and deploy Genie apps](https://discourse.julialang.org/t/announcing-genie-cloud-private-beta-the-no-code-platform-to-quickly-build-and-deploy-genie-apps/96522)

✅ Learn more and **register for a free account** here: [https://www.geniecloud.io/](https://www.geniecloud.io/)

📹 Watch a demo video: [Genie Cloud Demo - YouTube](https://www.youtube.com/watch?v=g5V8rTvFDwo)

---

<div class="post-metadata">

### Author: ![Pere](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pere/32/214250_2.png) [@Pere](https://discourse.julialang.org/u/Pere)
#### Post date: [April 18, 2023, 3:51pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/37 "2023-04-18T15:51:14Z")

</div>

Hey everyone! 🚀 We’ve released Genie Builder v0.3, an improved version of our no-code UI builder. 🌟 Key updates include:

1️⃣ Side-by-side app preview for seamless development  
2️⃣ Quick app export via download button  
3️⃣ Enhanced tooltips to better understand component properties

![GB v0.3](https://global.discourse-cdn.com/julialang/original/3X/d/f/df3327574629f01ce03262b8f48cf503dd1f420b.gif)

👉You can download or upgrade Genie Builder via VSCode to run it locally:[Genie Builder - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=GenieBuilder.geniebuilder)

👉 OR Sign up for a free Genie Cloud account for a managed version with one-click deploys: [https://www.geniecloud.io/](https://www.geniecloud.io/)

---

<div class="post-metadata">

### Author: ![1153dent](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/1153dent/32/43968_2.png) [@1153dent](https://discourse.julialang.org/u/1153dent)
#### Post date: [May 16, 2023, 9:43pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/38 "2023-05-16T21:43:53Z")

</div>

Hi there @essenciary  
congrats on this launch and we know you will be successful especially as we watched one of the best pitch videos we have seen. [informative and provocative.](https://www.youtube.com/watch?v=g5V8rTvFDwo)  
well done all.

---

<div class="post-metadata">

### Author: ![vtomar](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vtomar/32/18304_2.png) [@vtomar](https://discourse.julialang.org/u/vtomar)
#### Post date: [September 21, 2023, 10:58pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/39 "2023-09-21T22:58:32Z")

</div>

I haven’t been able to install GenieBuilder. I get the following error:  
I get the following error:

> Pkg.add(url = “[GitHub - GenieFramework/GenieBuilder.jl](https://github.com/GenieFramework/GenieBuilder.jl.git)”)  
> Cloning git-repo `https://github.com/GenieFramework/GenieBuilder.jl.git`  
> Updating git-repo `https://github.com/GenieFramework/GenieBuilder.jl.git`  
> Resolving package versions…  
> ERROR: Unsatisfiable requirements detected for package Temporal [a110ec8f]:  
> Temporal [a110ec8f] log:  
> ├─possible versions are: 0.5.0-0.8.1 or uninstalled  
> ├─restricted by compatibility requirements with HTTP [cd3eb016] to versions: uninstalled  
> │ └─HTTP [cd3eb016] log:  
> │ ├─possible versions are: 0.6.10-1.10.0 or uninstalled  
> │ └─restricted to versions 1 by GenieBuilder [c9453c14], leaving only versions: 1.0.0-1.10.0  
> │ └─GenieBuilder [c9453c14] log:  
> │ ├─possible versions are: 0.15.12 or uninstalled  
> │ └─GenieBuilder [c9453c14] is fixed to version 0.15.12

I have uninstalled Temporal but I still get the same error. What is going on?

I have also posted it as a separate thread but haven’t received any response. Hence posting here.  
[GenieBuilder unable to install package - General Usage / Performance - Julia Programming Language (julialang.org)](https://discourse.julialang.org/t/geniebuilder-unable-to-install-package/104123)

---

<div class="post-metadata">

### Author: ![TheLateKronos](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/thelatekronos/32/12824_2.png) [@TheLateKronos](https://discourse.julialang.org/u/TheLateKronos)
#### Post date: [September 22, 2023, 7:13am UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/40 "2023-09-22T07:13:27Z")

</div>

The issue is being duscissed at the original seperate thread.

---

<div class="post-metadata">

### Author: ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)
#### Post date: [May 20, 2024, 4:45pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/41 "2024-05-20T16:45:39Z")

</div>

After many months of work, I’m super excited to bring some great updates: we have released v1 of Genie Builder, now available in the VS Code marketplace.

Key features include:

- No-code UI builder: drag & drop and easily configure 70+ web components
- Rich charts configurator to customize your data visualizations in a few clicks
- Theme editor to make your data apps look professional quickly
- AI Assistant to build UIs from scratch, style your app, etc.

[Check this video](https://www.youtube.com/watch?v=5xHE3WqshZo) for a quick overview.

[Check out the full announcement here on Discourse](https://discourse.julialang.org/t/genie-builder-1-0-now-in-vs-code-build-genie-web-apps-around-your-julia-code-10x-faster/114481) for more details.

Looking forward to hearing about your experience!

---

<div class="post-metadata">

### Author: ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)
#### Post date: [May 20, 2024, 6:15pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/42 "2024-05-20T18:15:26Z")

</div>

Congrats @essenciary and team! Genie is getting better and better over time. We need to give it a try again sometime soon. Will contact you when that happens.

---

<div class="post-metadata">

### Author: ![Pere](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pere/32/214250_2.png) [@Pere](https://discourse.julialang.org/u/Pere)
#### Post date: [June 25, 2024, 3:40pm UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/43 "2024-06-25T15:40:21Z")

</div>

Hi everyone! Today we’re introducing Genie Builder Lite – A Free Plan Designed for All Julia Hobbyists! ✨

Turn your Julia code into an interactive web application with Genie Builder, Julia’s premier low/no-code data app builder.

🔍 Features:

- Experience full Pro functionality for the first 14 days with access to over 70 drag & drop UI components and plots.
- After the trial, continue building with a core set of 20 essential components.

🎯 Perfect For:

- Julia hobbyists eager to build simple dashboards and data apps efficiently with Genie Builder’s no-code UI editor. No need to code the UI of your app!

🌟 Get Started Now:

- Install the Genie Builder extension in VS Code, create your account, and start building: [Genie Builder - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=GenieBuilder.geniebuilder)
- Check our pricing page to explore upgrade options for individuals, teams, and educational licenses: [Genie Builder Pricing - Genie Framework - Build Data Apps in Julia](https://genieframework.com/pricing)

 ![image (10)](https://global.discourse-cdn.com/julialang/original/3X/2/b/2ba44586d35a5f8791e43b52af62e63a3185fffb.png)

---

<div class="post-metadata">

### Author: ![Pere](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pere/32/214250_2.png) [@Pere](https://discourse.julialang.org/u/Pere)
#### Post date: [October 16, 2024, 8:21am UTC](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643/44 "2024-10-16T08:21:15Z")

</div>

We’ve had quite a few Julia users reach out for help turning their notebooks or technical code into web applications, so I thought I’d post here as well to keep everyone updated.

If you’re looking to transform your Julia code into a web app, we can do it for you quickly and at a competitive price. We’ll also show you how to build and maintain your apps using Genie Builder, so you can continue developing your applications with ease.

Contact us via this form for more info: [Form](https://share.hsforms.com/11t8hl4G_Qu6MfFQr4zehEQchec7)

[Previous page](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643.md?page=1)
