Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
356 changes: 356 additions & 0 deletions website/dist/blog/ai-startup-hosting.html

Large diffs are not rendered by default.

87 changes: 87 additions & 0 deletions website/dist/blog/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Blog - Stacker</title>
<meta name="description" content="Guides, tutorials, and insights on deploying applications with Stacker. Learn how to self-host AI-generated apps and save on hosting costs.">
<meta name="theme-color" content="#7e57c2">
<link rel="icon" type="image/png" href="../assets/stacker-logo.png">
<link rel="stylesheet" href="../styles.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
</head>
<body>
<nav class="nav" id="nav">
<div class="nav__inner">
<a href="../index.html" class="nav__logo">
<img src="../assets/stacker-logomark.png" alt="Stacker" class="nav__logo-img">
<span class="nav__logo-text">stacker</span>
</a>
<div class="nav__links" id="navLinks">
<a href="../index.html#features" class="nav__link">Features</a>
<a href="../index.html#release" class="nav__link">Release</a>
<a href="../index.html#ai" class="nav__link">AI Engine</a>
<a href="../index.html#examples" class="nav__link">Examples</a>
<a href="../index.html#commands" class="nav__link">Commands</a>
<a href="../index.html#providers" class="nav__link">Providers</a>
<a href="index.html" class="nav__link nav__link--active">Blog</a>
</div>
<div class="nav__actions">
<a href="https://github.com/trydirect/stacker" target="_blank" rel="noopener" class="nav__github">
<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
<span>GitHub</span>
</a>
<a href="https://try.direct" target="_blank" rel="noopener" class="btn btn--accent btn--sm">TryDirect Platform</a>
</div>
<button class="nav__mobile-toggle" id="mobileToggle" aria-label="Toggle menu">
<span></span><span></span><span></span>
</button>
</div>
</nav>

<main class="blog-page">
<div class="container">
<header class="blog-header">
<h1 class="blog-header__title">Blog</h1>
<p class="blog-header__subtitle">Guides, tutorials, and insights on deploying applications with Stacker.</p>
</header>

<div class="blog-grid">
<article class="blog-card">
<div class="blog-card__meta">
<span class="blog-card__tag">AI &amp; Startups</span>
<time class="blog-card__date" datetime="2026-11-04">November 4, 2026</time>
</div>
<h2 class="blog-card__title">
<a href="ai-startup-hosting.html">How to Deploy an AI-Built Startup Without Burning Cash on Hosting</a>
</h2>
<p class="blog-card__excerpt">
AI tools like Cursor, v0, and ChatGPT let anyone build a working app in hours. But hosting costs can eat your runway before you get your first customer. Here's how to deploy on your own server for a fraction of the price.
</p>
<a href="ai-startup-hosting.html" class="blog-card__link">Read article &rarr;</a>
</article>
</div>
</div>
</main>

<footer class="footer">
<div class="container">
<div class="footer__inner">
<div class="footer__brand">
<img src="../assets/stacker-logomark.png" alt="Stacker" class="footer__logo">
<span class="footer__text">Stacker by TryDirect</span>
</div>
<div class="footer__links">
<a href="https://github.com/trydirect/stacker" target="_blank" rel="noopener">GitHub</a>
<a href="https://try.direct" target="_blank" rel="noopener">Platform</a>
<a href="index.html">Blog</a>
</div>
</div>
</div>
</footer>

