CSS Subgrid Section Renderer + Puck Visual Editor — Open Source, Self-Hosted, AI-Ready.
Track A — inFactory@ /Studio | Track B — inFactory@ /Themes | |
|---|---|---|
| Status | Active | Frozen |
| Purpose | 5–50 pixel-perfect pages per project | Ghost blog/news/newsletter themes |
| Stack | CSS Subgrid + Payload CMS + Puck + Next.js | Ghost CLI + HBS templates + Presets |
| Delivery | NGINX/LEMP (primary) + Ghost (secondary) | Ghost themes |
# inFactory Server (Express, Track A)
curl -fsSL https://studio.xed.dev/install.sh | bash
# Per-Site Setup
curl -fsSL https://studio.xed.dev/install.sh | bash -s setup steirischursprung.at
# Studio-Payload (Puck Visual Editor + Payload CMS + Next.js)
curl -fsSL https://studio.xed.dev/payload.sh | bash
# Per-Site Setup
curl -fsSL https://studio.xed.dev/payload.sh | bash -s setup steirischursprung.at
Requires: Node.js 18+ · Git · pnpm (auto-installed)
# Check all services
curl -fsSL https://studio.xed.dev/health.sh | bash
# Auto-fix stopped services
curl -fsSL https://studio.xed.dev/health.sh | bash -s fix
# Install crontab (every 5 minutes)
curl -fsSL https://studio.xed.dev/health.sh | bash -s cron
| Script | Command | What it does |
|---|---|---|
install.sh | | bash | Install/Update infactory-server + auto-restart services |
| bash -s setup <tld> | Per-site: API-key, config, systemd, ACLs, start, health-check | |
| bash -s status | Status of all infactory-server sites | |
payload.sh | | bash | Install/Update studio-payload + migrate + build + auto-restart |
| bash -s setup <tld> | Per-site: secrets, systemd, migrate, start | |
| bash -s status | Status of all studio-payload sites | |
health.sh | | bash | Health-check all services (NGINX + infactory + payload) |
| bash -s fix | Health-check + auto-restart stopped services | |
| bash -s cron | Install crontab (5-minute health check) | |
| bash -s uncron | Remove crontab |
All scripts: curl -fsSL https://studio.xed.dev/<script>
Claude Codecurl | bashPuck Editor
Compile EngineNGINX Target DriverREST API + Health
Payload CMS 3Puck Visual EditorNext.js 16 SSR
Every section block produces semantic HTML with g_-classes — a thin layer over native CSS Subgrid. No framework classes, no inline styles for layout.
<section data-snippet="s_hero_split" class="g_section">
<div class="g_grid" style="--g-cols: 12">
<div class="g_item g_col-7" data-zone="headline" data-editable="true">
<h1>Your Headline</h1>
</div>
<div class="g_item g_col-5" data-zone="image" data-editable="true">
<!-- visual content -->
</div>
</div>
</section>
Dual format: HBS (Compile Engine) + TSX (Puck Editor) produce DOM-identical output.
| Endpoint | What it does |
|---|---|
GET /xed/api/health | Server health + version (no auth) |
GET /xed/api/nginx/sites | List configured NGINX sites |
POST /xed/api/nginx/write | Write compiled HTML to NGINX webroot |
All endpoints except health require X-API-Key header.
| Repo | Purpose |
|---|---|
| XED-dev/Studio | infactory-cli + infactory-server + install.sh + payload.sh + health.sh |
| XED-dev/Studio-Payload | dd-starter fork with Payload CMS + Puck + SQLite + g_-classes blocks |
inFactory@ /Studio v1.3.0 — XED.dev — MIT License