A clojure tool to navigate through your data.
The portal UI can be used to inspect values of various shapes and sizes. The UX will probably evolve over time and user feedback is welcome!
For an in-depth explanation of the UI, you can jump to the UI docs.
To get an overview of the Portal UI and workflow, checkout the following recording of a live demo I gave for London Clojurians.
To start a repl with portal, run the clojure >= 1.10.0 cli with:
clj -Sdeps '{:deps {djblue/portal {:mvn/version "0.30.0"}}}'
or for a web clojurescript >= 1.10.773 repl, do:
clj -Sdeps '{:deps {djblue/portal {:mvn/version "0.30.0"}
org.clojure/clojurescript {:mvn/version "1.10.844"}}}' \
-m cljs.main
or for a node clojurescript >= 1.10.773 repl, do:
clj -Sdeps '{:deps {djblue/portal {:mvn/version "0.30.0"}
org.clojure/clojurescript {:mvn/version "1.10.844"}}}' \
-m cljs.main -re node
or for a babashka >=0.2.4 repl, do:
bb -cp `clj -Spath -Sdeps '{:deps {djblue/portal {:mvn/version "0.30.0"}}}'`
or for examples on how to integrate portal into an existing project, look through the examples directory.
NOTE: Portal can also be used without a runtime via the standalone version. The standalone version can be installed as a chrome pwa which will provide a dock launcher for easy access.
Try the portal api with the following commands:
;; for node and jvm
(require '[portal.api :as p])
;; for web
;; NOTE: you might need to enable popups for the portal ui to work in the
;; browser.
(require '[portal.web :as p])
(def p (p/open)) ; Open a new inspector
;; or with an extension installed, do:
(def p (p/open {:launcher :vs-code})) ; JVM only for now
(def p (p/open {:launcher :intellij})) ; JVM only for now
(add-tap #'p/submit) ; Add portal as a tap> target
(tap> :hello) ; Start tapping out values
(p/clear) ; Clear all values
(tap> :world) ; Tap out more values
(prn @p) ; bring selected value back into repl
(remove-tap #'p/submit) ; Remove portal from tap> targetset
(p/close) ; Close the inspector when done
NOTE: portal will keep objects from being garbage collected until they are cleared from the UI.
By default, when p/open
is called, an HTTP server is started on a randomly
chosen port. It is also given a default window title of the form portal - <platform> - <version>
.
To control this server's port, host, and window title, call the p/start
function with the following options:
Option | Description | If not specified |
---|---|---|
:port | Port used to access UI | random port selected |
:host | Hostname used to access UI | "localhost" |
:app | Launch as separate window | true |
:window-title | Custom title for UI window | "portal" |
For more documentation, take a look through the docs.
Can you improve this documentation? These fine people already did:
Chris Badahdah, R.A. Porter, Jakub Holý, Steven Lombardi, Dosbol, Burin, Nate Jones, david & Yuri Vendruscolo da SilveiraEdit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close