<script src="../main.js"></script>
</body>
</html>
29 changes: 15 additions & 14 deletions website/dist/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Stacker v0.3.5 — AI Infrastructure CLI by TryDirect</title>
<meta name="description" content="Stacker v0.3.5 scans your project, deploys to cloud or bare metal, manages remote service secrets, cloud firewalls, agents, and app pipes — all from your terminal.">
<title>Stacker v0.3.5 - AI Infrastructure CLI by TryDirect</title>
<meta name="description" content="Stacker v0.3.5 scans your project, deploys to cloud or bare metal, manages remote service secrets, cloud firewalls, agents, and app pipes - all from your terminal.">
<meta name="theme-color" content="#7e57c2">
<link rel="icon" type="image/png" href="assets/stacker-logo.png">
<link rel="stylesheet" href="styles.css">
Expand Down Expand Up @@ -39,6 +39,7 @@
<a href="#examples" class="nav__link">Examples</a>
<a href="#commands" class="nav__link">Commands</a>
<a href="#providers" class="nav__link">Providers</a>
<a href="blog/index.html" class="nav__link">Blog</a>
</div>
<div class="nav__actions">
<a href="https://github.com/trydirect/stacker" target="_blank" rel="noopener" class="nav__github">
Expand Down Expand Up @@ -70,7 +71,7 @@ <h1 class="hero__title" data-animate="fade-up" data-delay="100">
<p class="hero__subtitle" data-animate="fade-up" data-delay="200">
Stacker scans your project, generates a production-ready <code>stacker.yml</code>,
deploys to cloud or bare metal, manages remote agents, links apps with pipes,
and ships marketplace-ready stacks — all from your terminal.
and ships marketplace-ready stacks - all from your terminal.
</p>
<div class="hero__actions" data-animate="fade-up" data-delay="300">
<a href="#quickstart" class="btn btn--primary btn--lg">
Expand Down Expand Up @@ -195,14 +196,14 @@ <h3 class="feature-card__title">Marketplace Shipping</h3>
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/></svg>
</div>
<h3 class="feature-card__title">Service Catalog</h3>
<p class="feature-card__desc">20+ built-in service templates — Postgres, Redis, WordPress, Elasticsearch, and more. Add with <code>stacker service add</code> or let AI update the stack for you.</p>
<p class="feature-card__desc">20+ built-in service templates - Postgres, Redis, WordPress, Elasticsearch, and more. Add with <code>stacker service add</code> or let AI update the stack for you.</p>
</div>
<div class="feature-card" data-animate="fade-up" data-delay="100">
<div class="feature-card__icon feature-card__icon--ssh">
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/><circle cx="12" cy="16" r="1"/></svg>
</div>
<h3 class="feature-card__title">SSH Key Management</h3>
<p class="feature-card__desc">Generate, view, and upload SSH keys for your servers — all stored securely in HashiCorp Vault. No manual key juggling.</p>
<p class="feature-card__desc">Generate, view, and upload SSH keys for your servers - all stored securely in HashiCorp Vault. No manual key juggling.</p>
</div>
</div>
</div>
Expand All @@ -213,7 +214,7 @@ <h3 class="feature-card__title">SSH Key Management</h3>
<div class="container">
<div class="section__header" data-animate="fade-up">
<span class="section__label">Latest Release</span>
<h2 class="section__title">Stacker v0.3.5<br><span class="gradient-text">— config sync, per-install secrets &amp; safer marketplace snapshots.</span></h2>
<h2 class="section__title">Stacker v0.3.5<br><span class="gradient-text">- config sync, per-install secrets &amp; safer marketplace snapshots.</span></h2>
<p class="section__desc">Releases v0.3.3 through v0.3.5 bring <code>stacker sync</code> for pushing configuration without a deploy, field policies that generate fresh secrets for every marketplace install, secret-free baked snapshots with author-declared volume policies, and cloud deploys that stop with an error instead of a warning when SSH access can't be verified.</p>
</div>
<div class="release__grid">
Expand All @@ -225,7 +226,7 @@ <h3 class="release-card__title">stacker sync</h3>
<article class="release-card" data-animate="fade-up" data-delay="100">
<span class="release-card__eyebrow">Marketplace</span>
<h3 class="release-card__title">Field policies &amp; generated secrets</h3>
<p class="release-card__desc">Mark each field in <code>config_contract</code> as <code>fixed</code>, <code>editable</code>, or <code>generated</code>. Generated values — <code>hex</code>, <code>alphanumeric</code>, <code>uuid</code>, <code>derived_jwt</code> — are stripped at publish and created fresh on every install, so no two buyers share a secret.</p>
<p class="release-card__desc">Mark each field in <code>config_contract</code> as <code>fixed</code>, <code>editable</code>, or <code>generated</code>. Generated values - <code>hex</code>, <code>alphanumeric</code>, <code>uuid</code>, <code>derived_jwt</code> - are stripped at publish and created fresh on every install, so no two buyers share a secret.</p>
</article>
<article class="release-card" data-animate="fade-up" data-delay="200">
<span class="release-card__eyebrow">Bake</span>
Expand All @@ -240,7 +241,7 @@ <h3 class="release-card__title">Verified SSH access</h3>
<article class="release-card" data-animate="fade-up" data-delay="0">
<span class="release-card__eyebrow">Monitoring</span>
<h3 class="release-card__title">stacker monitor</h3>
<p class="release-card__desc">A built-in container-down alarm. Declare a <code>monitoring.alerts</code> block and get notified — terminal, webhook (ntfy/Slack), or pipe — the moment a container stops and when it recovers. Edge-triggered and cron-friendly with <code>--once</code>.</p>
<p class="release-card__desc">A built-in container-down alarm. Declare a <code>monitoring.alerts</code> block and get notified - terminal, webhook (ntfy/Slack), or pipe - the moment a container stops and when it recovers. Edge-triggered and cron-friendly with <code>--once</code>.</p>
</article>
<article class="release-card" data-animate="fade-up" data-delay="100">
<span class="release-card__eyebrow">Pipes</span>
Expand All @@ -250,12 +251,12 @@ <h3 class="release-card__title">Declarative pipes (IaC)</h3>
<article class="release-card" data-animate="fade-up" data-delay="200">
<span class="release-card__eyebrow">Pipes</span>
<h3 class="release-card__title">Manual endpoints &amp; retries</h3>
<p class="release-card__desc">Create pipes non-interactively with <code>--source-endpoint</code> / <code>--target-endpoint</code> — works for any HTTP API. Attach a retry policy and <code>--on-failure</code> / <code>--on-success</code> handlers.</p>
<p class="release-card__desc">Create pipes non-interactively with <code>--source-endpoint</code> / <code>--target-endpoint</code> - works for any HTTP API. Attach a retry policy and <code>--on-failure</code> / <code>--on-success</code> handlers.</p>
</article>
<article class="release-card" data-animate="fade-up" data-delay="300">
<span class="release-card__eyebrow">Proxy</span>
<h3 class="release-card__title">Reverse-proxy routing</h3>
<p class="release-card__desc">Working routing for Traefik (labels), Caddy (Caddyfile), and Nginx Proxy Manager (proxy hosts), all driven by <code>proxy.domains</code> — platform-managed, so no double-deploy or port collisions.</p>
<p class="release-card__desc">Working routing for Traefik (labels), Caddy (Caddyfile), and Nginx Proxy Manager (proxy hosts), all driven by <code>proxy.domains</code> - platform-managed, so no double-deploy or port collisions.</p>
</article>
<article class="release-card" data-animate="fade-up" data-delay="0">
<span class="release-card__eyebrow">Config</span>
Expand Down Expand Up @@ -287,7 +288,7 @@ <h3 class="release-card__title">Remote secret tools</h3>
<div class="section__header" data-animate="fade-up">
<span class="section__label">AI Engine</span>
<h2 class="section__title">Your infrastructure,<br><span class="gradient-text">understood by AI.</span></h2>
<p class="section__desc">Stacker's AI engine doesn't just guess — it deeply analyzes your project to generate the perfect deployment configuration.</p>
<p class="section__desc">Stacker's AI engine doesn't just guess - it deeply analyzes your project to generate the perfect deployment configuration.</p>
</div>
<div class="ai-section__flow" data-animate="fade-up" data-delay="100">
<div class="ai-step">
Expand Down Expand Up @@ -518,7 +519,7 @@ <h2 class="section__title">35 top-level commands.<br><span class="gradient-text"
<code class="command-card__cmd">stacker init</code>
<span class="command-card__flag">--with-ai</span>
</div>
<p class="command-card__desc">Scan your project and generate <code>stacker.yml</code> — with optional AI assistance.</p>
<p class="command-card__desc">Scan your project and generate <code>stacker.yml</code> - with optional AI assistance.</p>
</div>
<div class="command-card" data-command="deploy">
<div class="command-card__header">
Expand All @@ -531,7 +532,7 @@ <h2 class="section__title">35 top-level commands.<br><span class="gradient-text"
<code class="command-card__cmd">stacker sync</code>
<span class="command-card__flag">--verify</span>
</div>
<p class="command-card__desc">Push project and app configuration to Stacker without deploying — no server contact, no containers started.</p>
<p class="command-card__desc">Push project and app configuration to Stacker without deploying - no server contact, no containers started.</p>
</div>
<div class="command-card" data-command="logs">
<div class="command-card__header">
Expand Down Expand Up @@ -583,7 +584,7 @@ <h2 class="section__title">35 top-level commands.<br><span class="gradient-text"
<code class="command-card__cmd">stacker service</code>
<span class="command-card__flag">add &lt;name&gt;</span>
</div>
<p class="command-card__desc">Add services from 20+ built-in templates — Postgres, Redis, WordPress, and more. Auto-adds dependencies.</p>
<p class="command-card__desc">Add services from 20+ built-in templates - Postgres, Redis, WordPress, and more. Auto-adds dependencies.</p>
</div>
<div class="command-card" data-command="pipe">
<div class="command-card__header">
Expand Down
4 changes: 2 additions & 2 deletions website/dist/main.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading