A canvas that patches
The preview is your project's own dev server. Edits are diffed into the rendered page instead of reloading it, so scroll position, open menus and running animations all survive the change.
A desktop visual builder for the Astro project you already have. Design on a live canvas and save clean .astro source you would have written by hand.
Features
Stacki reads your project the way Astro does — components, props, slots, collections and stylesheets — and gives each one a surface you can work in.
The preview is your project's own dev server. Edits are diffed into the rendered page instead of reloading it, so scroll position, open menus and running animations all survive the change.
Layout, spacing, type, borders and effects — with classes, states and the cascade shown honestly.
The settings panel is built from each component's Props interface. Unions become selects, booleans become switches.
Browse collections, edit entries against their schema, and follow references through to the entry they point at.
Custom properties are read out of your stylesheets — one row per property, one column per theme, with live contrast checks.
Commit, push, switch branches carrying uncommitted work with you, and publish a new repository to GitHub.
Desktop, tablet and phone on one canvas, or drag the frame to any width you like.
Markup too complex for the visual model opens in the editor instead, still with live preview. Nothing is rewritten destructively.
Real source
Pages are parsed into a model and written back as ordinary Astro. Your import style, your blank lines, your hand-wrapped prose — all kept, because a save that reformats the file is a save you can't review.
53/54
Real project files that round-trip byte for byte when nothing has been edited.
---
import Layout from "../layouts/BaseLayout.astro";
import Hero from "../components/Hero.astro";
import Card from "../components/Card.astro";
import { getCollection } from "astro:content";
const posts = await getCollection("blog");
---
<Layout title="Home">
<Hero heading="Ship it" variant="wide" />
{
posts.map((post) => (
<Card title={post.data.title} href={`/blog/${post.id}`} />
))
}
</Layout>How it works
Point Stacki at any Astro project on your machine. It installs nothing, changes nothing, and starts the dev server for you.
Click an element to select it. Style it, set its props, bind it to content. The preview patches in place as you type.
Review the diff, commit, push, switch branches — or publish a brand-new repository to GitHub without opening a terminal.
Keyboard first
Every panel has a key. Insert, duplicate, delete and undo work the same across CSS, content and assets, and breakpoints are a keystroke away.
Every shortcut