Deploy on Genie Cloud

Star us on GitHub

Feature-rich, so you can build anything.

Whether it's a data app, a production system or an API - Genie has you covered.

1

Reactive apps

app.jl
module App
using GenieFramework
@genietools

function count_vowels(message)
   sum([c ['a', 'e', 'i', 'o', 'u'] for c in lowercase(message)])
end

@app begin
   @in message = ""
   @out vowels = 0
   @onchange message begin
       vowels = count_vowels(message)
   end
end
@page("/", "app.jl.html")
end
ui.jl
cell([
   textfield("", :message, ),
   br(),
   p("Message: {{message}}"),
   p("Vowel count: {{vowels}} vowels.")
])
2

APIs

function predict()
   house = data[params(:id), 1:13]
   json("MEDV" => model(house))
end

@swagger """
/api/predict/{id}:
 get:
   description: Predict the MEDV of a house.
   parameters:
     - in: path
       name: id
       required: true
       description: Numeric ID of the house to get the prediction.
       schema:
          type: integer
"""
route("/api/predict/:id::Int", predict, method=GET)

ui() = render_swagger(swagger_document)
@page("/", ui)
3

Template engine

<h1>Bill Gates' top $(length(books)) recommended books</h1>
<ul>
   <% for_each(books) do book %>
          <li>$(book.title) by $(book.author)</li>
   <% end %>
</ul>
4

Databases

using SearchLight
using SearchLightSQLite
include("app/resources/houses/Houses.jl")
using .Houses

SearchLight.Configuration.load() |> SearchLight.connect

h = House(street="Barcelona", size=200, rooms=nothing)
save(h)
find(House, SQLWhereExpression("size == ?", 200))
1

Webserver

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
2

Router

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
3

Template engine

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
4

Low-code UI

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
5

APIs

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
app.jl
module App
using GenieFramework
@genietools

function count_vowels(message)
 sum([c ['a', 'e', 'i', 'o', 'u'] for c in lowercase(message)])
end

@app begin
   @in message = ""
   @out vowels = 0
   @onchange message begin
       vowels = count_vowels(message)
   end
end
@page("/", "ui.jl")
end
ui.jl
cell([
   textfield("", :message, ),
   br(),
   p("Message: {{message}}"),
   p("Vowel count: {{vowels}} vowels.")
])
function predict()
   house = data[params(:id), 1:13]
   json("MEDV" => model(house))
end

@swagger """
/api/predict/{id}:
 get:
   description: Predict the MEDV of a house.
   parameters:
     - in: path
       name: id
       required: true
       description: Numeric ID of the house to get the prediction.
       schema:
          type: integer
"""
route("/api/predict/:id::Int", predict, method=GET)

ui() = render_swagger(swagger_document)
@page("/", ui)
<h1>Bill Gates' top $(length(books)) recommended books</h1>
<ul>
   <% for_each(books) do book %>
          <li>$(book.title) by $(book.author)</li>
   <% end %>
</ul>
using SearchLight
using SearchLightSQLite
include("app/resources/houses/Houses.jl")
using .Houses

SearchLight.Configuration.load() |> SearchLight.connect

h = House(street="Barcelona", size=200, rooms=nothing)
save(h)
find(House, SQLWhereExpression("size == ?", 200))
class _EEIconState extends EEState<EEIcon> {
 ui.Image? _image;
 bool _hasErrored = false;
 ImageStream? _imageStream;


 ImageStreamListener get _imageListener => ImageStreamListener(
       (info, call) {
         if (!mounted) return;
         setState(() => _loadImage(info));
       },
       onError: (obj, stackTrack) {
         if (!mounted) return;
         setState(_unloadImage);
       },
     );  

@override

 void eeInitState(EEContext eeContext) {
   super.eeInitState(eeContext);
   _initImageProvider();
 }  

@override

Full-stack doesn't mean hard.

Genie provides higher level APIs, low-code and no-code tools that make development easy and productive for expert users and beginners alike.

1

Webserver

2

Router

3

Template engine

4

Low-code UI

5

APIs

1

Webserver

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
2

Router

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
3

Template engine

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
4

Low-code UI

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the
5

APIs

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the

Meet Genie Builder. The fastest way to build data apps around your Julia code.

Genie Builder is a drag & drop UI editor that helps you build data-centric web apps faster, without worrying about frontend code. Available as a free VS Code extension.

play

Watch Demo (4’)

Genie Builder Quick Start

Maximize the impact of your Julia projects with a shareable data app.

Build interactive dashboards, AI prototypes, simulation apps and production applications. Share them with internal stakeholders or clients to drive your business forward.

Interactive Dashboards

Build dashboard apps for analytics and data exploration.

AI and Simulation Apps

Build AI and simulations apps with dynamic user input.

Production Data Apps

Create standalone products and smart tools.

Explore our App Gallery

Stay up to date