feat: publish the Sandwich Hime source preview
Signed-off-by: Cole Speelman <gamertan@noreply.localhost>
This commit is contained in:
+166
@@ -0,0 +1,166 @@
|
||||
<!doctype html>
|
||||
<!-- SPDX-License-Identifier: AGPL-3.0-only -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="go-import" content="gamertan.com/sandwich-hime git https://gitea.speelman.ca/gamertan/sandwich-hime.git">
|
||||
<meta name="go-source" content="gamertan.com/sandwich-hime https://gitea.speelman.ca/gamertan/sandwich-hime https://gitea.speelman.ca/gamertan/sandwich-hime/src/branch/main{/dir} https://gitea.speelman.ca/gamertan/sandwich-hime/src/branch/main{/dir}/{file}#L{line}">
|
||||
<meta name="himesan-release-status" content="pre-release">
|
||||
<meta name="description" content="Sandwich Hime is an HTML-first, PHP-feeling Go component compiler published as an unsupported pre-1.0 source preview.">
|
||||
<meta name="theme-color" content="#251849">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src 'self'; img-src 'self'; base-uri 'none'; form-action 'none'">
|
||||
<title>Sandwich Hime — typed Go templates with a hand-built-web heart</title>
|
||||
<link rel="stylesheet" href="./assets/site.css">
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip-link" href="#main">Skip to the sandwich</a>
|
||||
|
||||
<header class="masthead">
|
||||
<div class="status-strip" role="status">
|
||||
<span aria-hidden="true">◆</span>
|
||||
Public pre-1.0 source preview — unsupported, no v1 release
|
||||
<span aria-hidden="true">◆</span>
|
||||
</div>
|
||||
<div class="masthead-inner">
|
||||
<p class="eyebrow">Gamertan dot com presents</p>
|
||||
<pre class="wordmark" role="img" aria-label="Sandwich Hime">
|
||||
╭────────────────────────╮
|
||||
│ SANDWICH HIME-SAN │
|
||||
╰──────────┬─────────────╯
|
||||
HTML ♥ GO
|
||||
</pre>
|
||||
<h1>A tiny compiler for people who still want to touch the web.</h1>
|
||||
<p class="lede">
|
||||
Sandwich Hime turns one <code>.sando</code> component into ordinary,
|
||||
reviewable Go. It aims for the immediacy of classic mixed markup,
|
||||
while keeping typed data, contextual safety, and boring deployments.
|
||||
</p>
|
||||
<nav aria-label="Project destinations" class="button-row">
|
||||
<a href="https://gitea.speelman.ca/gamertan/sandwich-hime">Canonical Gitea</a>
|
||||
<a href="#status">Read the release status</a>
|
||||
</nav>
|
||||
<p class="mirror-note">
|
||||
Source and contributions live only on canonical Gitea.
|
||||
</p>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="main">
|
||||
<section class="panel code-panel" aria-labelledby="taste-heading">
|
||||
<div>
|
||||
<p class="sticker" aria-hidden="true">view source!</p>
|
||||
<h2 id="taste-heading">A taste of <code>.sando</code></h2>
|
||||
<p>
|
||||
Markup is the main language. Go appears exactly where the page needs
|
||||
it, and every rendered value is escaped for its known HTML context.
|
||||
</p>
|
||||
</div>
|
||||
<pre class="code" tabindex="0" role="region" aria-label="Profile component template example"><code><?sando go
|
||||
package views
|
||||
|
||||
func Profile(page ProfileView)
|
||||
?>
|
||||
<section class="profile">
|
||||
<h1><?= page.Name ?></h1>
|
||||
<? if page.IsAdmin { ?>
|
||||
<?~ AdminBadge() ?>
|
||||
<? } ?>
|
||||
</section></code></pre>
|
||||
</section>
|
||||
|
||||
<section class="panel" aria-labelledby="boundary-heading">
|
||||
<h2 id="boundary-heading">Compiler at the workbench. Small runtime in production.</h2>
|
||||
<div class="cards">
|
||||
<article>
|
||||
<h3><code>himesan</code></h3>
|
||||
<p>
|
||||
A globally installed development tool that checks, generates, and
|
||||
supervises a local server. It does not own your router or app.
|
||||
</p>
|
||||
</article>
|
||||
<article>
|
||||
<h3><code>page.sando.go</code></h3>
|
||||
<p>
|
||||
Deterministic generated Go, committed beside its source so code
|
||||
review and production builds do not need the compiler.
|
||||
</p>
|
||||
</article>
|
||||
<article>
|
||||
<h3><code>sando</code></h3>
|
||||
<p>
|
||||
A deliberately small Apache-2.0 runtime: components, error-aware
|
||||
rendering, and stable escaping helpers—no production server.
|
||||
</p>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="panel origin" aria-labelledby="origin-heading">
|
||||
<div class="pixel-heart" aria-hidden="true">♥</div>
|
||||
<div>
|
||||
<h2 id="origin-heading">From a 2004 PSO game-club page, with love</h2>
|
||||
<p>
|
||||
The spirit is personal-site webmaking: open the file, understand the
|
||||
page, change the page. Sandwich Hime is a love letter to a first
|
||||
Geocities-era site last updated in 2004—rebuilt with the safety and
|
||||
repeatability expected from a serious modern Go project.
|
||||
</p>
|
||||
<p>
|
||||
The checkerboard, bevels, and tiny status lights are intentional.
|
||||
The security model is also intentional.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="panel" id="status" aria-labelledby="status-heading">
|
||||
<h2 id="status-heading">Proof first. Release second.</h2>
|
||||
<p>
|
||||
Hime-san has no supported tagged public version yet. EQL Wiki is the
|
||||
production proving ground, and v1 remains unreleased until the compiler,
|
||||
runtime, development supervisor, and contextual escaping have durable
|
||||
evidence behind them.
|
||||
</p>
|
||||
<ul class="checklist">
|
||||
<li><span aria-hidden="true">◌</span> Cross-platform deterministic generation on Go 1.25 and 1.26</li>
|
||||
<li><span aria-hidden="true">◌</span> Adversarial, fuzz, race, vulnerability, and accessibility gates</li>
|
||||
<li><span aria-hidden="true">◌</span> EQL differential pilot and a clean 14-day production soak</li>
|
||||
<li><span aria-hidden="true">◌</span> Working security contact and human-reviewed project policies</li>
|
||||
<li><span aria-hidden="true">◌</span> Signed tags, checksums, SBOMs, binaries, and vanity paths</li>
|
||||
</ul>
|
||||
<p class="honesty-box">
|
||||
No “fastest template engine” promises live here. Any performance claim
|
||||
will ship with the hardware, commit, dataset, commands, latency, and
|
||||
allocation results needed to reproduce it.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section class="panel names" aria-labelledby="names-heading">
|
||||
<h2 id="names-heading">Please keep the name tags on the right guests</h2>
|
||||
<dl>
|
||||
<div><dt>Project</dt><dd>Sandwich Hime / Hime-san</dd></div>
|
||||
<div><dt>Command</dt><dd><code>himesan</code></dd></div>
|
||||
<div><dt>Template</dt><dd><code>page.sando</code></dd></div>
|
||||
<div><dt>Runtime</dt><dd><code>sando</code></dd></div>
|
||||
<div><dt>San language</dt><dd><code>.san</code>—reserved, separate, and never a Hime-san template</dd></div>
|
||||
</dl>
|
||||
<p>
|
||||
“Hime” on its own already belongs to an unrelated Go framework. The
|
||||
compound Sandwich Hime and Hime-san identity avoids stepping on it.
|
||||
</p>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<p>
|
||||
<span aria-hidden="true">[</span>
|
||||
Hand-built for the web by Gamertan
|
||||
<span aria-hidden="true">]</span>
|
||||
</p>
|
||||
<p class="fine-print">
|
||||
Unsupported pre-1.0 preview. Compiler sources are AGPL-3.0-only; the
|
||||
nested runtime is Apache-2.0; copyable examples are 0BSD.
|
||||
</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user