Create data apps 10x faster with Genie Builder

Build Data Apps in Julia.

Genie is an open source framework with all you need to quickly build production-ready, data-centric web apps with Julia.

Dashboard apps

Multi-page app to explore data, train a neural network, and serve the model via an API.

AI apps

Image classifier app detecting tumors in brain MRIs using a neural network.

Simulation apps

Weather forecast app running time series predictions using neural ODEs.

Explore our app gallery
Genie.jl

Full-Stack Web Development

Build full-stack web apps and backends in Julia.

High-performance web server
Powerful router
Flexible template engine (Julia, HTML, Markdown, JSON, JavaScript)
Encrypted cookies & sessions
WebSockets & SSE support
    # Genie Hello World!
    # As simple as Hello
    using Genie
    route("/hello") do
        "Welcome to Genie!"
    end

    # Powerful high-performance HTML view templates
    using Genie.Renderer.Html
    route("/html") do
        h1("Welcome to Genie!") |> html
    end

    # JSON rendering built in
    using Genie.Renderer.Json
    route("/json") do
        (:greeting => "Welcome to Genie!") |> json
    end

    # Start the app!
    up(8888)
Stipple.jl

Low-Code Web App Development

Build reactive, data-centric web apps and GUIs in low-code Julia.

Easy to learn
Build web apps with few lines of Julia code (no HTML, CSS or JS required)
Build rich GUIs
Use 30+ web UI components
Visualize any data
Choose from over 40 Plotly charts
 
 # Reactive web app template
  module App
  using GenieFramework
  @genietools

  # add your Julia data analysis code
  function mean_value(x)
      sum(x) / length(x)
  end

  # add reactive code to make the UI interactive
  @app begin
      # reactive variables are tagged with @in and @out
      @in N = 0
      @out msg = "The average is 0."
      # @private defines a non-reactive variable
      @private result = 0.0

      # watch a variable and exe code when its value changes
      @onchange N begin
          # the values in the UI will update automatically
          result = mean_value(rand(N))
          msg = "The average is $result."
      end
  end

  # register a new route and the page to load on access
  @page("/", "app.jl.html")
  end
Paid tool - the fastest way to build Genie apps

Genie Builder 1.0

Low-code data app development tool for VS Code with a drag & drop UI editor and AI assistant.

Build rich UIs faster with drag & drop
Choose from 35 web UI components and 40+ charts
Write your app logic in low-code Julia
Import your Julia code & expose reactive variables with macros
Embedded AI assistant
Ask AI to customize the UI of your app, or for help with your code
Publish in one-click on JuliaHub or deploy elsewhere
Genie Builder integrates with JuliaHub offering access to a secure platform with collaboration and publishing capabilities. Want to develop locally and deploy elsewhere? No problem - buy a local license.
SearchLight.jl

Databases

ORM solution for Julia making it easy to work with relational databases.

Postgres
MySQL
SQLite
  Base.@kwdef mutable struct User <: AbstractModel
    id::DbId = DbId()
    username::String = ""
    password::String = ""
  end

  Validation.validator(::Type{User}) = ModelValidator([
    ValidationRule(:username, UsersValidator.not_empty),
    ValidationRule(:username, UsersValidator.unique),
    ValidationRule(:password, UsersValidator.not_empty)
  ])

  function register()
      User(username  = params(:username),
          password  = params(:password) |> hash_password,
          name      = params(:name),
          email     = params(:email)
      ) |> save!
  end
Production capabilities

First Party Plugins

Genie Framework provides a plugin system that allows you to extend the functionality of your apps.

Authentication
SwagUI for building APIs
Autoreload
Authorization
  using SwagUI, SwaggerMarkdown

  @swagger """
  /api/predict/{id}:
    get:
      description: Predict the MEDV of a house.
      parameters:
        - in: path
          name: N
          required: true
          description: Length of the random number vector.
          schema:
            type: integer
      responses:
        '200':
          description: OK
  """
  route("/numbers/:N::Int", AnalysisController.api_numbers, method=GET)

Build with Genie, publish in one-click on JuliaHub.

Deploy and host your Genie apps on a secure platform. Share with the world, or protect with password.

Why Genie?

Genie is the no.1 Web Framework for Julia. Build web apps, backends, GUIs and APIs - all in pure Julia.

Easy to learn

Our low-code tools abstract much of the complexities of web development so you can focus on what you do best - working with data.

Scales with you

Build simple web apps and prototypes quickly, and scale to full-fledged production apps when you need it.

Native Julia

Genie is written in Julia by expert Julia open source developers, following its best practices. It's not a wrapper around a web framework written in another language.

Open source

Genie is actively maintained by a growing community of users and developers.

Community support

Open an issue on Github or join our Discord to access the help-forum channel.

Reliable and productive

Genie follows web development best practices and provides a stable and reliable framework for your web apps.

Testimonials

Why users love Genie

Our users are data scientists, R&D engineers and developers doing cutting-edge work in Julia.

Genie has been an essential tool in developing our web services and data applications, which are crucial for our portfolio management activities. By providing a natural integration of our in-house Julia tools with modern and flexible front-end capabilities, Genie allowed our small team to deliver sophisticated interactive analytics and evolve our information sharing practices.
J

Jeremie

Head of Science, Evovest

Genie has been a game-changer for my Julia-based data analysis and optimization work. With Genie, I can rapidly build apps around my Julia code and disseminate my work. I'm a scientist - not a web developer - but Genie was easy to pick up thanks to its low-code framework and helpful tutorials.
V

Victor

Senior Data Scientist, Nasdaq-listed Fusion Energy Company

Genie has super-powered our data science workflow, enabling us to effortlessly transition from Julia scripts to interactive web apps. This has shortened our experimentation cycle and enhanced stakeholder understanding. Genie’s biggest strength lies in the ability to start with just a few lines of code and yet offer endless customization options, ensuring we can rapidly deploy initial versions and seamlessly scale up to even the most complex applications.
J

John

Head of Data, Global Analytics Firm

Genie played a crucial role in my research project. We developed a low-cost Cavity Ring-Down system, opting for Julia to communicate with our oscilloscope, laser, and microcontroller. Genie served as our interface, enabling seamless data collection, display, and downloading from a server running the script. Genie was integral in setting up a simple way for us to create a GUI that interfaced with our instrument and allowed multiple users to observe what was going on in real time.
C

Charles

Physics Researcher

I used Genie to build a web-based monitoring tool for our research lab, and it was a revelation. I’m a research engineer, not a web developer, yet I found Genie to be accessible and easy to learn. Genie is excellent, stable and with a community ready to assist when you need it.
Y

Yakir

Research Software Engineer, DataSturgeon

In Brazil's public health sector, we struggled with linking COVID-19 test results to notifications due to segregated web systems. With Genie, we developed an app for automated data-linking, significantly improving epidemiological surveillance efficiency.
R

Rafael

Software Developer, Public Health Organization