InstanceIO
Build static or dynamic websites with a component-based PHP framework. HTMx and Docker ready. Export to flat HTML for S3, serverless, or IPFS.
What it does
Component-Based
PHP classes, HTML templates, CSS. Compose and extend infinitely. One command to scaffold.
HTMx Ready
Server-driven UI updates. No JS framework required.
Docker First
Dev and prod containers. One command.
Static Export
Compile to flat HTML for S3, serverless, or IPFS. Dynamic to static with
php console/cmd.php build.
API Integration
Ingest .iio templates from any endpoint. Render remote components locally.
CLI Tooling
Generate components, controllers, routes from the terminal.
Server-driven UI
Full HTMx support. Build dynamic interfaces without a JS framework.
- Server-driven UI updates without JavaScript
- Swap, morph, or append content with HTML attributes
- Trigger endpoints with clicks, forms, or custom events
<!-- HTMx in InstanceIO -->
<button hx-post="/api/action"
hx-target="#result"
hx-swap="outerHTML">
Execute
</button>
<div id="result">
<!-- Server response here -->
</div>
# Development
php console/cmd.php Docker build
# Production (dynamic)
php console/cmd.php Docker build prod-app
# Production (static HTML)
php console/cmd.php Docker build prod-html
# Watch + auto-compile
php console/cmd.php Docker watch
One-command containers
Dev, prod-app, and prod-html Docker images out of the box.
- Local dev environment in one command
- Production images for dynamic or static apps
- Auto-compile watcher in container
Decentralized hosting
Compile to flat HTML and pin to IPFS. Content-addressed, immutable, versioned via IPNS.
# Build static HTML
php console/cmd.php Build
# Pin to IPFS
ipfs add -r dist/
# Publish to IPNS
ipfs name publish /ipfs/QmYourHash
Component syntax
PHP class + HTML template + CSS. That's a component.
class Hero extends Component {
public array $defaults = [
'title' => 'InstanceIO',
'subtitle' => 'Component-based PHP framework'
];
public function __construct(
public array $params,
public string $component = __DIR__ . '/Hero'
){
parent::__construct($this->params, $this->component);
}
}
<section class="hero">
<div class="container">
<h1 class="hero__title">Component syntax</h1>
<p class="hero__subtitle">PHP class + HTML template + CSS. That's a component.</p>
<a href="/docs" class="btn btn--primary">Get Started</a>
</div>
</section>
.hero {
padding: var(--space-4xl) 0;
background: var(--surface);
}
.hero__title {
font-size: 48px;
font-weight: 700;
color: var(--text-primary);
}
Start building
Install the framework and scaffold your first component in under a minute.