GenieBuilder.jl
Installation
Optional: create a project for GenieBuilder
> mkdir "mygeniebuilder"
> cd "mygeniebuilder"
> julia
pkg> activate .
or install globally:
> julia
Install GenieBuilder
pkg> add https://github.com/GenieFramework/GenieBuilder.jl#v0.16
or
pkg> dev https://github.com/GenieFramework/GenieBuilder.jl#v0.16
Usage
julia> using GenieBuilder
This will bring GenieBuilder
into scope and start the GenieBuilder service. The service is responsible for managing the list of registered Genie apps, as well as the no-code editor.
By default, the service will start on port 10101
over HTTP, and on port 10102
for websockets.
Creating a boilerplate Genie app
julia> GenieBuilder.create([name], [path])
API endpoint:
/api/v1/apps/create?path=/Users/adrian/Projects/GenieBuilderNextGen&name=testapp
-> name
is the name of the app, and path
is the path to the app's directory. If name
is not provided, the name of the app will be the name of the directory. If path
is not provided, the current directory will be used.
-> returns information about the registered app
This will create a new Julia project in the current directory. You will see the new project files: Project.toml
, Manifest.toml
-- as well as the application itself: app.jl
(for the backend) and app.jl.html
(for the frontend/UI).
Upon successfully creating the app, the new application is automatically registered with GenieBuilder
so you can edit it with the no-code editor.
Working with the GenieBuilder API
The following functions are available to interact with GenieBuilder
:
Get the list of apps registered with GenieBuilder
julia> GenieBuilder.apps()
-> Returns an array of GenieBuilder.App
objects.
API endpoint:
/api/v1/apps
{
"applications": [
{
"id": {
"value": 1
},
"name": "geniebuildernextgen",
"port": 9101,
"path": "/Volumes/Storage/Dropbox/Projects/GenieBuilderNextGen/",
"status": "offline",
"channel": "HSTYSOOKBWUMHXUZIABDTXFEHDEHHWIU",
"replport": 9102
}
]
}
Register an app with GenieBuilder
julia> GenieBuilder.register([name], [path])
-> name
is the name of the app, and path
is the path to the app's directory. If name
is not provided, the name of the app will be the name of the directory. If path
is not provided, the current directory will be used.
-> returns information about the registered app
API endpoint:
/api/v1/register
-> GET payload: name
and path
(see above for expected data for both vars).
Example
http://127.0.0.1:10101/api/v1/apps/register?path=/Users/adrian/Projects/GenieBuilderNextGen&name=testapp
{
"id": {
"value": 1
},
"name": "testapp",
"port": 9101,
"path": "/Users/adrian/Projects/GenieBuilderNextGen/",
"status": "offline",
"channel": "SERRLQOMSCNRBLARTUZOZZYBSDAACOAF",
"replport": 9102
}
Edit an app with the no-code editor
In order to edit an app with the no-code editor, the app must be registered with GenieBuilder and started (running). For more information on how to register an app, see the register
function above.
Start an app
julia> GenieBuilder.start(app::Application)
API endpoint:
/api/v1/apps/<app_id>/start
-> app_id
is the ID of the app to start. The app must be registered with GenieBuilder.
-> app
is an instance of GenieBuilder.Application
(see apps()
for more information).
Open no-code editor
julia> GenieBuilder.editor(app::Application)
or
julia> GenieBuilder.editor([name], [path])
Stop an app
julia> GenieBuilder.stop(app::Application)
API endpoint:
/api/v1/apps/<app_id>/stop
-> app_id
is the ID of the app to stop. The app must be registered with GenieBuilder.
-> app
is an instance of GenieBuilder.Application
(see apps()
for more information).
Get information about an app
API endpoint:
/api/v1/apps/<app_id>/pages
Unregister an app
julia> GenieBuilder.unregister(app::Application)
or
julia> GenieBuilder.unregister([name], [path])
API endpoint:
/api/v1/apps/<app_id>/unregister
or
API endpoint:
/api/v1/apps/unregister?path=/Users/adrian/Projects/GenieBuilderNextGen&name=testapp
Open app in browser
julia> GenieBuilder.openbrowser(app::Application)
Stop GenieBuilder
julia> GenieBuilder.stop!()