-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
103 lines (87 loc) · 38.9 KB
/
index.html
File metadata and controls
103 lines (87 loc) · 38.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<!DOCTYPE html><html class="dark" lang="en"><head><meta charset="utf-8"><link href="/favicon.ico" rel="icon"><link href="/favicon.svg" rel="icon" type="image/svg+xml"><meta content="width=device-width,initial-scale=1" name="viewport"><meta content="#000000" name="theme-color"><link href="/rss.xml" rel="alternate" type="application/rss+xml" title="Fezcodex RSS Feed"><meta content="codex by fezcode..." name="description"><meta content="website" property="og:type"><meta content="https://fezcode.com/" property="og:url"><meta content="Fezcodex - Personal Blog and Projects" property="og:title"><meta content="Discover logs, posts, projects, and stories from Fezcode." property="og:description"><meta content="/images/asset/ogtitle.png" property="og:image"><meta content="summary_large_image" name="twitter:card"><meta content="https://fezcode.com/" name="twitter:url"><meta content="Fezcodex - Personal Blog and Projects" name="twitter:title"><meta content="Discover logs, posts, projects, and stories from Fezcode." name="twitter:description"><meta content="/images/asset/ogtitle.png" name="twitter:image"><link href="/logo192.png" rel="apple-touch-icon"><link href="/manifest.json" rel="manifest"><link href="https://fonts.googleapis.com" rel="preconnect"><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin=""><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet"><link href="https://fonts.googleapis.com/css2?family=Arvo&family=Inter&family=Playfair+Display:wght@400;500;600;700;800;900&display=swap" rel="stylesheet"><link href="https://fonts.googleapis.com/css2?family=Syne:wght@700;800&family=Outfit:wght@300;400;500;600&display=swap" rel="stylesheet"><link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap" rel="stylesheet"><link href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Instrument+Sans:ital,wght@0,400..700;1,400..700&family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap" rel="stylesheet"><link href="https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400..800;1,400..800&display=swap" rel="stylesheet"><title>gobake | Fezcodex</title><title>gobake | Fezcodex</title><title>fezcodex</title><script defer src="/static/js/main.87f8d95f.js"></script><link href="/static/css/main.c666da2c.css" rel="stylesheet"><link href="https://fonts.googleapis.com" rel="preconnect"><link href="https://fonts.gstatic.com" rel="preconnect"><link href="https://github.com" rel="preconnect"><link href="https://release-assets.githubusercontent.com" rel="preconnect"><meta content="A Go-native build orchestrator, type-safe and dependency-free." name="description"><meta content="Go, Build Tool" name="keywords"><meta content="gobake | Fezcodex" property="og:title"><meta content="A Go-native build orchestrator, type-safe and dependency-free." property="og:description"><meta content="https://fezcode.com/images/projects/gobake/gobake-banner.png" property="og:image"><meta content="https://fezcode.com/projects/gobake/" property="og:url"><meta content="website" property="og:type"><meta content="Fezcodex" property="og:site_name"><meta content="https://fezcode.com/images/projects/gobake/gobake-banner.png" property="og:image:secure_url"><meta content="summary_large_image" name="twitter:card"><meta content="gobake | Fezcodex" name="twitter:title"><meta content="A Go-native build orchestrator, type-safe and dependency-free." name="twitter:description"><meta content="https://fezcode.com/images/projects/gobake/gobake-banner.png" name="twitter:image"><meta content="https://fezcode.com/projects/gobake/" name="twitter:url"><link href="https://fezcode.com/projects/gobake/" rel="canonical"><link href="https://fonts.googleapis.com" rel="preconnect"><link href="https://fonts.gstatic.com" rel="preconnect"><link href="https://github.com" rel="preconnect"><link href="https://release-assets.githubusercontent.com" rel="preconnect"><meta content="A Go-native build orchestrator, type-safe and dependency-free." name="description"><meta content="Go, Build Tool" name="keywords"><meta content="gobake | Fezcodex" property="og:title"><meta content="A Go-native build orchestrator, type-safe and dependency-free." property="og:description"><meta content="https://fezcode.com/images/projects/gobake/gobake-banner.png" property="og:image"><meta content="https://fezcode.com/projects/gobake/" property="og:url"><meta content="website" property="og:type"><meta content="Fezcodex" property="og:site_name"><meta content="https://fezcode.com/images/projects/gobake/gobake-banner.png" property="og:image:secure_url"><meta content="summary_large_image" name="twitter:card"><meta content="gobake | Fezcodex" name="twitter:title"><meta content="A Go-native build orchestrator, type-safe and dependency-free." name="twitter:description"><meta content="https://fezcode.com/images/projects/gobake/gobake-banner.png" name="twitter:image"><meta content="https://fezcode.com/projects/gobake/" name="twitter:url"><link href="https://fezcode.com/projects/gobake/" rel="canonical"></head><body class="bg-slate-950" style="cursor:default;user-select:auto"><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"><div class="bg-emerald-600 text-white relative z-[100] border-b-2 border-black selection:bg-white selection:text-black" style="height:auto;opacity:1"><div class="max-w-7xl mx-auto px-4 py-3 flex items-center justify-between gap-4"><div class="flex items-center gap-3 flex-1"><span class="shrink-0"><svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="20" width="20"><path d="M108,84a16,16,0,1,1,16,16A16,16,0,0,1,108,84Zm128,44A108,108,0,1,1,128,20,108.12,108.12,0,0,1,236,128Zm-24,0a84,84,0,1,0-84,84A84.09,84.09,0,0,0,212,128Zm-72,36.68V132a20,20,0,0,0-20-20,12,12,0,0,0-4,23.32V168a20,20,0,0,0,20,20,12,12,0,0,0,4-23.32Z"></path></svg></span><p class="font-mono text-xs md:text-sm font-black uppercase tracking-widest leading-tight">CLIMB THE TALL BUILDING 0 IS ONLINE: BUILD YOUR DECK AND CLIMB. ACCESS AT /CLIMB-THE-TALL-BUILDING-0.</p><a class="shrink-0 inline-flex items-center gap-1 bg-black/20 hover:bg-black/40 px-3 py-1 rounded-sm border border-white/20 transition-all font-bold text-[10px] uppercase" href="https://fezcode.com/climb-the-tall-building-0/">Play Climb the Tall Building 0<svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="12" width="12"><path d="M224.49,136.49l-72,72a12,12,0,0,1-17-17L187,140H40a12,12,0,0,1,0-24H187L135.51,64.48a12,12,0,0,1,17-17l72,72A12,12,0,0,1,224.49,136.49Z"></path></svg></a></div><button class="p-1 hover:bg-black/20 rounded-sm transition-colors shrink-0" aria-label="Dismiss"><svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="20" width="20"><path d="M208.49,191.51a12,12,0,0,1-17,17L128,145,64.49,208.49a12,12,0,0,1-17-17L111,128,47.51,64.49a12,12,0,0,1,17-17L128,111l63.51-63.52a12,12,0,0,1,17,17L145,128Z"></path></svg></button></div><div class="h-0.5 w-full bg-black/10"></div></div><div class="bg-[#050505] min-h-screen font-sans flex"><div class="flex-1 flex flex-col transition-all duration-300 md:ml-0"><main class="flex-grow"><div class="min-h-screen bg-[#1c1917] text-[#fafaf9] font-outfit selection:bg-[#eb544f]/30 selection:text-[#eb544f] dark:selection:text-white overflow-x-hidden scroll-smooth"><header class="fixed top-0 left-0 right-0 w-full bg-[#1c1917] border-b border-stone-700 z-50 h-20"><div class="container mx-auto h-full px-4 lg:px-8"><div class="flex items-center justify-between h-full"><a class="flex items-center gap-2 hover:opacity-80 transition-opacity" href="/projects" data-discover="true"><span class="text-3xl sm:text-4xl font-extrabold text-stone-50 tracking-tighter uppercase font-outfit">gobake</span></a><nav class="hidden lg:flex items-stretch gap-1 h-20 font-bold text-sm"><a class="flex items-center px-3 xl:px-5 h-full text-stone-300 hover:text-[#eb544f] hover:bg-stone-800 transition-colors uppercase tracking-widest" href="#installation">Download</a><a class="flex items-center px-3 xl:px-5 h-full text-stone-300 hover:text-[#eb544f] hover:bg-stone-800 transition-colors uppercase tracking-widest" href="#docs">Documentation</a><a class="flex items-center px-3 xl:px-5 h-full text-stone-300 hover:bg-stone-800 transition-colors" href="https://github.com/fezcode/gobake" rel="noopener noreferrer" target="_blank"><svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="24" width="24"><path d="M212.62,75.17A63.7,63.7,0,0,0,206.39,26,12,12,0,0,0,196,20a63.71,63.71,0,0,0-50,24H126A63.71,63.71,0,0,0,76,20a12,12,0,0,0-10.39,6,63.7,63.7,0,0,0-6.23,49.17A61.5,61.5,0,0,0,52,104v8a60.1,60.1,0,0,0,45.76,58.28A43.66,43.66,0,0,0,92,192v4H76a20,20,0,0,1-20-20,44.05,44.05,0,0,0-44-44,12,12,0,0,0,0,24,20,20,0,0,1,20,20,44.05,44.05,0,0,0,44,44H92v12a12,12,0,0,0,24,0V192a20,20,0,0,1,40,0v40a12,12,0,0,0,24,0V192a43.66,43.66,0,0,0-5.76-21.72A60.1,60.1,0,0,0,220,112v-8A61.5,61.5,0,0,0,212.62,75.17ZM196,112a36,36,0,0,1-36,36H112a36,36,0,0,1-36-36v-8a37.87,37.87,0,0,1,6.13-20.12,11.65,11.65,0,0,0,1.58-11.49,39.9,39.9,0,0,1-.4-27.72,39.87,39.87,0,0,1,26.41,17.8A12,12,0,0,0,119.82,68h32.35a12,12,0,0,0,10.11-5.53,39.84,39.84,0,0,1,26.41-17.8,39.9,39.9,0,0,1-.4,27.72,12,12,0,0,0,1.61,11.53A37.85,37.85,0,0,1,196,104Z"></path></svg></a></nav></div></div></header><div class="pt-20" id="page"><div class="bg-[#292524] relative overflow-hidden isolate"><section class="relative overflow-hidden h-[496px] md:h-[620px] flex flex-col items-center justify-center text-center"><div class="flex flex-col items-center z-10"><div class="h-[7.5rem] md:h-[9.375rem] flex items-center justify-center mb-10 px-4"><p class="text-lg md:text-2xl font-extrabold text-stone-100 tracking-[0.2em] uppercase"><span class="inline-block px-4 py-1 bg-[#292524]">A Go-native build orchestrator, type-safe and dependency-free.</span></p></div><div class="flex flex-col items-center"><p class="text-base md:text-lg text-[#E2D1AA] tracking-[0.2em] drop-shadow-sm whitespace-nowrap mb-2 md:mb-3 font-semibold uppercase">From Fezcode</p><div class="relative -mt-4 md:-mt-6 mb-4 md:mb-6 px-4"><div class="text-[96px] md:text-[120px] leading-none font-extrabold text-white tracking-tighter drop-shadow-2xl uppercase font-outfit">gobake</div></div><div class="text-center mb-8"><p class="text-base md:text-xl tracking-wide text-[#E2D1AA] whitespace-nowrap uppercase"><span class="font-light text-white/70 tracking-normal">Latest Version:</span> <span class="font-extrabold text-white relative inline-block">0.3.0<img alt="" class="absolute -bottom-[4px] md:-bottom-[6px] left-0 w-full h-auto opacity-50" src="/projects/gobake/version-line.svg"></span></p></div><a class="mt-4 md:mt-6 inline-block bg-white text-[#e62923] text-sm md:text-base px-24 py-4 rounded-full font-extrabold hover:bg-stone-100 hover:scale-105 transition-all uppercase tracking-widest shadow-md" href="#installation">Download</a></div></div><div class="absolute inset-0 pointer-events-none opacity-20"><div class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full max-w-[1470px] h-[620px] bg-[radial-gradient(circle,rgba(235,84,79,0.3)_0%,transparent_70%)]"></div></div></section><section class="pb-24 relative transition-all duration-700 ease-out opacity-100 px-4 lg:px-8" id="try-ruby-section"><div class="container mx-auto"><div class="grid grid-cols-1 lg:grid-cols-3 gap-8 lg:gap-12 2xl:gap-16 max-w-7xl mx-auto"><div class="bg-[#1c1917] rounded-2xl overflow-hidden flex flex-col shadow-sm border border-[#CEB372] hover:border-[#eb544f] transition-colors box-border"><div class="px-8 py-8 font-mono text-sm overflow-x-auto h-[240px] bg-[#1c1917]"><code class="text-[#c9d1d9] block leading-relaxed whitespace-pre-wrap"><span class="text-[#8b949e] italic"># Installation</span><br><span class="text-[#ff7b72] font-black">go</span> install github.com/fezcode/gobake/cmd/gobake@latest</code></div><div class="px-6 py-5 flex justify-center bg-[#1c1917]"><button class="bg-[#CEB372] text-stone-900 hover:bg-[#eb544f] hover:text-white px-8 py-2.5 rounded-full font-black tracking-widest text-lg transition-all shadow-sm transform hover:scale-105 uppercase leading-none flex items-center gap-2"><svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="1em" width="1em"><path d="M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z"></path></svg>INSTALL!</button></div></div><div class="bg-[#1c1917] rounded-2xl overflow-hidden flex flex-col shadow-sm border border-[#CEB372] hover:border-[#eb544f] transition-colors box-border"><div class="px-8 py-8 font-mono text-sm overflow-x-auto h-[240px] bg-[#1c1917]"><code class="text-[#c9d1d9] block leading-relaxed whitespace-pre-wrap"><span class="text-[#ff7b72] font-black">gobake</span>.<span class="text-[#d2a8ff]">Task</span>(<span class="text-[#a5d6ff]">"build"</span>, <span class="text-[#c084fc]">func</span>(ctx) {<br> <span class="text-[#c084fc]">return</span> ctx.<span class="text-[#fbbf24]">Bake</span>(<span class="text-[#a5d6ff]">"bin/app"</span>)<br>})</code></div><div class="px-6 py-5 flex justify-center bg-[#1c1917]"><a class="bg-[#CEB372] text-stone-900 hover:bg-[#eb544f] hover:text-white px-8 py-2.5 rounded-full font-black tracking-widest text-lg transition-all shadow-sm transform hover:scale-105 uppercase leading-none" href="#docs" rel="" target="_self">GUIDE!</a></div></div><div class="bg-[#1c1917] rounded-2xl overflow-hidden flex flex-col shadow-sm border border-[#CEB372] hover:border-[#eb544f] transition-colors box-border"><div class="px-8 py-8 font-mono text-sm overflow-x-auto h-[240px] bg-[#1c1917]"><code class="text-[#c9d1d9] block leading-relaxed whitespace-pre-wrap"><span class="text-[#eb544f] font-black">$</span> gobake build</code></div><div class="px-6 py-5 flex justify-center bg-[#1c1917]"><a class="bg-[#CEB372] text-stone-900 hover:bg-[#eb544f] hover:text-white px-8 py-2.5 rounded-full font-black tracking-widest text-lg transition-all shadow-sm transform hover:scale-105 uppercase leading-none" href="https://github.com/fezcode/gobake" rel="noopener noreferrer" target="_blank">SOURCE!</a></div></div></div></div></section><div class="absolute -bottom-1 left-0 right-0 h-6 md:h-8 text-[#1c1917]"><svg viewBox="0 0 400 20" xmlns="http://www.w3.org/2000/svg" class="w-full h-full" preserveAspectRatio="none"><path d="M0,10 C20,0 40,20 60,10 C80,0 100,20 120,10 C140,0 160,20 180,10 C200,0 220,20 240,10 C260,0 280,20 300,10 C320,0 340,20 360,10 C380,0 400,20 400,10 L400,20 L0,20 Z" fill="currentColor"></path></svg></div></div><section class="bg-[#1c1917] py-16 md:py-20 lg:pt-24 lg:pb-24 border-b border-stone-800" id="features"><div class="container mx-auto px-6 lg:px-8 max-w-7xl"><div class="text-center mb-8 sm:mb-12"><h2 class="text-4xl md:text-5xl font-extrabold text-white mb-4 sm:mb-6 uppercase tracking-tighter font-outfit">Why GOBAKE?</h2><p class="text-sm md:text-lg text-stone-300 uppercase tracking-[0.2em] font-black italic">A Programmer's Best Friend</p></div><div class="grid grid-cols-1 lg:grid-cols-2 gap-x-24 gap-y-24 max-w-6xl mx-auto"><div class="why-ruby-card relative self-start group"><div class="relative mb-8"><h3 class="text-5xl sm:text-6xl md:text-7xl font-light text-[#CEB372] tracking-tighter uppercase leading-none font-outfit">Go-Native</h3><img alt="" class="absolute left-0 -bottom-[22px] w-full max-w-[430px] h-auto opacity-30 group-hover:opacity-100 transition-opacity" src="/projects/gobake/line.svg"></div><p class="text-xl sm:text-2xl font-bold text-white mb-4 leading-relaxed uppercase tracking-tight">Native Execution. Fast and elegant.</p><div class="text-sm sm:text-base text-stone-300 mb-6 leading-relaxed font-medium">Write your build scripts in Go. No new syntax to learn. Benefit from Go's type safety and performance.</div><div class="flex flex-col-reverse md:flex-row gap-6 items-start mt-10"><div class="flex-1 relative text-sm sm:text-base font-medium text-stone-300 leading-relaxed border border-[#CEB372] p-6 md:p-8 rounded-3xl bg-stone-800/20 shadow-sm"><span class="absolute -top-10 -left-4 text-[140px] text-[#CEB372] opacity-20 font-serif leading-none select-none pointer-events-none">“</span><p class="relative z-10 italic">Go-Native changed how we build. It's the most natural build tool I've ever experienced.</p></div><div class="flex-shrink-0 flex flex-col items-center text-center w-32"><div class="w-24 h-24 bg-stone-900 rounded-full border-4 border-[#CEB372] mb-3 flex items-center justify-center overflow-hidden shadow-xl"><svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="40" width="40" class="text-[#CEB372]"><path d="M104,104h48v48H104Zm136,48a8,8,0,0,1-8,8H216v40a16,16,0,0,1-16,16H160v16a8,8,0,0,1-16,0V216H112v16a8,8,0,0,1-16,0V216H56a16,16,0,0,1-16-16V160H24a8,8,0,0,1,0-16H40V112H24a8,8,0,0,1,0-16H40V56A16,16,0,0,1,56,40H96V24a8,8,0,0,1,16,0V40h32V24a8,8,0,0,1,16,0V40h40a16,16,0,0,1,16,16V96h16a8,8,0,0,1,0,16H216v32h16A8,8,0,0,1,240,152ZM168,96a8,8,0,0,0-8-8H96a8,8,0,0,0-8,8v64a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8Z"></path></svg></div><p class="text-[11px] font-black uppercase text-white leading-tight">Fezcode</p><p class="text-[9px] font-bold text-[#CEB372] uppercase tracking-wider">CREATOR</p></div></div></div><div class="why-ruby-card relative self-start group"><div class="relative mb-8"><h3 class="text-5xl sm:text-6xl md:text-7xl font-light text-[#CEB372] tracking-tighter uppercase leading-none font-outfit">Zero Dependencies</h3><img alt="" class="absolute left-0 -bottom-[22px] w-full max-w-[430px] h-auto opacity-30 group-hover:opacity-100 transition-opacity" src="/projects/gobake/line.svg"></div><p class="text-xl sm:text-2xl font-bold text-white mb-4 leading-relaxed uppercase tracking-tight">Pure Go. No external mess.</p><div class="text-sm sm:text-base text-stone-300 mb-6 leading-relaxed font-medium">The build system is just a Go program. It compiles itself on the fly, requiring nothing but the Go toolchain.</div><div class="flex flex-col-reverse md:flex-row gap-6 items-start mt-10"><div class="flex-1 relative text-sm sm:text-base font-medium text-stone-300 leading-relaxed border border-[#CEB372] p-6 md:p-8 rounded-3xl bg-stone-800/20 shadow-sm"><span class="absolute -top-10 -left-4 text-[140px] text-[#CEB372] opacity-20 font-serif leading-none select-none pointer-events-none">“</span><p class="relative z-10 italic">Zero Dependencies means no more dependency hell. It's a breath of fresh air for our CI/CD.</p></div><div class="flex-shrink-0 flex flex-col items-center text-center w-32"><div class="w-24 h-24 bg-stone-900 rounded-full border-4 border-[#CEB372] mb-3 flex items-center justify-center overflow-hidden shadow-xl"><svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="40" width="40" class="text-[#CEB372]"><path d="M104,104h48v48H104Zm136,48a8,8,0,0,1-8,8H216v40a16,16,0,0,1-16,16H160v16a8,8,0,0,1-16,0V216H112v16a8,8,0,0,1-16,0V216H56a16,16,0,0,1-16-16V160H24a8,8,0,0,1,0-16H40V112H24a8,8,0,0,1,0-16H40V56A16,16,0,0,1,56,40H96V24a8,8,0,0,1,16,0V40h32V24a8,8,0,0,1,16,0V40h40a16,16,0,0,1,16,16V96h16a8,8,0,0,1,0,16H216v32h16A8,8,0,0,1,240,152ZM168,96a8,8,0,0,0-8-8H96a8,8,0,0,0-8,8v64a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8Z"></path></svg></div><p class="text-[11px] font-black uppercase text-white leading-tight"></p><p class="text-[9px] font-bold text-[#CEB372] uppercase tracking-wider"></p></div></div></div><div class="why-ruby-card relative self-start group"><div class="relative mb-8"><h3 class="text-5xl sm:text-6xl md:text-7xl font-light text-[#CEB372] tracking-tighter uppercase leading-none font-outfit">Metadata Management</h3><img alt="" class="absolute left-0 -bottom-[22px] w-full max-w-[430px] h-auto opacity-30 group-hover:opacity-100 transition-opacity" src="/projects/gobake/line.svg"></div><p class="text-xl sm:text-2xl font-bold text-white mb-4 leading-relaxed uppercase tracking-tight">Centralized control. Single Source.</p><div class="text-sm sm:text-base text-stone-300 mb-6 leading-relaxed font-medium">Manage versions, tools, and dependencies in a central `recipe.piml` file.</div><div class="flex flex-col-reverse md:flex-row gap-6 items-start mt-10"><div class="flex-1 relative text-sm sm:text-base font-medium text-stone-300 leading-relaxed border border-[#CEB372] p-6 md:p-8 rounded-3xl bg-stone-800/20 shadow-sm"><span class="absolute -top-10 -left-4 text-[140px] text-[#CEB372] opacity-20 font-serif leading-none select-none pointer-events-none">“</span><p class="relative z-10 italic">Metadata Management brings sanity to our versioning. Absolute game changer for release engineering.</p></div><div class="flex-shrink-0 flex flex-col items-center text-center w-32"><div class="w-24 h-24 bg-stone-900 rounded-full border-4 border-[#CEB372] mb-3 flex items-center justify-center overflow-hidden shadow-xl"><svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="40" width="40" class="text-[#CEB372]"><path d="M104,104h48v48H104Zm136,48a8,8,0,0,1-8,8H216v40a16,16,0,0,1-16,16H160v16a8,8,0,0,1-16,0V216H112v16a8,8,0,0,1-16,0V216H56a16,16,0,0,1-16-16V160H24a8,8,0,0,1,0-16H40V112H24a8,8,0,0,1,0-16H40V56A16,16,0,0,1,56,40H96V24a8,8,0,0,1,16,0V40h32V24a8,8,0,0,1,16,0V40h40a16,16,0,0,1,16,16V96h16a8,8,0,0,1,0,16H216v32h16A8,8,0,0,1,240,152ZM168,96a8,8,0,0,0-8-8H96a8,8,0,0,0-8,8v64a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8Z"></path></svg></div><p class="text-[11px] font-black uppercase text-white leading-tight"></p><p class="text-[9px] font-bold text-[#CEB372] uppercase tracking-wider"></p></div></div></div><div class="why-ruby-card relative self-start group"><div class="relative mb-8"><h3 class="text-5xl sm:text-6xl md:text-7xl font-light text-[#CEB372] tracking-tighter uppercase leading-none font-outfit">Self-Bootstrapping</h3><img alt="" class="absolute left-0 -bottom-[22px] w-full max-w-[430px] h-auto opacity-30 group-hover:opacity-100 transition-opacity" src="/projects/gobake/line.svg"></div><p class="text-xl sm:text-2xl font-bold text-white mb-4 leading-relaxed uppercase tracking-tight">Autonomous builds. Self-healing.</p><div class="text-sm sm:text-base text-stone-300 mb-6 leading-relaxed font-medium">Just run `gobake`. It handles the rest, ensuring your build environment is always consistent.</div><div class="flex flex-col-reverse md:flex-row gap-6 items-start mt-10"><div class="flex-1 relative text-sm sm:text-base font-medium text-stone-300 leading-relaxed border border-[#CEB372] p-6 md:p-8 rounded-3xl bg-stone-800/20 shadow-sm"><span class="absolute -top-10 -left-4 text-[140px] text-[#CEB372] opacity-20 font-serif leading-none select-none pointer-events-none">“</span><p class="relative z-10 italic">Self-Bootstrapping is magic. It handles its own lifecycle perfectly so I don't have to.</p></div><div class="flex-shrink-0 flex flex-col items-center text-center w-32"><div class="w-24 h-24 bg-stone-900 rounded-full border-4 border-[#CEB372] mb-3 flex items-center justify-center overflow-hidden shadow-xl"><svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="40" width="40" class="text-[#CEB372]"><path d="M104,104h48v48H104Zm136,48a8,8,0,0,1-8,8H216v40a16,16,0,0,1-16,16H160v16a8,8,0,0,1-16,0V216H112v16a8,8,0,0,1-16,0V216H56a16,16,0,0,1-16-16V160H24a8,8,0,0,1,0-16H40V112H24a8,8,0,0,1,0-16H40V56A16,16,0,0,1,56,40H96V24a8,8,0,0,1,16,0V40h32V24a8,8,0,0,1,16,0V40h40a16,16,0,0,1,16,16V96h16a8,8,0,0,1,0,16H216v32h16A8,8,0,0,1,240,152ZM168,96a8,8,0,0,0-8-8H96a8,8,0,0,0-8,8v64a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8Z"></path></svg></div><p class="text-[11px] font-black uppercase text-white leading-tight"></p><p class="text-[9px] font-bold text-[#CEB372] uppercase tracking-wider"></p></div></div></div></div></div></section><section class="bg-[#1c1917] py-24 md:py-32 border-t border-stone-800" id="docs"><div class="container mx-auto px-6 lg:px-8 max-w-7xl"><div class="text-center mb-24"><h2 class="text-4xl md:text-6xl font-black text-white mb-6 uppercase tracking-tighter font-outfit">DOCUMENTATION</h2><div class="h-1 w-32 bg-[#eb544f] mx-auto rounded-full"></div></div><div class="grid grid-cols-1 lg:grid-cols-4 gap-20"><div class="lg:col-span-3 space-y-24"><div class="prose prose-invert prose-2xl max-w-none prose-headings:text-white prose-headings:font-black prose-headings:uppercase prose-headings:tracking-tighter prose-h1:text-5xl prose-h1:mb-12 prose-h2:border-b-4 prose-h2:border-[#eb544f] prose-h2:pb-6 prose-h2:mb-16 prose-a:text-[#eb544f] prose-a:font-black prose-a:no-underline hover:prose-a:no-underline prose-pre:bg-[#292524] prose-pre:border prose-pre:border-stone-800 prose-pre:shadow-2xl prose-pre:rounded-[2rem] prose-code:text-[#CEB372] prose-code:font-bold prose-p:text-stone-300 prose-p:leading-relaxed" id="quick-start"><div class="no-underline-hover"><h1>Core Concepts</h1><p><code>gobake</code> operates on a simple principle: <strong>Your build system should be as robust as your application.</strong></p><p>Instead of relying on fragile shell scripts or complex Makefiles, <code>gobake</code> uses:</p><ol><li><strong>Engine:</strong> The core Go library that manages tasks and metadata.</li><li><strong>Context:</strong> A helper object passed to every task, providing access to the shell, logging, and environment.</li><li><strong>Recipe:</strong> The <code>Recipe.go</code> file (using <code>//go:build gobake</code>) that ties it all together.</li></ol><h1>CLI Command Reference</h1><h2>Project Management</h2><ul><li><strong><code>gobake init</code></strong>: Initialize a new project in the current directory. Automates <code>go mod</code> and dependency setup.</li><li><strong><code>gobake version</code></strong>: Show the current version of gobake.</li><li><strong><code>gobake help</code></strong>: Show the list of available commands and project tasks.</li><li><strong><code>gobake template <git-url></code></strong>: Clone a repository and initialize it as a gobake project.</li></ul><h2>Dependency & Tool Management</h2><ul><li><strong><code>gobake add-tool <url></code></strong>: Adds a tool to the <code>(tools)</code> list in <code>recipe.piml</code>.</li><li><strong><code>gobake remove-tool <url></code></strong>: Removes a tool from <code>recipe.piml</code>.</li><li><strong><code>gobake add-dep <url></code></strong>: Adds a library dependency using <code>go get</code>.</li><li><strong><code>gobake remove-dep <url></code></strong>: Removes a library dependency.</li></ul><h2>Versioning</h2><ul><li><strong><code>gobake bump [patch|minor|major]</code></strong>: Increments the project version in <code>recipe.piml</code>.</li></ul><h1>Metadata (<code>recipe.piml</code>)</h1><p>The <code>recipe.piml</code> file is the single source of truth for your project.</p><pre><code class="language-piml">(name) my-project
(version) 1.2.3
(authors)
> Fezcode
(tools)
> github.com/swaggo/swag/cmd/swag@latest
</code></pre><h1>Task Management</h1><p>Tasks are defined in the <code>Run(*gobake.Engine)</code> function using <code>bake.Task(name, description, function)</code>.</p><h2>Task Dependencies</h2><p>You can define tasks that depend on other tasks using <code>bake.TaskWithDeps</code>.</p><pre><code class="language-go">bake.Task("test", "Run tests", func(ctx *gobake.Context) error { ... })
bake.TaskWithDeps("build", "Build app", []string{"test"}, func(ctx *gobake.Context) error { ... })
</code></pre><h2>Cross-Compilation</h2><p>Use <code>ctx.BakeBinary(os, arch, output, flags...)</code> for simple cross-compilation tasks.</p><pre><code class="language-go">bake.Task("release", "Cross-compile", func(ctx *gobake.Context) error {
return ctx.BakeBinary("linux", "amd64", "bin/app")
})
</code></pre></div></div><div class="prose prose-invert prose-2xl max-w-none prose-headings:text-white prose-headings:font-black prose-headings:uppercase prose-headings:tracking-tighter prose-h1:text-5xl prose-h1:mb-12 prose-h2:border-b-4 prose-h2:border-[#CEB372] prose-h2:pb-6 prose-h2:mb-16 prose-a:text-[#eb544f] prose-a:font-black prose-a:no-underline hover:prose-a:no-underline prose-pre:bg-[#292524] prose-pre:border prose-pre:border-stone-800 prose-pre:shadow-2xl prose-pre:rounded-[2rem] prose-code:text-[#CEB372] prose-code:font-bold prose-p:text-stone-300 prose-p:leading-relaxed" id="examples"><div class="no-underline-hover"><h1>gobake Examples</h1><h2>1. Cross-Compilation for Multiple Platforms</h2><p>This recipe builds your application for Windows, Linux, and macOS.</p><pre><code class="language-go">//go:build gobake
package bake_recipe
import (
"fmt"
"github.com/fezcode/gobake"
)
func Run(bake *gobake.Engine) error {
if err := bake.LoadRecipeInfo("recipe.piml"); err != nil {
return err
}
bake.Task("release", "Build for all platforms", func(ctx *gobake.Context) error {
platforms := []struct {
OS string
Arch string
Ext string
}{
{"linux", "amd64", ""},
{"windows", "amd64", ".exe"},
{"darwin", "arm64", ""},
}
for _, p := range platforms {
output := fmt.Sprintf("dist/%s-%s-%s%s",
bake.Info.Name, p.OS, p.Arch, p.Ext)
err := ctx.BakeBinary(p.OS, p.Arch, output, "-ldflags", "-s -w")
if err != nil {
return err
}
}
return nil
})
return nil
}
</code></pre><h2>2. Using External Tools</h2><p>This recipe installs <code>stringer</code> and uses it to generate code before building.</p><p><strong>recipe.piml:</strong></p><pre><code class="language-piml">(name) my-app
(tools)
> golang.org/x/tools/cmd/stringer@latest
</code></pre><p><strong>Recipe.go:</strong></p><pre><code class="language-go">//go:build gobake
package bake_recipe
import (
"fmt"
"github.com/fezcode/gobake"
)
func Run(bake *gobake.Engine) error {
if err := bake.LoadRecipeInfo("recipe.piml"); err != nil {
return fmt.Errorf("error loading recipe.piml: %v", err)
}
bake.Task("generate", "Generates code", func(ctx *gobake.Context) error {
// Ensure tools are installed first
if err := ctx.InstallTools(); err != nil {
return err
}
ctx.Log("Running stringer...")
return ctx.Run("go", "generate", "./...")
})
bake.TaskWithDeps("build", "Builds app", []string{"generate"}, func(ctx *gobake.Context) error {
return ctx.Run("go", "build", ".")
})
return nil
}
</code></pre><h2>3. Injecting Version with ldflags</h2><p>Inject project version from <code>recipe.piml</code> into your binary.</p><p><strong>Recipe.go:</strong></p><pre><code class="language-go">//go:build gobake
package bake_recipe
import (
"fmt"
"github.com/fezcode/gobake"
)
func Run(bake *gobake.Engine) error {
if err := bake.LoadRecipeInfo("recipe.piml"); err != nil {
return err
}
bake.Task("build", "Build with version", func(ctx *gobake.Context) error {
ldflags := fmt.Sprintf("-X main.Version=%s", bake.Info.Version)
ctx.Log("Building version %s...", bake.Info.Version)
return ctx.Run("go", "build", "-ldflags", ldflags, "-o", "bin/app")
})
return nil
}
</code></pre></div></div></div><div class="lg:col-span-1 space-y-12"><div class="sticky top-32"><div class="bg-[#292524] p-8 rounded-3xl border border-stone-800 shadow-2xl"><h4 class="font-black text-xs uppercase tracking-[0.2em] text-stone-500 mb-8 italic">GUIDE NAV</h4><ul class="space-y-6 font-black text-white text-base uppercase tracking-tighter"><li><a class="flex items-center gap-3 hover:text-[#eb544f] transition-all group" href="#quick-start"><svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="1em" width="1em" class="group-hover:translate-x-1 transition-transform"><path d="M184.49,136.49l-80,80a12,12,0,0,1-17-17L159,128,87.51,56.49a12,12,0,1,1,17-17l80,80A12,12,0,0,1,184.49,136.49Z"></path></svg>QUICK START</a></li><li><a class="flex items-center gap-3 hover:text-[#eb544f] transition-all group" href="#examples"><svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="1em" width="1em" class="group-hover:translate-x-1 transition-transform"><path d="M184.49,136.49l-80,80a12,12,0,0,1-17-17L159,128,87.51,56.49a12,12,0,1,1,17-17l80,80A12,12,0,0,1,184.49,136.49Z"></path></svg>EXAMPLES</a></li><li><a class="flex items-center gap-3 hover:text-[#eb544f] transition-all group" href="#installation"><svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="1em" width="1em" class="group-hover:translate-x-1 transition-transform"><path d="M184.49,136.49l-80,80a12,12,0,0,1-17-17L159,128,87.51,56.49a12,12,0,1,1,17-17l80,80A12,12,0,0,1,184.49,136.49Z"></path></svg>INSTALLATION</a></li></ul></div></div></div></div></div></section><section class="py-32 bg-[#292524] border-t border-stone-800 text-center" id="installation"><div class="max-w-5xl mx-auto px-6"><h2 class="text-5xl font-black text-white mb-12 uppercase tracking-tighter font-outfit">READY TO GOBAKE?</h2><div class="bg-[#1c1917] p-8 rounded-2xl shadow-2xl mb-16 flex flex-col md:flex-row items-center justify-between gap-8 group border border-stone-700 hover:border-[#eb544f]/50 transition-all duration-500 w-full max-w-5xl mx-auto"><div class="flex items-center gap-6 text-left"><span class="text-[#CEB372] font-black text-2xl shrink-0">$</span><code class="text-[#CEB372] font-mono text-xl md:text-xl break-all font-bold uppercase-none">go install github.com/fezcode/gobake/cmd/gobake@latest</code></div><button class="bg-white text-stone-900 hover:bg-[#eb544f] hover:text-white p-4 rounded-xl transition-all duration-300 flex items-center gap-3 font-black shadow-xl shrink-0 uppercase tracking-widest text-sm"><svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="24" width="24"><path d="M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z"></path></svg>COPY</button></div><div class="flex flex-wrap items-center justify-center gap-12 text-stone-500 text-[10px] font-black uppercase tracking-[0.4em] italic"><div class="flex items-center gap-3 hover:text-[#eb544f] transition-colors cursor-default"><svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="20" width="20"><path d="M208,40H48A16,16,0,0,0,32,56v56c0,52.72,25.52,84.67,46.93,102.19,23.06,18.86,46,25.26,47,25.53a8,8,0,0,0,4.2,0c1-.27,23.91-6.67,47-25.53C198.48,196.67,224,164.72,224,112V56A16,16,0,0,0,208,40Zm0,72c0,37.07-13.66,67.16-40.6,89.42A129.3,129.3,0,0,1,128,223.62a128.25,128.25,0,0,1-38.92-21.81C61.82,179.51,48,149.3,48,112l0-56,160,0ZM82.34,141.66a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35a8,8,0,0,1,11.32,11.32l-56,56a8,8,0,0,1-11.32,0Z"></path></svg> MIT LICENSE</div><div class="flex items-center gap-3 hover:text-[#eb544f] transition-colors cursor-default"><svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="20" width="20"><path d="M152,96H104a8,8,0,0,0-8,8v48a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V104A8,8,0,0,0,152,96Zm-8,48H112V112h32Zm88,0H216V112h16a8,8,0,0,0,0-16H216V56a16,16,0,0,0-16-16H160V24a8,8,0,0,0-16,0V40H112V24a8,8,0,0,0-16,0V40H56A16,16,0,0,0,40,56V96H24a8,8,0,0,0,0,16H40v32H24a8,8,0,0,0,0,16H40v40a16,16,0,0,0,16,16H96v16a8,8,0,0,0,16,0V216h32v16a8,8,0,0,0,16,0V216h40a16,16,0,0,0,16-16V160h16a8,8,0,0,0,0-16Zm-32,56H56V56H200v95.87s0,.09,0,.13,0,.09,0,.13V200Z"></path></svg> GO-NATIVE</div></div></div></section></div><footer class="bg-[#1c1917] pt-2 pb-16 relative border-t-8 border-[#eb544f] mt-20"><div class="absolute -top-[31px] left-0 right-0 h-8 text-[#1c1917]"><svg viewBox="0 0 400 20" xmlns="http://www.w3.org/2000/svg" class="w-full h-full" preserveAspectRatio="none"><path d="M0,10 C20,0 40,20 60,10 C80,0 100,20 120,10 C140,0 160,20 180,10 C200,0 220,20 240,10 C260,0 280,20 300,10 C320,0 340,20 360,10 C380,0 400,20 400,10 L400,20 L0,20 Z" fill="currentColor"></path></svg></div><div class="container mx-auto px-4 md:px-6 pt-24 max-w-7xl"><div class="flex flex-col lg:flex-row justify-between items-start gap-12 mb-16 text-center lg:text-left"><div><h2 class="text-5xl md:text-7xl font-black text-white tracking-tighter uppercase mb-2 font-outfit leading-none">gobake</h2><p class="text-2xl font-bold text-[#CEB372] italic uppercase tracking-widest ml-1">Happy Hacking!</p></div><nav class="flex flex-wrap justify-center lg:justify-start items-center gap-x-10 gap-y-4 text-sm font-black uppercase tracking-widest text-stone-300"><a class="hover:text-[#eb544f] transition-colors border-r border-stone-700 pr-10" href="#installation">Download</a><a class="hover:text-[#eb544f] transition-colors border-r border-stone-700 pr-10" href="#docs">Documentation</a><a class="hover:text-[#eb544f] transition-colors border-stone-700 pl-10" href="https://github.com/fezcode/gobake" rel="noopener noreferrer" target="_blank">GitHub</a></nav></div><div class="pt-12 border-t border-stone-800 flex flex-col md:flex-row justify-between items-center gap-8 text-[10px] font-black uppercase tracking-[0.4em] text-stone-600"><div class="flex gap-10"><span class="text-[#CEB372] border-b border-[#CEB372] pb-1">THEME: DARK</span><span>GO-NATIVE</span></div><div class="text-center md:text-right">© 2026 Fezcode. All rights reserved.</div></div></div></footer></div></main></div></div><div class="fixed bottom-0 left-0 w-full h-32 pointer-events-none z-[9999]"><div class="absolute bottom-2 flex flex-col items-center pointer-events-auto cursor-help" style="width:60px;transform:translateX(93.6777vw)"><div class="relative" style="transform:scaleX(-1)"><div class="w-10 h-10 flex items-center justify-center rounded-lg border-2 bg-[#050505] border-[#10B981]/40 text-[#10B981] shadow-lg" style="transform:translateY(-.034278px) rotate(.0636733deg)"><svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="24" width="24"><path d="M224,118.31V200a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V118.31h0A191.14,191.14,0,0,0,128,144,191.08,191.08,0,0,0,224,118.31Z" opacity="0.2"></path><path d="M104,112a8,8,0,0,1,8-8h32a8,8,0,0,1,0,16H112A8,8,0,0,1,104,112ZM232,72V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V72A16,16,0,0,1,40,56H80V48a24,24,0,0,1,24-24h48a24,24,0,0,1,24,24v8h40A16,16,0,0,1,232,72ZM96,56h64V48a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8ZM40,72v41.62A184.07,184.07,0,0,0,128,136a184,184,0,0,0,88-22.39V72ZM216,200V131.63A200.25,200.25,0,0,1,128,152a200.19,200.19,0,0,1-88-20.36V200H216Z"></path></svg><div class="absolute top-2 left-2 flex gap-3"><div class="w-1.5 h-1.5 rounded-full bg-current animate-pulse"></div><div class="w-1.5 h-1.5 rounded-full bg-current animate-pulse"></div></div></div><div class="flex justify-around mt-[-4px]"><div class="w-3 h-2 rounded-full bg-current opacity-50" style="color:#10b981;transform:translateY(-.0336663px)"></div><div class="w-3 h-2 rounded-full bg-current opacity-50" style="color:#10b981;transform:translateY(-1.96633px)"></div></div></div></div></div><div class="fixed top-24 right-6 md:right-12 z-[100] pointer-events-none flex flex-col items-end gap-2"><div class="pointer-events-auto flex flex-col-reverse gap-3"></div></div></div></body></html>