<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://go-tracks.io/blog</id>
    <title>Tracks Blog</title>
    <updated>2025-11-28T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://go-tracks.io/blog"/>
    <subtitle>Tracks Blog</subtitle>
    <icon>https://go-tracks.io/img/favicon.ico</icon>
    <rights>Copyright © 2026 Anomalous Ventures</rights>
    <entry>
        <title type="html"><![CDATA[Tracks v0.3.0: Phase 1 Complete - The Core Web Layer]]></title>
        <id>https://go-tracks.io/blog/v0-3-0-release</id>
        <link href="https://go-tracks.io/blog/v0-3-0-release"/>
        <updated>2025-11-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The day after Thanksgiving seems like the perfect time to share what we've been cooking up. Tracks v0.3.0 marks the completion of Phase 1 (Core Web Layer), and we're grateful for the progress. Generated applications now include a complete web stack with Chi router, templ templates, HTMX v2, TemplUI components, and a production-ready middleware stack.]]></summary>
        <content type="html"><![CDATA[<p>The day after Thanksgiving seems like the perfect time to share what we've been cooking up. <strong>Tracks v0.3.0</strong> marks the completion of Phase 1 (Core Web Layer), and we're grateful for the progress. Generated applications now include a complete web stack with Chi router, templ templates, HTMX v2, TemplUI components, and a production-ready middleware stack.</p>
<div class="theme-admonition theme-admonition-info admonition_tU5D alert alert--info"><div class="admonitionHeading_IUd7"><span class="admonitionIcon_NEsf"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>What's in v0.3.0</div><div class="admonitionContent_AcY9"><p><strong>Status:</strong> Phase 1 - Core Web Layer ✅ Complete</p><p><strong>New in This Release:</strong></p><ul>
<li class="">✅ Complete middleware stack (10 middleware with security headers, CSP, CORS)</li>
<li class="">✅ TemplUI integration with 100+ shadcn-style components</li>
<li class="">✅ <code>tracks ui</code> CLI commands for component management</li>
<li class="">✅ Asset pipeline with TailwindCSS v4, HTMX v2, and hashfs caching</li>
<li class="">✅ Air live reload for .templ, .css, and .js files</li>
<li class="">✅ Working counter example demonstrating HTMX patterns</li>
<li class="">✅ Comprehensive documentation for all features</li>
</ul><p><strong>Try It:</strong></p><div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Install via Homebrew (macOS/Linux)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">brew </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> anomalousventures/tap/tracks</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Or with Go 1.25+</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">go </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> github.com/anomalousventures/tracks/cmd/tracks@v0.3.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Create a new project</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tracks new myapp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> myapp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Start development (live reload with Air)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">make</span><span class="token plain"> dev</span><br></span></code></pre></div></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="phase-1-core-web-layer-complete">Phase 1: Core Web Layer Complete<a href="https://go-tracks.io/blog/v0-3-0-release#phase-1-core-web-layer-complete" class="hash-link" aria-label="Direct link to Phase 1: Core Web Layer Complete" title="Direct link to Phase 1: Core Web Layer Complete" translate="no">​</a></h2>
<p>Phase 1 builds on the foundation from v0.2.0, adding everything needed for a complete web application. All five epics are now finished:</p>
<ol>
<li class="">✅ <strong>Chi Router Setup</strong> - Route registration, middleware chains, graceful shutdown</li>
<li class="">✅ <strong>Templ Templates</strong> - Type-safe HTML with layouts, pages, and components</li>
<li class="">✅ <strong>Asset Pipeline</strong> - TailwindCSS v4, HTMX v2, hashfs content-addressed URLs</li>
<li class="">✅ <strong>TemplUI Integration</strong> - 100+ components with <code>tracks ui</code> CLI commands</li>
<li class="">✅ <strong>Middleware &amp; Documentation</strong> - Security headers, CSP, CORS, comprehensive guides</li>
</ol>
<p>Generated projects now have a complete, production-ready web layer out of the box.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="production-ready-middleware-stack">Production-Ready Middleware Stack<a href="https://go-tracks.io/blog/v0-3-0-release#production-ready-middleware-stack" class="hash-link" aria-label="Direct link to Production-Ready Middleware Stack" title="Direct link to Production-Ready Middleware Stack" translate="no">​</a></h2>
<p>Every generated application includes a carefully ordered middleware stack with 10 middleware components:</p>
<table><thead><tr><th>Middleware</th><th>Purpose</th></tr></thead><tbody><tr><td>RequestID</td><td>Unique ID for each request (tracing)</td></tr><tr><td>RealIP</td><td>Extract client IP from proxy headers</td></tr><tr><td>Compress</td><td>Gzip response compression</td></tr><tr><td>Logger</td><td>Structured request logging</td></tr><tr><td>Recoverer</td><td>Panic recovery with stack traces</td></tr><tr><td>Timeout</td><td>Cancel long-running requests</td></tr><tr><td>Throttle</td><td>Limit concurrent requests</td></tr><tr><td>CSP</td><td>Content-Security-Policy with nonces</td></tr><tr><td>SecurityHeaders</td><td>X-Frame-Options, X-Content-Type-Options, etc.</td></tr><tr><td>CORS</td><td>Cross-origin requests (disabled by default)</td></tr></tbody></table>
<p>All configurable via environment variables:</p>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Timeout: cancel requests after 60 seconds</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">APP_MIDDLEWARE_TIMEOUT_REQUEST</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">60s</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Throttle: max 100 concurrent requests, 50 in backlog</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">APP_MIDDLEWARE_THROTTLE_LIMIT</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">100</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">APP_MIDDLEWARE_THROTTLE_BACKLOG_LIMIT</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">50</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># CORS: enable for specific origins</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">APP_MIDDLEWARE_CORS_ENABLED</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">APP_MIDDLEWARE_CORS_ALLOWED_ORIGINS</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">https://app.example.com</span><br></span></code></pre></div></div>
<p>See the <a class="" href="https://go-tracks.io/docs/guides/middleware">Middleware Guide</a> for complete documentation.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="templui-component-integration">TemplUI Component Integration<a href="https://go-tracks.io/blog/v0-3-0-release#templui-component-integration" class="hash-link" aria-label="Direct link to TemplUI Component Integration" title="Direct link to TemplUI Component Integration" translate="no">​</a></h2>
<p>Generated projects now include <a href="https://templui.io/" target="_blank" rel="noopener noreferrer" class="">TemplUI</a>, a component library inspired by shadcn/ui but built for Go's templ templating system. Over 100 components are available:</p>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Add components to your project</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tracks ui </span><span class="token function" style="color:#d73a49">add</span><span class="token plain"> button card toast alert</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># List available components</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tracks ui list</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Upgrade templUI version</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tracks ui upgrade</span><br></span></code></pre></div></div>
<p>Components are copied into your project at <code>internal/http/views/components/ui/</code>, giving you full ownership to customize as needed.</p>
<p><strong>Example usage in templ:</strong></p>
<div class="language-templ codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-templ codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token plain">package pages</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">import "myapp/internal/http/views/components/ui"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">templ HomePage() {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;div class="container mx-auto p-4"&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        @ui.Card(ui.CardProps{}) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            @ui.CardHeader() {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                @ui.CardTitle() {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    Welcome to My App</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            @ui.CardContent() {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                &lt;p&gt;Built with Tracks and TemplUI&lt;/p&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            @ui.CardFooter() {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                @ui.Button(ui.ButtonProps{}) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    Get Started</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="complete-asset-pipeline">Complete Asset Pipeline<a href="https://go-tracks.io/blog/v0-3-0-release#complete-asset-pipeline" class="hash-link" aria-label="Direct link to Complete Asset Pipeline" title="Direct link to Complete Asset Pipeline" translate="no">​</a></h2>
<p>The asset pipeline handles everything from development to production:</p>
<p><strong>TailwindCSS v4:</strong></p>
<ul>
<li class="">Automatic compilation on file changes</li>
<li class="">Minified output for production</li>
<li class="">Custom configuration support</li>
</ul>
<p><strong>HTMX v2 with Extensions:</strong></p>
<ul>
<li class="">head-support for <code>&lt;head&gt;</code> element updates</li>
<li class="">idiomorph for smooth DOM morphing</li>
<li class="">response-targets for flexible response handling</li>
</ul>
<p><strong>Content-Addressed URLs (hashfs):</strong></p>
<ul>
<li class="">URLs include content hash: <code>app.abc123.css</code></li>
<li class="">1-year immutable cache headers</li>
<li class="">ETag support with 304 Not Modified responses</li>
<li class="">Gzip compression for text assets</li>
</ul>
<p><strong>Air Live Reload:</strong></p>
<ul>
<li class="">Watches <code>.templ</code>, <code>.css</code>, <code>.js</code> files</li>
<li class="">Automatic rebuild and browser refresh</li>
<li class="">Fast feedback loop during development</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="working-htmx-example">Working HTMX Example<a href="https://go-tracks.io/blog/v0-3-0-release#working-htmx-example" class="hash-link" aria-label="Direct link to Working HTMX Example" title="Direct link to Working HTMX Example" translate="no">​</a></h2>
<p>Every generated project includes a counter component demonstrating HTMX patterns:</p>
<div style="text-align:center;margin:2rem 0"><img src="https://go-tracks.io/img/counter-demo.gif" alt="HTMX Counter Demo - clicking increment and decrement buttons updates the counter without page reloads" style="max-width:400px;border-radius:8px;box-shadow:0 4px 6px rgba(0, 0, 0, 0.1)"></div>
<div class="language-templ codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-templ codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token plain">// Counter component with HTMX</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">templ Counter(count int) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;div id="counter" class="flex items-center gap-4"&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        &lt;button</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            hx-post="/counter/decrement"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            hx-target="#counter"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            hx-swap="outerHTML"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            class="btn"&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            -</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        &lt;/button&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        &lt;span class="text-2xl font-bold"&gt;{ strconv.Itoa(count) }&lt;/span&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        &lt;button</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            hx-post="/counter/increment"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            hx-target="#counter"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            hx-swap="outerHTML"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            class="btn"&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            +</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        &lt;/button&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre></div></div>
<p>The counter updates without page reloads, showing how HTMX enables interactivity while keeping your application server-rendered.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="security-by-default">Security by Default<a href="https://go-tracks.io/blog/v0-3-0-release#security-by-default" class="hash-link" aria-label="Direct link to Security by Default" title="Direct link to Security by Default" translate="no">​</a></h2>
<p>Generated applications are secure out of the box:</p>
<p><strong>Content-Security-Policy with Nonces:</strong></p>
<div class="language-go codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-go codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Nonces are generated per-request and available in templates</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">script nonce</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> templ</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">GetNonce</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">ctx</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// Inline scripts allowed with correct nonce</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">script</span><span class="token operator" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<p><strong>Security Headers:</strong></p>
<ul>
<li class=""><code>X-Frame-Options: DENY</code> - Prevents clickjacking</li>
<li class=""><code>X-Content-Type-Options: nosniff</code> - Prevents MIME sniffing</li>
<li class=""><code>Referrer-Policy: strict-origin-when-cross-origin</code></li>
<li class=""><code>Permissions-Policy</code> - Disables unused browser features</li>
</ul>
<p><strong>CORS Disabled by Default:</strong>
For same-origin HTMX applications, CORS is unnecessary and disabled. Enable it only when needed for cross-origin API access.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="documentation">Documentation<a href="https://go-tracks.io/blog/v0-3-0-release#documentation" class="hash-link" aria-label="Direct link to Documentation" title="Direct link to Documentation" translate="no">​</a></h2>
<p>This release includes comprehensive documentation:</p>
<ul>
<li class=""><strong><a class="" href="https://go-tracks.io/docs/guides/middleware">Middleware Guide</a></strong> - Complete middleware configuration</li>
<li class=""><strong><a class="" href="https://go-tracks.io/docs/guides/caching">Caching Guide</a></strong> - Asset caching with hashfs</li>
<li class=""><strong><a class="" href="https://go-tracks.io/docs/guides/development-workflow">Development Workflow</a></strong> - Air setup and live reload</li>
<li class=""><strong><a class="" href="https://go-tracks.io/docs/guides/architecture-overview">Architecture Overview</a></strong> - Updated with web layer details</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="whats-next">What's Next<a href="https://go-tracks.io/blog/v0-3-0-release#whats-next" class="hash-link" aria-label="Direct link to What's Next" title="Direct link to What's Next" translate="no">​</a></h2>
<p>With Phase 1 complete, development moves to <strong>Phase 2 (Data Layer)</strong>:</p>
<ul>
<li class=""><strong>SQLC integration</strong> for type-safe SQL queries</li>
<li class=""><strong>Goose migrations</strong> with embedded migration files</li>
<li class=""><strong>Repository pattern</strong> implementation</li>
<li class=""><strong>UUIDv7</strong> for time-ordered identifiers</li>
</ul>
<p>See the <a href="https://go-tracks.io/roadmap" target="_blank" rel="noopener noreferrer" class="">full roadmap</a> for details on all planned phases.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="installation">Installation<a href="https://go-tracks.io/blog/v0-3-0-release#installation" class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="homebrew-macoslinux">Homebrew (macOS/Linux)<a href="https://go-tracks.io/blog/v0-3-0-release#homebrew-macoslinux" class="hash-link" aria-label="Direct link to Homebrew (macOS/Linux)" title="Direct link to Homebrew (macOS/Linux)" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token plain">brew </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> anomalousventures/tap/tracks</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="scoop-windows">Scoop (Windows)<a href="https://go-tracks.io/blog/v0-3-0-release#scoop-windows" class="hash-link" aria-label="Direct link to Scoop (Windows)" title="Direct link to Scoop (Windows)" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token plain">scoop bucket </span><span class="token function" style="color:#d73a49">add</span><span class="token plain"> anomalousventures https://github.com/anomalousventures/scoop-bucket</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">scoop </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> tracks</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="go-install">Go Install<a href="https://go-tracks.io/blog/v0-3-0-release#go-install" class="hash-link" aria-label="Direct link to Go Install" title="Direct link to Go Install" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token plain">go </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> github.com/anomalousventures/tracks/cmd/tracks@v0.3.0</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="docker">Docker<a href="https://go-tracks.io/blog/v0-3-0-release#docker" class="hash-link" aria-label="Direct link to Docker" title="Direct link to Docker" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> pull ghcr.io/anomalousventures/tracks:0.3.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> run ghcr.io/anomalousventures/tracks:0.3.0 version</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="direct-download">Direct Download<a href="https://go-tracks.io/blog/v0-3-0-release#direct-download" class="hash-link" aria-label="Direct link to Direct Download" title="Direct link to Direct Download" translate="no">​</a></h3>
<p>Download pre-built binaries from the <a href="https://github.com/anomalousventures/tracks/releases/tag/v0.3.0" target="_blank" rel="noopener noreferrer" class="">v0.3.0 release page</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="contributing">Contributing<a href="https://go-tracks.io/blog/v0-3-0-release#contributing" class="hash-link" aria-label="Direct link to Contributing" title="Direct link to Contributing" translate="no">​</a></h2>
<p>Tracks is in active development and contributions are welcome!</p>
<p><strong>Ways to contribute:</strong></p>
<ul>
<li class="">Report bugs and request features via <a href="https://github.com/anomalousventures/tracks/issues" target="_blank" rel="noopener noreferrer" class="">GitHub Issues</a></li>
<li class="">Discuss ideas in <a href="https://github.com/anomalousventures/tracks/discussions" target="_blank" rel="noopener noreferrer" class="">GitHub Discussions</a></li>
<li class="">Submit pull requests (see <a href="https://github.com/anomalousventures/tracks/blob/main/CONTRIBUTING.md" target="_blank" rel="noopener noreferrer" class="">CONTRIBUTING.md</a>)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="acknowledgments">Acknowledgments<a href="https://go-tracks.io/blog/v0-3-0-release#acknowledgments" class="hash-link" aria-label="Direct link to Acknowledgments" title="Direct link to Acknowledgments" translate="no">​</a></h2>
<p>Special thanks to the maintainers of projects that make Tracks possible:</p>
<ul>
<li class=""><a href="https://github.com/go-chi/chi" target="_blank" rel="noopener noreferrer" class="">Chi</a> - HTTP routing</li>
<li class=""><a href="https://github.com/a-h/templ" target="_blank" rel="noopener noreferrer" class="">templ</a> - Type-safe templates</li>
<li class=""><a href="https://templui.io/" target="_blank" rel="noopener noreferrer" class="">TemplUI</a> - Component library</li>
<li class=""><a href="https://htmx.org/" target="_blank" rel="noopener noreferrer" class="">HTMX</a> - HTML-driven interactivity</li>
<li class=""><a href="https://github.com/benbjohnson/hashfs" target="_blank" rel="noopener noreferrer" class="">hashfs</a> - Content-addressed serving</li>
<li class=""><a href="https://tailwindcss.com/" target="_blank" rel="noopener noreferrer" class="">TailwindCSS</a> - Utility-first CSS</li>
<li class=""><a href="https://github.com/cosmtrek/air" target="_blank" rel="noopener noreferrer" class="">Air</a> - Live reload</li>
</ul>
<hr>
<p><strong>Ready to build?</strong> Install Tracks and create your first project. We're thankful for everyone building with Tracks and helping shape its future.</p>
<p>An <a href="https://github.com/enterprises/anomalousventures" target="_blank" rel="noopener noreferrer" class="">Anomalous Venture</a> by <a href="https://github.com/ashmortar" target="_blank" rel="noopener noreferrer" class="">Aaron Ross</a></p>]]></content>
        <author>
            <name>Aaron Ross</name>
            <uri>https://github.com/ashmortar</uri>
        </author>
        <category label="release" term="release"/>
        <category label="core-web" term="core-web"/>
        <category label="phase-1" term="phase-1"/>
        <category label="htmx" term="htmx"/>
        <category label="templui" term="templui"/>
        <category label="middleware" term="middleware"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Tracks v0.2.0: Phase 0 Complete - Foundation Ready for Production]]></title>
        <id>https://go-tracks.io/blog/v0-2-0-release</id>
        <link href="https://go-tracks.io/blog/v0-2-0-release"/>
        <updated>2025-11-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I'm excited to announce Tracks v0.2.0, marking the completion of Phase 0 (Foundation). The CLI tool can now generate production-ready Go web applications with clean architecture, comprehensive tooling, and multi-database support.]]></summary>
        <content type="html"><![CDATA[<p>I'm excited to announce <strong>Tracks v0.2.0</strong>, marking the completion of Phase 0 (Foundation). The CLI tool can now generate production-ready Go web applications with clean architecture, comprehensive tooling, and multi-database support.</p>
<div class="theme-admonition theme-admonition-info admonition_tU5D alert alert--info"><div class="admonitionHeading_IUd7"><span class="admonitionIcon_NEsf"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>What's in v0.2.0</div><div class="admonitionContent_AcY9"><p><strong>Status:</strong> Phase 0 - Foundation ✅ Complete</p><p><strong>Available Now:</strong></p><ul>
<li class="">✅ Complete <code>tracks new</code> command with project scaffolding</li>
<li class="">✅ Multi-database driver support (LibSQL, SQLite3, PostgreSQL)</li>
<li class="">✅ Development tooling (Makefile, Air, Docker Compose, golangci-lint, Mockery, CI/CD)</li>
<li class="">✅ Auto-generated <code>.env</code> and automatic Docker service startup</li>
<li class="">✅ Production-ready templates with health endpoints, logging, and configuration</li>
<li class="">✅ Comprehensive documentation with tutorials and guides</li>
</ul><p><strong>Try It:</strong></p><div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Install (requires Go 1.25+)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">go </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> github.com/anomalousventures/tracks/cmd/tracks@v0.2.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Create a new project</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tracks new myapp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> myapp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Start development (auto-starts Docker, runs with live reload)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">make</span><span class="token plain"> dev</span><br></span></code></pre></div></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="phase-0-mission-accomplished">Phase 0: Mission Accomplished<a href="https://go-tracks.io/blog/v0-2-0-release#phase-0-mission-accomplished" class="hash-link" aria-label="Direct link to Phase 0: Mission Accomplished" title="Direct link to Phase 0: Mission Accomplished" translate="no">​</a></h2>
<p>Phase 0 (Foundation) set out to build the CLI infrastructure and project generation capabilities that would serve as the foundation for all future features. With v0.2.0, all five epics are complete:</p>
<ol>
<li class="">✅ <strong>CLI Infrastructure</strong> - Cobra framework, Renderer pattern, mode detection</li>
<li class="">✅ <strong>Template Engine</strong> - Embedded template system with variable substitution</li>
<li class="">✅ <strong>Project Generation</strong> - Complete <code>tracks new</code> command</li>
<li class="">✅ <strong>Generated Project Tooling</strong> - Makefile, Docker, CI/CD, testing, linting</li>
<li class="">✅ <strong>Documentation</strong> - Installation guides, tutorials, architecture docs, CLI reference</li>
</ol>
<p>This milestone means Tracks can now generate real, working Go applications that you can run, test, and deploy today.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="whats-working">What's Working<a href="https://go-tracks.io/blog/v0-2-0-release#whats-working" class="hash-link" aria-label="Direct link to What's Working" title="Direct link to What's Working" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="project-generation-tracks-new">Project Generation (<code>tracks new</code>)<a href="https://go-tracks.io/blog/v0-2-0-release#project-generation-tracks-new" class="hash-link" aria-label="Direct link to project-generation-tracks-new" title="Direct link to project-generation-tracks-new" translate="no">​</a></h3>
<p>The star of this release is the <code>tracks new</code> command, which generates a complete Go web application with clean architecture and production-ready tooling.</p>
<picture><source srcset="/assets/images/tracks-new-command-2c54975cd18e35da5bfe581630d3edb2.gif" type="image/gif" media="(prefers-reduced-motion: no-preference)"><source srcset="/assets/images/tracks-new-command-screenshot-578647a3d8db15264f1a8f86e3cd083e.webp" type="image/webp" media="(prefers-reduced-motion: reduce)"><img src="https://go-tracks.io/assets/images/tracks-new-command-screenshot-b0e6d85e2a0d31229b1de525629e0ca6.png" alt="Terminal output showing successful project creation with project location, module name, database type, and git status, followed by next steps to cd into the project, run tests, and start development server"></picture>
<p><strong>What you get:</strong></p>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token plain">tracks new myapp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Choose database driver: LibSQL (default), SQLite3, or PostgreSQL</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Generates complete project structure with:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># - Clean layered architecture (handlers → services → repositories)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># - Health check endpoint with database connectivity test</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># - Auto-generated .env with sensible defaults</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># - Makefile with dev, test, lint, build targets</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># - Docker Compose for local development</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># - GitHub Actions CI workflow</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># - All tests passing out of the box</span><br></span></code></pre></div></div>
<p>You can customize the generated project with flags:</p>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Specify database driver</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tracks new myapp </span><span class="token parameter variable" style="color:#36acaa">--db</span><span class="token plain"> postgres</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Provide custom module path</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tracks new myapp </span><span class="token parameter variable" style="color:#36acaa">--module</span><span class="token plain"> github.com/myorg/myapp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Skip git initialization</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tracks new myapp --no-git</span><br></span></code></pre></div></div>
<p>See the <a class="" href="https://go-tracks.io/docs/cli/new">CLI documentation</a> for all available options.</p>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="development-tooling">Development Tooling<a href="https://go-tracks.io/blog/v0-2-0-release#development-tooling" class="hash-link" aria-label="Direct link to Development Tooling" title="Direct link to Development Tooling" translate="no">​</a></h3>
<p>Generated projects include a comprehensive development environment that just works:</p>
<p><strong>Makefile targets:</strong></p>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">make</span><span class="token plain"> dev       </span><span class="token comment" style="color:#999988;font-style:italic"># Auto-starts Docker services, runs with Air live reload</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">make</span><span class="token plain"> </span><span class="token builtin class-name">test</span><span class="token plain">      </span><span class="token comment" style="color:#999988;font-style:italic"># Runs all tests</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">make</span><span class="token plain"> lint      </span><span class="token comment" style="color:#999988;font-style:italic"># Runs golangci-lint for code quality</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">make</span><span class="token plain"> build     </span><span class="token comment" style="color:#999988;font-style:italic"># Builds production binary</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">make</span><span class="token plain"> generate  </span><span class="token comment" style="color:#999988;font-style:italic"># Generates test mocks and SQL code</span><br></span></code></pre></div></div>
<p><strong>Docker Compose integration:</strong></p>
<ul>
<li class="">Automatic service startup with <code>make dev</code></li>
<li class="">Database containers for all supported drivers (Postgres, LibSQL, SQLite)</li>
<li class="">Health checks and proper networking</li>
<li class="">No manual configuration required</li>
</ul>
<p><strong>Live reload with Air:</strong></p>
<ul>
<li class="">Watches for code changes</li>
<li class="">Automatically rebuilds and restarts</li>
<li class="">Fast feedback loop during development</li>
</ul>
<p><strong>CI/CD ready:</strong></p>
<ul>
<li class="">GitHub Actions workflow included</li>
<li class="">Tests run on Ubuntu, macOS, and Windows</li>
<li class="">Linting enforced in CI</li>
<li class="">Mock generation verified</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="production-ready-architecture">Production-Ready Architecture<a href="https://go-tracks.io/blog/v0-2-0-release#production-ready-architecture" class="hash-link" aria-label="Direct link to Production-Ready Architecture" title="Direct link to Production-Ready Architecture" translate="no">​</a></h3>
<p>Generated applications follow clean architecture principles and include everything you need for production:</p>
<p><strong>Health check endpoint:</strong></p>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> http://localhost:8080/api/health</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Returns JSON with status and timestamp</span><br></span></code></pre></div></div>
<p><strong>Structured logging:</strong></p>
<ul>
<li class="">zerolog for high-performance JSON logging</li>
<li class="">Configurable log levels via environment variables</li>
<li class="">Request logging middleware included</li>
</ul>
<p><strong>Configuration management:</strong></p>
<ul>
<li class="">Hierarchical config (defaults → .env → env vars)</li>
<li class="">Type-safe configuration with Viper</li>
<li class="">Environment-specific settings</li>
</ul>
<p><strong>Type-safe database queries:</strong></p>
<ul>
<li class="">SQLC integration generates Go code from SQL</li>
<li class="">Compile-time query validation</li>
<li class="">Support for LibSQL, SQLite3, and PostgreSQL</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="documentation">Documentation<a href="https://go-tracks.io/blog/v0-2-0-release#documentation" class="hash-link" aria-label="Direct link to Documentation" title="Direct link to Documentation" translate="no">​</a></h2>
<p>This release includes comprehensive documentation to help you get started:</p>
<ul>
<li class=""><strong><a class="" href="https://go-tracks.io/docs/getting-started/installation">Getting Started Guide</a></strong> - Installation and setup</li>
<li class=""><strong><a class="" href="https://go-tracks.io/docs/getting-started/quickstart">Quickstart Tutorial</a></strong> - Create your first project in 15 minutes</li>
<li class=""><strong><a class="" href="https://go-tracks.io/docs/cli/new">CLI Reference</a></strong> - Complete command documentation</li>
<li class=""><strong><a class="" href="https://go-tracks.io/docs/guides/architecture-overview">Architecture Overview</a></strong> - Understand the generated project structure</li>
</ul>
<p>All documentation is available at <a href="https://go-tracks.io/" target="_blank" rel="noopener noreferrer" class="">go-tracks.io</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="whats-next">What's Next<a href="https://go-tracks.io/blog/v0-2-0-release#whats-next" class="hash-link" aria-label="Direct link to What's Next" title="Direct link to What's Next" translate="no">​</a></h2>
<p>With Phase 0 complete, development moves to <strong>Phase 1 (Core Web Layer)</strong>:</p>
<ul>
<li class=""><strong>Code generators</strong> for resources, handlers, services, and repositories</li>
<li class=""><strong>Interactive TUI</strong> for guided project setup with Bubble Tea</li>
<li class=""><strong>Additional scaffolding commands</strong> for common patterns</li>
</ul>
<p>See the <a href="https://go-tracks.io/roadmap" target="_blank" rel="noopener noreferrer" class="">full roadmap</a> for details on all planned phases.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="installation">Installation<a href="https://go-tracks.io/blog/v0-2-0-release#installation" class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="homebrew-macoslinux">Homebrew (macOS/Linux)<a href="https://go-tracks.io/blog/v0-2-0-release#homebrew-macoslinux" class="hash-link" aria-label="Direct link to Homebrew (macOS/Linux)" title="Direct link to Homebrew (macOS/Linux)" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token plain">brew </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> anomalousventures/tap/tracks</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="go-install">Go Install<a href="https://go-tracks.io/blog/v0-2-0-release#go-install" class="hash-link" aria-label="Direct link to Go Install" title="Direct link to Go Install" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token plain">go </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> github.com/anomalousventures/tracks/cmd/tracks@v0.2.0</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="docker">Docker<a href="https://go-tracks.io/blog/v0-2-0-release#docker" class="hash-link" aria-label="Direct link to Docker" title="Direct link to Docker" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> pull ghcr.io/anomalousventures/tracks:0.2.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> run ghcr.io/anomalousventures/tracks:0.2.0 version</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="scoop-windows">Scoop (Windows)<a href="https://go-tracks.io/blog/v0-2-0-release#scoop-windows" class="hash-link" aria-label="Direct link to Scoop (Windows)" title="Direct link to Scoop (Windows)" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token plain">scoop bucket </span><span class="token function" style="color:#d73a49">add</span><span class="token plain"> anomalousventures https://github.com/anomalousventures/scoop-bucket</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">scoop </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> tracks</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="direct-download">Direct Download<a href="https://go-tracks.io/blog/v0-2-0-release#direct-download" class="hash-link" aria-label="Direct link to Direct Download" title="Direct link to Direct Download" translate="no">​</a></h3>
<p>Download pre-built binaries from the <a href="https://github.com/anomalousventures/tracks/releases/tag/v0.2.0" target="_blank" rel="noopener noreferrer" class="">v0.2.0 release page</a>.</p>
<p>Available for:</p>
<ul>
<li class="">Linux (AMD64, ARM64) - <code>.tar.gz</code>, <code>.deb</code>, <code>.rpm</code>, <code>.apk</code></li>
<li class="">macOS (AMD64, ARM64) - <code>.tar.gz</code></li>
<li class="">Windows (AMD64, ARM64) - <code>.zip</code></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="contributing">Contributing<a href="https://go-tracks.io/blog/v0-2-0-release#contributing" class="hash-link" aria-label="Direct link to Contributing" title="Direct link to Contributing" translate="no">​</a></h2>
<p>Tracks is in active early development and contributions are welcome!</p>
<p><strong>Ways to contribute:</strong></p>
<ul>
<li class="">Report bugs and request features via <a href="https://github.com/anomalousventures/tracks/issues" target="_blank" rel="noopener noreferrer" class="">GitHub Issues</a></li>
<li class="">Discuss ideas in <a href="https://github.com/anomalousventures/tracks/discussions" target="_blank" rel="noopener noreferrer" class="">GitHub Discussions</a></li>
<li class="">Submit pull requests (see <a href="https://github.com/anomalousventures/tracks/blob/main/CONTRIBUTING.md" target="_blank" rel="noopener noreferrer" class="">CONTRIBUTING.md</a>)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="acknowledgments">Acknowledgments<a href="https://go-tracks.io/blog/v0-2-0-release#acknowledgments" class="hash-link" aria-label="Direct link to Acknowledgments" title="Direct link to Acknowledgments" translate="no">​</a></h2>
<p>Tracks builds on excellent open-source projects:</p>
<ul>
<li class=""><a href="https://github.com/spf13/cobra" target="_blank" rel="noopener noreferrer" class="">Cobra</a> - CLI framework</li>
<li class=""><a href="https://github.com/go-chi/chi" target="_blank" rel="noopener noreferrer" class="">Chi</a> - HTTP routing</li>
<li class=""><a href="https://github.com/a-h/templ" target="_blank" rel="noopener noreferrer" class="">templ</a> - Type-safe templates</li>
<li class=""><a href="https://sqlc.dev/" target="_blank" rel="noopener noreferrer" class="">SQLC</a> - SQL code generation</li>
<li class=""><a href="https://github.com/pressly/goose" target="_blank" rel="noopener noreferrer" class="">Goose</a> - Database migrations</li>
<li class=""><a href="https://github.com/cosmtrek/air" target="_blank" rel="noopener noreferrer" class="">Air</a> - Live reload</li>
<li class=""><a href="https://golangci-lint.run/" target="_blank" rel="noopener noreferrer" class="">golangci-lint</a> - Linting</li>
<li class=""><a href="https://vektra.github.io/mockery/" target="_blank" rel="noopener noreferrer" class="">Mockery</a> - Mock generation</li>
<li class=""><a href="https://github.com/charmbracelet/bubbletea" target="_blank" rel="noopener noreferrer" class="">Bubble Tea</a> - TUI framework</li>
</ul>
<p>Thank you to all the maintainers and contributors of these projects.</p>
<hr>
<p><strong>Ready to build?</strong> Install Tracks and create your first project today. Join the <a href="https://github.com/anomalousventures/tracks/discussions" target="_blank" rel="noopener noreferrer" class="">GitHub Discussions</a> to share what you're building and help shape the future of the project.</p>
<p>An <a href="https://github.com/enterprises/anomalousventures" target="_blank" rel="noopener noreferrer" class="">Anomalous Venture</a> by <a href="https://github.com/ashmortar" target="_blank" rel="noopener noreferrer" class="">Aaron Ross</a></p>]]></content>
        <author>
            <name>Aaron Ross</name>
            <uri>https://github.com/ashmortar</uri>
        </author>
        <category label="release" term="release"/>
        <category label="foundation" term="foundation"/>
        <category label="phase-0" term="phase-0"/>
        <category label="project-generation" term="project-generation"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Tracks v0.1.0: CLI Foundation Complete]]></title>
        <id>https://go-tracks.io/blog/v0-1-0-release</id>
        <link href="https://go-tracks.io/blog/v0-1-0-release"/>
        <updated>2025-10-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Tracks v0.1.0 is now available! This first release completes the CLI infrastructure foundation with a robust, extensible command-line tool ready for project generation.]]></summary>
        <content type="html"><![CDATA[<p>Tracks v0.1.0 is now available! This first release completes the CLI infrastructure foundation with a robust, extensible command-line tool ready for project generation.</p>
<div class="theme-admonition theme-admonition-info admonition_tU5D alert alert--info"><div class="admonitionHeading_IUd7"><span class="admonitionIcon_NEsf"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>What's in v0.1.0</div><div class="admonitionContent_AcY9"><p><strong>Status:</strong> Phase 0 - Foundation (Epic 1: CLI Infrastructure ✅)</p><p><strong>Available Now:</strong></p><ul>
<li class="">Full CLI with Cobra framework integration</li>
<li class="">Multiple output modes (Console, JSON, TUI-ready)</li>
<li class="">Smart environment detection (TTY, CI, piped output)</li>
<li class="">Theme system with Lip Gloss styling</li>
<li class="">Comprehensive test coverage</li>
<li class="">Complete documentation</li>
</ul><p><strong>Try It:</strong></p><div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># macOS</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">brew </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> anomalousventures/tap/tracks</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Any platform with Go</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">go </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> github.com/anomalousventures/tracks/cmd/tracks@v0.1.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Verify installation</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tracks version</span><br></span></code></pre></div></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="whats-working">What's Working<a href="https://go-tracks.io/blog/v0-1-0-release#whats-working" class="hash-link" aria-label="Direct link to What's Working" title="Direct link to What's Working" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="core-cli-commands">Core CLI Commands<a href="https://go-tracks.io/blog/v0-1-0-release#core-cli-commands" class="hash-link" aria-label="Direct link to Core CLI Commands" title="Direct link to Core CLI Commands" translate="no">​</a></h3>
<p>The <code>tracks</code> CLI is now fully operational with:</p>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token plain">tracks version       </span><span class="token comment" style="color:#999988;font-style:italic"># Display version information</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tracks </span><span class="token parameter variable" style="color:#36acaa">--help</span><span class="token plain">        </span><span class="token comment" style="color:#999988;font-style:italic"># Show help for any command</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tracks </span><span class="token parameter variable" style="color:#36acaa">--json</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">cmd</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># Machine-readable JSON output</span><br></span></code></pre></div></div>
<p>All commands support global flags for controlling output format and verbosity.</p>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="multiple-output-modes">Multiple Output Modes<a href="https://go-tracks.io/blog/v0-1-0-release#multiple-output-modes" class="hash-link" aria-label="Direct link to Multiple Output Modes" title="Direct link to Multiple Output Modes" translate="no">​</a></h3>
<p>Tracks automatically detects your environment and chooses the best output format:</p>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token plain">$ tracks version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Tracks v0.1.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Commit: abc123def</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Built: </span><span class="token number" style="color:#36acaa">2025</span><span class="token plain">-10-25T08:00:00Z</span><br></span></code></pre></div></div>
<p>The CLI supports Console (human-readable), JSON (machine-readable), and TUI (Phase 4) modes. It intelligently switches based on TTY detection, CI environment, and flags like <code>--json</code>. See the <a class="" href="https://go-tracks.io/docs/cli/output-modes">Output Modes documentation</a> for details.</p>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="architecture--testing">Architecture &amp; Testing<a href="https://go-tracks.io/blog/v0-1-0-release#architecture--testing" class="hash-link" aria-label="Direct link to Architecture &amp; Testing" title="Direct link to Architecture &amp; Testing" translate="no">​</a></h3>
<p>The CLI uses a clean Renderer pattern separating business logic from output formatting, making it easy to add new modes without touching command logic. All flags can be configured via <code>TRACKS_*</code> environment variables.</p>
<p>The codebase includes comprehensive unit and integration tests with 90%+ coverage in critical paths.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="documentation">Documentation<a href="https://go-tracks.io/blog/v0-1-0-release#documentation" class="hash-link" aria-label="Direct link to Documentation" title="Direct link to Documentation" translate="no">​</a></h2>
<p>Full documentation is available at <a href="https://go-tracks.io/" target="_blank" rel="noopener noreferrer" class="">go-tracks.io</a>:</p>
<ul>
<li class=""><a class="" href="https://go-tracks.io/docs/cli/overview">CLI Overview</a> - Installation and getting started</li>
<li class=""><a class="" href="https://go-tracks.io/docs/cli/commands">Commands Reference</a> - Complete command documentation</li>
<li class=""><a class="" href="https://go-tracks.io/docs/cli/output-modes">Output Modes</a> - Output format details</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="whats-next">What's Next<a href="https://go-tracks.io/blog/v0-1-0-release#whats-next" class="hash-link" aria-label="Direct link to What's Next" title="Direct link to What's Next" translate="no">​</a></h2>
<p>With the CLI foundation complete, development moves to <strong>Epic 2: Template Engine &amp; Embedding</strong>.</p>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="phase-0---next-steps">Phase 0 - Next Steps<a href="https://go-tracks.io/blog/v0-1-0-release#phase-0---next-steps" class="hash-link" aria-label="Direct link to Phase 0 - Next Steps" title="Direct link to Phase 0 - Next Steps" translate="no">​</a></h3>
<p><strong>Epic 2: Template Engine</strong> (Starting Soon)</p>
<ul>
<li class="">Embed file system for project templates</li>
<li class="">Template variable interpolation</li>
<li class="">File structure generation</li>
<li class="">Template validation and testing</li>
</ul>
<p><strong>Epic 3: Project Generation</strong> (After Epic 2)</p>
<ul>
<li class=""><code>tracks new &lt;project&gt;</code> command</li>
<li class="">Interactive project configuration</li>
<li class="">Database driver selection (postgres, sqlite, libsql)</li>
<li class="">Authentication method selection (session, jwt, oauth)</li>
</ul>
<p>See the complete <a href="https://github.com/anomalousventures/tracks/blob/main/docs/roadmap/README.md" target="_blank" rel="noopener noreferrer" class="">Roadmap</a> for details on all planned features.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="installation">Installation<a href="https://go-tracks.io/blog/v0-1-0-release#installation" class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="from-source">From Source<a href="https://go-tracks.io/blog/v0-1-0-release#from-source" class="hash-link" aria-label="Direct link to From Source" title="Direct link to From Source" translate="no">​</a></h3>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Clone repository</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">git</span><span class="token plain"> clone https://github.com/anomalousventures/tracks.git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> tracks</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Build CLI</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">make</span><span class="token plain"> build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Binary available at ./bin/tracks</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">./bin/tracks version</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="from-release">From Release<a href="https://go-tracks.io/blog/v0-1-0-release#from-release" class="hash-link" aria-label="Direct link to From Release" title="Direct link to From Release" translate="no">​</a></h3>
<p><strong>Package Managers:</strong></p>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># macOS (Homebrew)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">brew </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> anomalousventures/tap/tracks</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Windows (Scoop)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">scoop bucket </span><span class="token function" style="color:#d73a49">add</span><span class="token plain"> anomalousventures https://github.com/anomalousventures/scoop-bucket</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">scoop </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> tracks</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Go install</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">go </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> github.com/anomalousventures/tracks/cmd/tracks@v0.1.0</span><br></span></code></pre></div></div>
<p><strong>Docker:</strong></p>
<div class="language-bash codeBlockContainer_jW2R theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_bjyH"><pre tabindex="0" class="prism-code language-bash codeBlock_VMwh thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_j72D"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> run </span><span class="token parameter variable" style="color:#36acaa">--rm</span><span class="token plain"> ghcr.io/anomalousventures/tracks:0.1.0 version</span><br></span></code></pre></div></div>
<p><strong>Direct Downloads:</strong></p>
<p>Pre-built binaries for Linux, macOS, and Windows are available on the <a href="https://github.com/anomalousventures/tracks/releases/v0.1.0" target="_blank" rel="noopener noreferrer" class="">GitHub Releases</a> page.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="contributing">Contributing<a href="https://go-tracks.io/blog/v0-1-0-release#contributing" class="hash-link" aria-label="Direct link to Contributing" title="Direct link to Contributing" translate="no">​</a></h2>
<p>Tracks is open source and welcomes contributions! The project is in active development with clearly defined epics and tasks.</p>
<p><strong>Ways to contribute:</strong></p>
<ul>
<li class="">Report bugs via <a href="https://github.com/anomalousventures/tracks/issues" target="_blank" rel="noopener noreferrer" class="">GitHub Issues</a></li>
<li class="">Discuss ideas in <a href="https://github.com/anomalousventures/tracks/discussions" target="_blank" rel="noopener noreferrer" class="">GitHub Discussions</a></li>
<li class="">Submit pull requests (see <a href="https://github.com/anomalousventures/tracks/blob/main/CONTRIBUTING.md" target="_blank" rel="noopener noreferrer" class="">CONTRIBUTING.md</a>)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="acknowledgments">Acknowledgments<a href="https://go-tracks.io/blog/v0-1-0-release#acknowledgments" class="hash-link" aria-label="Direct link to Acknowledgments" title="Direct link to Acknowledgments" translate="no">​</a></h2>
<p>v0.1.0 wouldn't be possible without these excellent projects:</p>
<ul>
<li class=""><a href="https://github.com/spf13/cobra" target="_blank" rel="noopener noreferrer" class="">Cobra</a> - CLI framework</li>
<li class=""><a href="https://github.com/spf13/viper" target="_blank" rel="noopener noreferrer" class="">Viper</a> - Configuration management</li>
<li class=""><a href="https://github.com/charmbracelet/lipgloss" target="_blank" rel="noopener noreferrer" class="">Lip Gloss</a> - Terminal styling</li>
<li class=""><a href="https://github.com/charmbracelet/bubbles" target="_blank" rel="noopener noreferrer" class="">Bubbles</a> - TUI components</li>
<li class=""><a href="https://github.com/charmbracelet/bubbletea" target="_blank" rel="noopener noreferrer" class="">Bubble Tea</a> - TUI framework</li>
</ul>
<hr>
<p>Have questions or feedback? Find us on <a href="https://github.com/anomalousventures/tracks" target="_blank" rel="noopener noreferrer" class="">GitHub</a> or open a <a href="https://github.com/anomalousventures/tracks/discussions" target="_blank" rel="noopener noreferrer" class="">Discussion</a>.</p>
<p><em>Tracks is part of <a href="https://github.com/anomalousventures" target="_blank" rel="noopener noreferrer" class="">Anomalous Ventures</a>, building tools to make developers more productive.</em></p>]]></content>
        <author>
            <name>Aaron Ross</name>
            <uri>https://github.com/ashmortar</uri>
        </author>
        <category label="release" term="release"/>
        <category label="cli" term="cli"/>
        <category label="foundation" term="foundation"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building Tracks: A Rails-Inspired Go Web Framework for the AI Era]]></title>
        <id>https://go-tracks.io/blog/building-tracks</id>
        <link href="https://go-tracks.io/blog/building-tracks"/>
        <updated>2025-10-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Why I'm creating a batteries-included Go framework with AI integration and code generation]]></summary>
        <content type="html"><![CDATA[<p><em>Why I'm creating a batteries-included Go framework with AI integration and code generation</em></p>
<div class="theme-admonition theme-admonition-info admonition_tU5D alert alert--info"><div class="admonitionHeading_IUd7"><span class="admonitionIcon_NEsf"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>TL;DR</div><div class="admonitionContent_AcY9"><p><strong>What is Tracks?</strong> An opinionated Go web framework that brings Rails-like conventions to Go while embracing modern tools like <a href="https://htmx.org/" target="_blank" rel="noopener noreferrer" class="">HTMX</a>, <a href="https://github.com/a-h/templ" target="_blank" rel="noopener noreferrer" class="">templ</a>, and <a href="https://sqlc.dev/" target="_blank" rel="noopener noreferrer" class="">SQLC</a>. Unlike traditional frameworks, it generates clean, readable Go code you own completely—no runtime dependencies, no magic.</p><p><strong>What makes it unique:</strong></p><ul>
<li class="">🎛️ <strong>Interactive Terminal UI</strong> for development, debugging, and monitoring</li>
<li class="">🤖 <strong>AI Integration</strong> via Model Context Protocol for intelligent code generation</li>
<li class="">🎵 <strong>DAW-style generation</strong> - compose your app from separate "tracks" (models, services, handlers, templates)</li>
<li class="">🚫 <strong>Zero runtime dependencies</strong> - generated code has no framework lock-in</li>
</ul><p><strong>Tech Stack:</strong> Go • <a href="https://htmx.org/" target="_blank" rel="noopener noreferrer" class="">HTMX</a> • <a href="https://github.com/a-h/templ" target="_blank" rel="noopener noreferrer" class="">templ</a> • <a href="https://sqlc.dev/" target="_blank" rel="noopener noreferrer" class="">SQLC</a> • <a href="https://github.com/go-chi/chi" target="_blank" rel="noopener noreferrer" class="">Chi</a> • <a href="https://casbin.org/" target="_blank" rel="noopener noreferrer" class="">Casbin</a> • <a href="https://opentelemetry.io/" target="_blank" rel="noopener noreferrer" class="">OpenTelemetry</a><br>
<strong>Who it's for:</strong> Go developers who want rapid development without sacrificing control or code quality<br>
<strong>Current Status:</strong> Phase 0 (Foundation) - Core scaffolding ✅ | Everything else 🚧</p><p><a href="https://github.com/anomalousventures/tracks" target="_blank" rel="noopener noreferrer" class=""><strong>GitHub</strong></a> • <a href="https://go-tracks.io/" target="_blank" rel="noopener noreferrer" class=""><strong>Documentation</strong></a></p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="hi-im-aaron-and-i-have-a-framework-problem">Hi, I'm Aaron, and I Have a Framework Problem<a href="https://go-tracks.io/blog/building-tracks#hi-im-aaron-and-i-have-a-framework-problem" class="hash-link" aria-label="Direct link to Hi, I'm Aaron, and I Have a Framework Problem" title="Direct link to Hi, I'm Aaron, and I Have a Framework Problem" translate="no">​</a></h2>
<p>If you've spent any time in web development, you've probably had that moment. You know the one: where you're knee-deep in your fifth Express middleware setup of the month, copy-pasting the same auth logic you wrote last Tuesday, and you think, "There has to be a better way."</p>
<p>Well, I'm Aaron Ross (<a href="https://github.com/ashmortar" target="_blank" rel="noopener noreferrer" class="">@ashmortar</a> everywhere that matters), and I've been having that moment on repeat for about 10 years now. Currently, I'm a Senior Software Engineer at Great Expectations Labs, where I spend my days building data quality tools and (here's the fun part) experimenting with letting AI agents write most of my code.</p>
<p>That experience led me to start building <strong>Tracks</strong>: a Rails-inspired Go web framework designed for rapid development with modern tooling like <a href="https://htmx.org/" target="_blank" rel="noopener noreferrer" class="">HTMX</a>, AI-assisted code generation, and a developer-friendly terminal interface.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="the-vision-and-where-we-are">The Vision (And Where We Are)<a href="https://go-tracks.io/blog/building-tracks#the-vision-and-where-we-are" class="hash-link" aria-label="Direct link to The Vision (And Where We Are)" title="Direct link to The Vision (And Where We Are)" translate="no">​</a></h2>
<div class="theme-admonition theme-admonition-note admonition_tU5D alert alert--secondary"><div class="admonitionHeading_IUd7"><span class="admonitionIcon_NEsf"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>Building in Public</div><div class="admonitionContent_AcY9"><p>Before I dive into what Tracks will be, let me be transparent: <strong>Tracks is in early development</strong> (Phase 0: Foundation). What I'm sharing here is the roadmap and vision for where this Go web framework is headed. Some features are working today, others are in progress, and some are planned for future phases.</p><p>I'm building this in public because I believe the best frameworks come from real-world feedback, not ivory tower design. If this vision resonates with you, I'd love your input as we build it together.</p></div></div>
<p>Now, let me tell you why I think this approach to Go web development is worth pursuing.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="a-tour-through-the-framework-graveyard">A Tour Through the Framework Graveyard<a href="https://go-tracks.io/blog/building-tracks#a-tour-through-the-framework-graveyard" class="hash-link" aria-label="Direct link to A Tour Through the Framework Graveyard" title="Direct link to A Tour Through the Framework Graveyard" translate="no">​</a></h2>
<p>Over the past decade, I've built production applications in just about every major web framework you can name. Express? Check. Rails? Oh boy, yes. NestJS? Absolutely. Flask, FastAPI, Phoenix? Yep, yep, and yep. Each one taught me something valuable:</p>
<ul>
<li class=""><strong>Rails</strong> showed me the power of convention over configuration (and the pain of "magic" you don't understand)</li>
<li class=""><strong>Phoenix</strong> demonstrated what real-time features could look like when done right</li>
<li class=""><strong>NestJS</strong> proved that enterprise patterns could work in Node (even if the decorators sometimes felt like writing Java in TypeScript clothing)</li>
<li class=""><strong>Express</strong> taught me that sometimes minimal is good, but "batteries not included" gets old fast</li>
</ul>
<p>Through all of this wandering, I discovered something unexpected: <strong>Go became my favorite server language.</strong></p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="go-the-language-that-almost-has-it-all">Go: The Language That (Almost) Has It All<a href="https://go-tracks.io/blog/building-tracks#go-the-language-that-almost-has-it-all" class="hash-link" aria-label="Direct link to Go: The Language That (Almost) Has It All" title="Direct link to Go: The Language That (Almost) Has It All" translate="no">​</a></h2>
<p>Now, I know what you're thinking. "Go? The language with if err != nil memes? The one where generics took a decade to arrive?"</p>
<p>Hear me out.</p>
<p>Go is fast. Genuinely, measurably fast. It's stable in a way that makes returning to old codebases almost pleasant. You know that Go project you wrote 3 years ago? It still looks pretty much like the Go project you'd write today. Try saying that about your React class components from 2019 (RIP).</p>
<p>While I genuinely love TypeScript (its type system lets you do some absolutely bonkers things), Node applications tend to be resource-hungry beasts with dependency graphs that look like someone sneezed on a spider web. Meanwhile, Go compiles to a single, lightweight binary that's basically tailor-made for the Docker/Kubernetes world we all live in now.</p>
<p>Go's "simplicity" that some developers complain about? That's actually a feature. When every project looks similar, when the patterns are consistent, when there's usually one obvious way to do things, that's not limiting. It's <em>liberating</em>. You spend less time debating architectural astronomy and more time shipping features.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="but-heres-the-rub">But Here's the Rub...<a href="https://go-tracks.io/blog/building-tracks#but-heres-the-rub" class="hash-link" aria-label="Direct link to But Here's the Rub..." title="Direct link to But Here's the Rub..." translate="no">​</a></h2>
<p>Go has been missing two crucial things for rapid web development:</p>
<ol>
<li class="">
<p><strong>A JSX-like templating experience</strong> - Go's <code>html/template</code> package is... fine. But when you're used to the component model and type safety of React, going back to string-based templates feels like coding with oven mitts on.</p>
</li>
<li class="">
<p><strong>Strong opinions and code reuse patterns</strong> - Every Go web project starts the same way: write your router setup, write your middleware, write your auth logic, write your database migrations, write your validation helpers. You get the idea. It's Groundhog Day, but for HTTP handlers.</p>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="enter-the-game-changers">Enter the Game Changers<a href="https://go-tracks.io/blog/building-tracks#enter-the-game-changers" class="hash-link" aria-label="Direct link to Enter the Game Changers" title="Direct link to Enter the Game Changers" translate="no">​</a></h2>
<p>The first problem? That's been beautifully solved by <a href="https://github.com/a-h/templ" target="_blank" rel="noopener noreferrer" class="">templ</a>. If you haven't tried it yet, templ brings JSX-like syntax to Go with full type safety. You write your templates in a familiar, component-based style, and they compile to pure Go code. No runtime overhead, no string concatenation nightmares, just clean, type-safe HTML generation.</p>
<p>But the second problem (the endless boilerplate, the lack of conventions, the constant reinventing of wheels)? That's where Tracks comes in.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="what-tracks-will-be-the-complete-vision">What Tracks Will Be: The Complete Vision<a href="https://go-tracks.io/blog/building-tracks#what-tracks-will-be-the-complete-vision" class="hash-link" aria-label="Direct link to What Tracks Will Be: The Complete Vision" title="Direct link to What Tracks Will Be: The Complete Vision" translate="no">​</a></h2>
<p>Here's the vision for what you'll get when you scaffold a Tracks application: a complete, production-ready Go web application with all the infrastructure you'd spend weeks building yourself. The roadmap includes:</p>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="authentication--authorization">Authentication &amp; Authorization<a href="https://go-tracks.io/blog/building-tracks#authentication--authorization" class="hash-link" aria-label="Direct link to Authentication &amp; Authorization" title="Direct link to Authentication &amp; Authorization" translate="no">​</a></h3>
<ul>
<li class="">Passwordless OTP via email/SMS</li>
<li class="">OAuth2 integration (Google, GitHub, etc.)</li>
<li class="">Secure session management with multiple backends</li>
<li class="">Full RBAC with <a href="https://casbin.org/" target="_blank" rel="noopener noreferrer" class="">Casbin</a> for permissions</li>
<li class="">Audit logging for compliance</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="database-layer">Database Layer<a href="https://go-tracks.io/blog/building-tracks#database-layer" class="hash-link" aria-label="Direct link to Database Layer" title="Direct link to Database Layer" translate="no">​</a></h3>
<ul>
<li class="">Type-safe queries via <a href="https://sqlc.dev/" target="_blank" rel="noopener noreferrer" class="">SQLC</a> (no runtime overhead)</li>
<li class="">Migration management with up/down support</li>
<li class="">Repository pattern with clean interfaces</li>
<li class="">Support for <a href="https://github.com/tursodatabase/libsql-client-go" target="_blank" rel="noopener noreferrer" class="">go-libsql</a> (<a href="https://turso.tech/" target="_blank" rel="noopener noreferrer" class="">Turso</a>), SQLite3, or PostgreSQL</li>
<li class="">Connection pooling and query optimization</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="background-jobs">Background Jobs<a href="https://go-tracks.io/blog/building-tracks#background-jobs" class="hash-link" aria-label="Direct link to Background Jobs" title="Direct link to Background Jobs" translate="no">​</a></h3>
<ul>
<li class="">Queue abstraction (memory, SQS, Google Pub/Sub)</li>
<li class="">Worker management with graceful shutdown</li>
<li class="">Retry logic and dead letter queues</li>
<li class="">Job status tracking and monitoring</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="storage">Storage<a href="https://go-tracks.io/blog/building-tracks#storage" class="hash-link" aria-label="Direct link to Storage" title="Direct link to Storage" translate="no">​</a></h3>
<ul>
<li class="">Pluggable storage backends (local, S3, Cloudflare R2)</li>
<li class="">File upload handling with validation</li>
<li class="">Signed URLs for secure access</li>
<li class="">Image processing hooks</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="observability">Observability<a href="https://go-tracks.io/blog/building-tracks#observability" class="hash-link" aria-label="Direct link to Observability" title="Direct link to Observability" translate="no">​</a></h3>
<ul>
<li class=""><a href="https://opentelemetry.io/" target="_blank" rel="noopener noreferrer" class="">OpenTelemetry</a> instrumentation out of the box</li>
<li class="">Structured logging with <a href="https://github.com/rs/zerolog" target="_blank" rel="noopener noreferrer" class="">zerolog</a></li>
<li class="">Distributed tracing</li>
<li class="">Metrics and health check endpoints</li>
<li class="">Request correlation IDs</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="security">Security<a href="https://go-tracks.io/blog/building-tracks#security" class="hash-link" aria-label="Direct link to Security" title="Direct link to Security" translate="no">​</a></h3>
<ul>
<li class="">Content Security Policy with nonces</li>
<li class="">CSRF protection</li>
<li class="">Rate limiting</li>
<li class="">SQL injection prevention (thanks to <a href="https://sqlc.dev/" target="_blank" rel="noopener noreferrer" class="">SQLC</a>)</li>
<li class="">XSS protection via template escaping</li>
<li class="">Secure headers by default</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="modern-web-stack">Modern Web Stack<a href="https://go-tracks.io/blog/building-tracks#modern-web-stack" class="hash-link" aria-label="Direct link to Modern Web Stack" title="Direct link to Modern Web Stack" translate="no">​</a></h3>
<ul>
<li class=""><a href="https://htmx.org/" target="_blank" rel="noopener noreferrer" class="">HTMX</a> for dynamic UIs without JavaScript complexity</li>
<li class=""><a href="https://alpinejs.dev/" target="_blank" rel="noopener noreferrer" class="">Alpine.js</a> for lightweight interactivity</li>
<li class=""><a href="https://github.com/a-h/templ" target="_blank" rel="noopener noreferrer" class="">templ</a> for type-safe, compiled templates</li>
<li class="">Live reload during development with <a href="https://github.com/cosmtrek/air" target="_blank" rel="noopener noreferrer" class="">Air</a></li>
<li class="">Progressive enhancement philosophy</li>
</ul>
<p>This isn't a minimal framework. This is batteries-included web development for Go.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="the-unique-bits-what-makes-tracks-different">The Unique Bits: What Makes Tracks Different<a href="https://go-tracks.io/blog/building-tracks#the-unique-bits-what-makes-tracks-different" class="hash-link" aria-label="Direct link to The Unique Bits: What Makes Tracks Different" title="Direct link to The Unique Bits: What Makes Tracks Different" translate="no">​</a></h2>
<p>But here's where it gets interesting. Tracks isn't just another code generator. It's rethinking how we interact with frameworks entirely.</p>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="1-the-tui-your-command-center">1. The TUI: Your Command Center<a href="https://go-tracks.io/blog/building-tracks#1-the-tui-your-command-center" class="hash-link" aria-label="Direct link to 1. The TUI: Your Command Center" title="Direct link to 1. The TUI: Your Command Center" translate="no">​</a></h3>
<p>When you type <code>tracks</code> with no arguments, you don't get a help menu. You get a full-featured Terminal User Interface (TUI) that becomes your development command center.</p>
<p>Imagine this: you're debugging a production issue. Instead of tailing logs in one terminal, checking database queries in another, and monitoring job queues in a third, you have a single, unified dashboard showing you everything in real-time. You can filter logs, inspect your database schema, watch job queue progress bars, and see performance metrics, all with live updates and interactive controls.</p>
<p>The TUI isn't just pretty ASCII art (though it is that). It's a practical tool for:</p>
<ul>
<li class=""><strong>Real-time log streaming</strong> with filtering and search</li>
<li class=""><strong>Interactive code generation</strong> with live previews</li>
<li class=""><strong>Database inspection</strong> showing schema, indexes, and migration status</li>
<li class=""><strong>Job queue monitoring</strong> with progress bars and failure tracking</li>
<li class=""><strong>Performance profiling</strong> with visual graphs and bottleneck detection</li>
</ul>
<p>Think of it like Ableton Live's interface for music production. Everything you need is visible and accessible. You're not juggling windows or memorizing commands. You're conducting your application.</p>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="2-the-mcp-server-ai-as-your-pair-programmer">2. The MCP Server: AI as Your Pair Programmer<a href="https://go-tracks.io/blog/building-tracks#2-the-mcp-server-ai-as-your-pair-programmer" class="hash-link" aria-label="Direct link to 2. The MCP Server: AI as Your Pair Programmer" title="Direct link to 2. The MCP Server: AI as Your Pair Programmer" translate="no">​</a></h3>
<p>This is where my work at Great Expectations Labs comes full circle. Tracks includes a <a href="https://modelcontextprotocol.io/" target="_blank" rel="noopener noreferrer" class="">Model Context Protocol</a> (MCP) server that exposes the entire framework to AI assistants like Claude.</p>
<p>What does this mean practically? Your AI assistant can:</p>
<ul>
<li class=""><strong>Generate complete features</strong> from natural language descriptions</li>
<li class=""><strong>Analyze your codebase</strong> to understand dependencies and structure</li>
<li class=""><strong>Suggest optimizations</strong> based on actual runtime traces</li>
<li class=""><strong>Debug issues</strong> by correlating logs, traces, and code</li>
<li class=""><strong>Run tests</strong> and interpret results</li>
<li class=""><strong>Execute migrations</strong> with safety checks</li>
</ul>
<p>The MCP server runs as a Docker container or standalone binary, integrating seamlessly with <a href="https://docs.claude.com/en/docs/claude-code" target="_blank" rel="noopener noreferrer" class="">Claude Code</a> or any MCP-compatible tool. It's not just autocomplete on steroids; it's having a framework expert sitting next to you who knows your entire project.</p>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="3-interactive-code-generation-the-daw-metaphor">3. Interactive Code Generation: The DAW Metaphor<a href="https://go-tracks.io/blog/building-tracks#3-interactive-code-generation-the-daw-metaphor" class="hash-link" aria-label="Direct link to 3. Interactive Code Generation: The DAW Metaphor" title="Direct link to 3. Interactive Code Generation: The DAW Metaphor" translate="no">​</a></h3>
<p>Remember I mentioned I'm a bassist who codes? Here's where the music production metaphor really comes into play.</p>
<p>In a DAW (Digital Audio Workstation), you don't just click "create song" and hope for the best. You lay down tracks (bass, drums, synth, vocals) that work together in harmony. Each track has its own role, its own controls, its own effects chain. You can solo a track to work on it in isolation, adjust levels in the mix, swap out virtual instruments, and comp together the best takes.</p>
<p>That's exactly how Tracks approaches code generation.</p>
<p>When you generate a resource in the TUI, you get an interactive form where you:</p>
<ul>
<li class=""><strong>Select fields</strong> with types, validation, and constraints</li>
<li class=""><strong>Configure relationships</strong> between models</li>
<li class=""><strong>Choose features</strong> like API endpoints, web views, full-text search</li>
<li class=""><strong>Preview the code</strong> before it's written</li>
<li class=""><strong>Customize validation rules</strong> for each field</li>
</ul>
<p>Tracks then generates multiple "tracks" for your feature:</p>
<ul>
<li class=""><strong>Migration track</strong>: Database schema changes</li>
<li class=""><strong>Repository track</strong>: Type-safe database queries via <a href="https://sqlc.dev/" target="_blank" rel="noopener noreferrer" class="">SQLC</a></li>
<li class=""><strong>Service track</strong>: Business logic with dependency injection</li>
<li class=""><strong>Handler track</strong>: HTTP endpoints with validation</li>
<li class=""><strong>Template track</strong>: Type-safe views with <a href="https://github.com/a-h/templ" target="_blank" rel="noopener noreferrer" class="">templ</a></li>
<li class=""><strong>Test track</strong>: Comprehensive test suites with mocks</li>
</ul>
<p>Each track is cleanly separated, type-safe, and works in harmony with the others. And just like in a DAW, you can solo a track (work on just the service layer), adjust the mix (refactor the handler), or swap out an instrument entirely (replace the queue provider).</p>
<p>The framework keeps everything in sync and provides the mixing board, but you're still the producer. You control the final output.</p>
<h3 class="anchor anchorTargetStickyNavbar_U5Iq" id="4-zero-magic-full-control">4. Zero Magic, Full Control<a href="https://go-tracks.io/blog/building-tracks#4-zero-magic-full-control" class="hash-link" aria-label="Direct link to 4. Zero Magic, Full Control" title="Direct link to 4. Zero Magic, Full Control" translate="no">​</a></h3>
<div class="theme-admonition theme-admonition-tip admonition_tU5D alert alert--success"><div class="admonitionHeading_IUd7"><span class="admonitionIcon_NEsf"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>The Most Important Feature</div><div class="admonitionContent_AcY9"><p>Here's the crucial difference between Tracks and most other frameworks: <strong>you own the code</strong>.</p><p>When Tracks generates code, it's not hiding behind magical base classes or runtime reflection. It generates idiomatic Go code that looks like an experienced Go developer sat down and wrote it by hand. It's vendored into your project. You can read it, modify it, or completely replace it.</p><p>Don't like Chi for routing? Swap it out. Need GraphQL instead of REST? Add it in. Want a different auth strategy? The code is right there, change it. The generated code has no dependencies on the Tracks framework at runtime. Zero. Nada. None.</p></div></div>
<p>This is fundamentally different from Rails or Phoenix where "the magic" is always there, lurking in the framework. In Tracks, there is no magic. Just clean, readable Go code that happens to be written by a very opinionated robot.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="the-stack-opinionated-but-not-locked">The Stack: Opinionated but Not Locked<a href="https://go-tracks.io/blog/building-tracks#the-stack-opinionated-but-not-locked" class="hash-link" aria-label="Direct link to The Stack: Opinionated but Not Locked" title="Direct link to The Stack: Opinionated but Not Locked" translate="no">​</a></h2>
<p>Tracks is betting on a carefully chosen technology stack that represents the best of modern Go web development:</p>
<ul>
<li class=""><strong><a href="https://htmx.org/" target="_blank" rel="noopener noreferrer" class="">HTMX</a></strong> for dynamic UIs without JavaScript complexity</li>
<li class=""><strong><a href="https://github.com/a-h/templ" target="_blank" rel="noopener noreferrer" class="">templ</a></strong> for type-safe, component-based Go templates</li>
<li class=""><strong><a href="https://sqlc.dev/" target="_blank" rel="noopener noreferrer" class="">SQLC</a></strong> for compile-time verified SQL and type-safe database queries</li>
<li class=""><strong><a href="https://github.com/go-chi/chi" target="_blank" rel="noopener noreferrer" class="">Chi</a></strong> for lightweight, idiomatic Go routing (because sometimes boring is good)</li>
<li class=""><strong><a href="https://casbin.org/" target="_blank" rel="noopener noreferrer" class="">Casbin</a></strong> for flexible RBAC and authorization (when you inevitably need it)</li>
<li class=""><strong><a href="https://github.com/charmbracelet/bubbletea" target="_blank" rel="noopener noreferrer" class="">Bubble Tea</a></strong> for the terminal UI (because CLI tools should be delightful)</li>
<li class=""><strong><a href="https://opentelemetry.io/" target="_blank" rel="noopener noreferrer" class="">OpenTelemetry</a></strong> for production-grade observability (because you can't fix what you can't see)</li>
</ul>
<p>But remember: these are compile-time dependencies for code generation. At runtime, your Go application has no dependency on Tracks at all. You're just running a standard Go binary you own and understand. No framework lock-in, no runtime magic, just clean Go code.</p>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="why-build-another-go-web-framework">Why Build Another Go Web Framework?<a href="https://go-tracks.io/blog/building-tracks#why-build-another-go-web-framework" class="hash-link" aria-label="Direct link to Why Build Another Go Web Framework?" title="Direct link to Why Build Another Go Web Framework?" translate="no">​</a></h2>
<div class="theme-admonition theme-admonition-caution admonition_tU5D alert alert--warning"><div class="admonitionHeading_IUd7"><span class="admonitionIcon_NEsf"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>Why Not Just Use [Echo/Gin/Fiber]?</div><div class="admonitionContent_AcY9"><p>You might wonder why I'm building this now, when there are already established Go frameworks like Echo, Gin, and Fiber. Three reasons:</p><ol>
<li class="">
<p><strong>The Go ecosystem has matured</strong> - Tools like <a href="https://github.com/a-h/templ" target="_blank" rel="noopener noreferrer" class="">templ</a>, <a href="https://sqlc.dev/" target="_blank" rel="noopener noreferrer" class="">SQLC</a>, and <a href="https://github.com/charmbracelet/bubbletea" target="_blank" rel="noopener noreferrer" class="">Bubble Tea</a> have finally given us the primitives we need to build something truly great. The golang web development landscape in 2025 is radically different from even two years ago.</p>
</li>
<li class="">
<p><strong><a href="https://htmx.org/" target="_blank" rel="noopener noreferrer" class="">HTMX</a> is having a moment</strong> - The pendulum is swinging back toward server-rendered, hypermedia-driven applications. Turns out, sending HTML over the wire was a good idea all along. Go's performance characteristics make it perfect for this approach.</p>
</li>
<li class="">
<p><strong>AI-assisted development is real</strong> - At Great Expectations Labs, I'm seeing firsthand how AI can accelerate development. Code generation and AI assistance aren't the future anymore; they're the present. Tracks is designed from the ground up to work seamlessly with AI tooling through the <a href="https://modelcontextprotocol.io/" target="_blank" rel="noopener noreferrer" class="">Model Context Protocol</a>.</p>
</li>
</ol></div></div>
<h2 class="anchor anchorTargetStickyNavbar_U5Iq" id="come-along-for-the-ride">Come Along for the Ride<a href="https://go-tracks.io/blog/building-tracks#come-along-for-the-ride" class="hash-link" aria-label="Direct link to Come Along for the Ride" title="Direct link to Come Along for the Ride" translate="no">​</a></h2>
<p>Tracks is in early development (Phase 0: Foundation, to be specific), and I'm building it in public. What I've shared here is the complete vision and roadmap. Some core pieces are working now, others are in active development, and some are planned for future phases.</p>
<div class="theme-admonition theme-admonition-info admonition_tU5D alert alert--info"><div class="admonitionHeading_IUd7"><span class="admonitionIcon_NEsf"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Current Development Status</div><div class="admonitionContent_AcY9"><ul>
<li class="">✅ <strong>Core CLI structure and project scaffolding</strong> - Working</li>
<li class="">🚧 <strong>Database layer with SQLC integration</strong> - In progress</li>
<li class="">🚧 <strong>Basic code generation patterns</strong> - In progress</li>
<li class="">🚧 <strong>TUI implementation</strong> - Planned</li>
<li class="">🚧 <strong>MCP server development</strong> - Planned</li>
<li class="">📋 <strong>Full feature set</strong> - Planned and documented</li>
</ul></div></div>
<p>If you've ever wanted to see how a modern Go web framework comes together from the very beginning, now's your chance. If you've been looking for a batteries-included Go framework with Rails-like conventions, or if you're interested in how AI can enhance developer workflows, I'd love your feedback as we build this together.</p>
<p>The goal isn't to build the perfect framework (that doesn't exist). The goal is to build something that lets us <strong>go fast</strong> (pun absolutely intended) while writing the kind of clean, maintainable Go code we can be proud of.</p>
<p>Because at the end of the day, the best framework is the one that gets out of your way and lets you build cool stuff. And that's exactly what Tracks aims to be.</p>
<hr>
<p><em>Want to follow along or contribute? Check out <a href="https://github.com/anomalousventures/tracks" target="_blank" rel="noopener noreferrer" class="">Tracks on GitHub</a> or dive into the <a href="https://go-tracks.io/" target="_blank" rel="noopener noreferrer" class="">documentation</a>. Got opinions? I'd love to hear them: find me on GitHub <a href="https://github.com/ashmortar" target="_blank" rel="noopener noreferrer" class="">@ashmortar</a> or drop into the discussions.</em></p>
<p><em>Tracks is part of <a href="https://github.com/anomalousventures" target="_blank" rel="noopener noreferrer" class="">Anomalous Ventures</a>, where we're building tools to make developers more productive. Follow the org to see what else we're building!</em></p>
<p><em>P.S. - Yes, I named it Tracks for the double meaning: Rails-inspired convention-over-configuration (the railroad kind) meets music production workflow (the DAW kind). As a bassist who codes, I couldn't resist. Yes, there will be both train puns and mix metaphors. No, I'm not sorry.</em> 🚂🎵</p>]]></content>
        <author>
            <name>Aaron Ross</name>
            <uri>https://github.com/ashmortar</uri>
        </author>
        <category label="announcement" term="announcement"/>
        <category label="go" term="go"/>
        <category label="framework" term="framework"/>
        <category label="ai" term="ai"/>
        <category label="htmx" term="htmx"/>
    </entry>
</feed>