GET
/
Draft
A visual page-builder for Laravel
Drop in via composer, mount a Livewire component, ship pages your editors can actually edit.
Open the playground
Left
composer require, one migration, mount a Livewire component. No second service to operate.
Middle
Block locks, presence chips, review threads, activity feed. Polling-based.
Right
Drop a PHP class into your app and it shows up in the palette next reload.
This is the page itself, built and rendered with page-studio. Open it in the playground to see the block tree.
logged-cloud/page-studio · FSL-1.1-MIT licensed · converts to plain MIT two years after each release.
$refs.input.focus())"
@keydown.window.meta.f.prevent="open = true; $nextTick(() => $refs.input.focus())"
@keydown.window="if ($event.key === '/' && !['INPUT','TEXTAREA'].includes(document.activeElement.tagName)) { open = true; $event.preventDefault(); $nextTick(() => $refs.input.focus()); }"
@keydown.escape.window="open = false; query = ''"
class="ps-pb-find-wrap">
$refs.find.focus())"
@keydown.window.meta.h.prevent="open = true; $nextTick(() => $refs.find.focus())"
@keydown.escape.window="open = false"
class="ps-pb-find-wrap">
Keyboard shortcuts
| ? | This menu |
| Ctrl-F · / | Find blocks + nodes |
| Ctrl-H | Replace text across the page |
| Right-click block | Block context menu |
| Ctrl-Z / Ctrl-Shift-Z | Undo / redo |
| Ctrl-D | Duplicate selected node |
| Ctrl-C / Ctrl-V | Copy / paste a subgraph |
| Delete / Backspace | Remove selected nodes |
| Ctrl-Scroll | Zoom canvas (cursor-anchored) |
| Middle-mouse drag · Alt-drag | Pan canvas |
| Drag socket → socket | Connect |
| Drag socket → empty | Quick-add picker |
| Shift-drag mid-wire | Bend wire |
| Alt-click wire | Clear bend |
| Right-click chip / canvas | Context menu |
| Drag a number setting | Scrub value |
{ height = Math.max(120, Math.min(window.innerHeight - 80, origin + (start - ev.clientY))); };
const up = () => { window.removeEventListener('pointermove', move); window.removeEventListener('pointerup', up); };
window.addEventListener('pointermove', move);
window.addEventListener('pointerup', up);
$event.preventDefault();
"
title="Drag to resize the node drawer">
⌘
Empty graph
Click a node type on the left to drop it onto this canvas.
Wire output sockets (right side of a node) to input sockets by clicking one then the other.
No variables on this route yet.
Snippet library
No snippets yet · right-click any block and choose "Save as snippet..." to build the library.