All Projects → lilactown → Punk

lilactown / Punk

Licence: epl-2.0
A data REBL built for the web

Programming Languages

clojure
4091 projects
clojurescript
191 projects

Projects that are alternatives of or similar to Punk

Dep viz
A visual tool to help developers understand Elixir recompilation in their projects
Stars: ✭ 121 (-18.24%)
Mutual labels:  developer-tools, data-visualization
Streamlit
Streamlit — The fastest way to build data apps in Python
Stars: ✭ 16,906 (+11322.97%)
Mutual labels:  developer-tools, data-visualization
Timeline Plus
Timeline - chronological visualization of your data
Stars: ✭ 140 (-5.41%)
Mutual labels:  data-visualization
Aachartkit Swift
📈📊📱💻🖥️An elegant modern declarative data visualization chart framework for iOS, iPadOS and macOS. Extremely powerful, supports line, spline, area, areaspline, column, bar, pie, scatter, angular gauges, arearange, areasplinerange, columnrange, bubble, box plot, error bars, funnel, waterfall and polar chart types. 极其精美而又强大的跨平台数据可视化图表框架,支持柱状图、条形图、…
Stars: ✭ 1,962 (+1225.68%)
Mutual labels:  data-visualization
Haack
Hæck
Stars: ✭ 142 (-4.05%)
Mutual labels:  developer-tools
Zunit
A powerful testing framework for ZSH projects
Stars: ✭ 140 (-5.41%)
Mutual labels:  developer-tools
3d Force Graph
3D force-directed graph component using ThreeJS/WebGL
Stars: ✭ 2,386 (+1512.16%)
Mutual labels:  data-visualization
Life Calendar
A look at the big picture.
Stars: ✭ 139 (-6.08%)
Mutual labels:  data-visualization
Web Vitals Extension
A Chrome extension to measure essential metrics for a healthy site
Stars: ✭ 1,943 (+1212.84%)
Mutual labels:  developer-tools
Httptoolkit Server
The backend of HTTP Toolkit
Stars: ✭ 140 (-5.41%)
Mutual labels:  developer-tools
Fantasy Basketball
Scraping statistics, predicting NBA player performance with neural networks and boosting algorithms, and optimising lineups for Draft Kings with genetic algorithm. Capstone Project for Machine Learning Engineer Nanodegree by Udacity.
Stars: ✭ 146 (-1.35%)
Mutual labels:  data-visualization
Openwhisk Devtools
Development tools for building and deploying Apache OpenWhisk
Stars: ✭ 141 (-4.73%)
Mutual labels:  tooling
Frock
A plugin-based tool for running fake HTTP and socket services
Stars: ✭ 140 (-5.41%)
Mutual labels:  developer-tools
Htty
htty is the HTTP TTY, a console application for interacting with web servers.
Stars: ✭ 1,755 (+1085.81%)
Mutual labels:  developer-tools
Sunburst Chart
A sunburst interactive chart web component for visualizing hierarchical data
Stars: ✭ 140 (-5.41%)
Mutual labels:  data-visualization
Poli
An easy-to-use BI server built for SQL lovers. Power data analysis in SQL and gain faster business insights.
Stars: ✭ 1,850 (+1150%)
Mutual labels:  data-visualization
Tinychart
A simple tool to create quick exportable charts
Stars: ✭ 139 (-6.08%)
Mutual labels:  data-visualization
Artisan Menu
📝 Artisan Menu - Use Artisan via an elegant console GUI
Stars: ✭ 141 (-4.73%)
Mutual labels:  developer-tools
Awesome
A collection of awesome Statamic articles, links, resources and other rad things.
Stars: ✭ 144 (-2.7%)
Mutual labels:  developer-tools
Fabric8
fabric8 is an open source microservices platform based on Docker, Kubernetes and Jenkins
Stars: ✭ 1,783 (+1104.73%)
Mutual labels:  developer-tools

Punk

Punk is a developer tool for helping you visualize and navigate data in your application.

It implements the Read-Eval-Browse-Loop concept that Stuart Halloway presented at Clojure/conj 2018.

The project status is currently what I would consider a "usable proof-of-concept": fit for use, but by no means can I call it a maximal UX for such a tool.

I implore you to use it with high expectations, and give feedback accordingly!

screenshot

Usage

By default, Punk adds a listener to values emitted by tap>. To inspect a value, simply use the tap> function to send it to the Punk UI.

While your application is running, you will be able to view the Punk UI either embedded on the webpage (browser) or on a web server started on your localhost (JVM and Node.js).

how to browser

There are 3 panes that will appear in the Punk UI:

  • Entries: A list of the values that have been received by Punk.
  • Current: The value that we most recently navigated to
  • Next: A preview of a value that we can navigate to

Clicking on a value in the Entries pane will navigate to it and bring it into the Current view to be inspected.

Clicking on nested values in the Current pane will navigate to that value and show it in the Next pane. Clicking on the value in the Next pane will bring it into the Current pane.

In both Current and Next, you may change the "view" which you use to visualize the value in that pane.

Currently, there are only simple aggregates (e.g. "map" for a tabular view of maps, "coll" for a tabular view of collections) and an "edn" view for easy copy & paste. User-built custom views coming soon!

How it works

Punk is built with a client-server architecture in order to support different environments your projects might run in.

The Punk core library is what handles calling datafy and nav on values, and must live in your application in order to work correctly. However, the UI can live completely separate from your application code, which means that the whole package is much lighter weight in terms of dependencies.

When in a web browser, it passes messages directly between your application and the UI via core.async. When in a server context (e.g. JVM, Node.js), it communicates via websockets.

If you're interested in implementing a Punk adapter in a specific context (chrome extension, VS Code, vanilla JavaScript, etc.), let me know! It is relatively straight forward but there are still some details that I'm sure will need to be ironed out.

Installation

For each platform, there is a Punk adapter library which sets up the necessary plumbing to allow your application to communicate to the UI application.

Browser

In a browser project, include the punk.adapter.web library:

Clojars Project

Then, in your CLJS build preloads, include the punk.adapter.web.preload namespace:

  ;; shadow-cljs.edn example
  :app {:target :browser
        ;; ...
        :devtools {:preloads [punk.adapter.web.preload]}}

Now, load your app in the browser; Punk's drawer should be on the right hand side. Clicking the drawer or pressing the hot key Ctrl-Alt-P will expand the UI.

JVM

In a JVM Clojure project, include the punk.adapter.jvm library:

Clojars Project

Then, in your codebase, start the Punk server:

(ns my-app.core
  (:require [punk.adapter.jvm :as paj]))

(paj/start)

The JVM adapter automatically starts a web server at http://localhost:9876. Navigate there to see the the Punk UI.

Node.js

In a Node.js project, include the punk.adapter.node library:

Clojars Project

Then, in your CLJS build preloads, include the punk.adapter.node.preload namespace:

  ;; shadow-cljs.edn example
  :app {:target :node-script
        ;; ...
        :devtools {:preloads [punk.adapter.node.preload]}}

The Node.js adapter automatically starts a web server at http://localhost:9876. Navigate there to see the the Punk UI.

Issues

It's new, and still has bugs. Please file issues as you come across them!

Feature requests

If you have a feature request or any feedback on features, please create an issue with the "enhancement" tag.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].