@jaimevalasek/aioson 1.5.1 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/docs/design-previews/aurora-command-ui-website.html +884 -0
- package/docs/design-previews/aurora-command-ui.html +682 -0
- package/docs/design-previews/bold-editorial-ui-website.html +658 -0
- package/docs/design-previews/bold-editorial-ui.html +717 -0
- package/docs/design-previews/clean-saas-ui-website.html +1202 -0
- package/docs/design-previews/clean-saas-ui.html +549 -0
- package/docs/design-previews/cognitive-core-ui-website.html +1009 -0
- package/docs/design-previews/cognitive-core-ui.html +463 -0
- package/docs/design-previews/glassmorphism-ui-website.html +572 -0
- package/docs/design-previews/glassmorphism-ui.html +886 -0
- package/docs/design-previews/index.html +699 -0
- package/docs/design-previews/interface-design-website.html +1187 -0
- package/docs/design-previews/interface-design.html +513 -0
- package/docs/design-previews/neo-brutalist-ui-website.html +621 -0
- package/docs/design-previews/neo-brutalist-ui.html +797 -0
- package/docs/design-previews/premium-command-center-ui-website.html +1217 -0
- package/docs/design-previews/premium-command-center-ui.html +552 -0
- package/docs/design-previews/warm-craft-ui-website.html +684 -0
- package/docs/design-previews/warm-craft-ui.html +739 -0
- package/docs/en/cli-reference.md +20 -9
- package/docs/pt/README.md +7 -0
- package/docs/pt/agent-sharding.md +132 -0
- package/docs/pt/agentes.md +8 -2
- package/docs/pt/busca-de-contexto.md +129 -0
- package/docs/pt/cache-de-contexto.md +156 -0
- package/docs/pt/comandos-cli.md +28 -0
- package/docs/pt/design-hybrid-forge.md +107 -0
- package/docs/pt/inicio-rapido.md +54 -3
- package/docs/pt/inteligencia-adaptativa.md +324 -0
- package/docs/pt/monitor-de-contexto.md +104 -0
- package/docs/pt/recuperacao-de-sessao.md +125 -0
- package/docs/pt/sandbox.md +125 -0
- package/docs/pt/skills.md +98 -6
- package/package.json +1 -1
- package/src/agent-loader.js +280 -0
- package/src/cli.js +94 -0
- package/src/commands/agent-loader.js +85 -0
- package/src/commands/context-cache.js +90 -0
- package/src/commands/context-monitor.js +92 -0
- package/src/commands/context-search.js +66 -0
- package/src/commands/design-hybrid-options.js +385 -0
- package/src/commands/health.js +214 -0
- package/src/commands/init.js +54 -13
- package/src/commands/install.js +52 -13
- package/src/commands/learning-evolve.js +355 -0
- package/src/commands/live.js +34 -0
- package/src/commands/recovery.js +43 -0
- package/src/commands/sandbox.js +37 -0
- package/src/commands/setup-context.js +22 -2
- package/src/commands/setup.js +178 -0
- package/src/commands/skill.js +79 -32
- package/src/commands/tool-registry-cmd.js +232 -0
- package/src/commands/update.js +7 -0
- package/src/constants.js +9 -0
- package/src/context-cache.js +159 -0
- package/src/context-search.js +326 -0
- package/src/design-variation-catalog.js +503 -0
- package/src/i18n/messages/en.js +32 -2
- package/src/i18n/messages/es.js +30 -2
- package/src/i18n/messages/fr.js +30 -2
- package/src/i18n/messages/pt-BR.js +32 -2
- package/src/install-animation.js +260 -0
- package/src/install-profile.js +143 -0
- package/src/install-wizard.js +474 -0
- package/src/installer.js +38 -10
- package/src/parser.js +7 -1
- package/src/recovery-context-session.js +154 -0
- package/src/runtime-store.js +97 -1
- package/src/sandbox.js +177 -0
- package/src/tool-executor.js +94 -0
- package/src/updater.js +11 -3
- package/template/.aioson/agents/analyst.md +58 -3
- package/template/.aioson/agents/architect.md +38 -0
- package/template/.aioson/agents/design-hybrid-forge.md +127 -0
- package/template/.aioson/agents/dev.md +103 -0
- package/template/.aioson/agents/deyvin.md +57 -0
- package/template/.aioson/agents/pm.md +58 -0
- package/template/.aioson/agents/product.md +28 -0
- package/template/.aioson/agents/qa.md +79 -0
- package/template/.aioson/agents/setup.md +65 -3
- package/template/.aioson/agents/sheldon.md +107 -6
- package/template/.aioson/agents/tester.md +156 -0
- package/template/.aioson/config.md +15 -0
- package/template/.aioson/context/forensics/.gitkeep +0 -0
- package/template/.aioson/context/seeds/seed-example.md +27 -0
- package/template/.aioson/context/user-profile.md +42 -0
- package/template/.aioson/locales/en/agents/setup.md +33 -1
- package/template/.aioson/locales/es/agents/setup.md +33 -1
- package/template/.aioson/locales/fr/agents/setup.md +33 -1
- package/template/.aioson/locales/pt-BR/agents/setup.md +33 -1
- package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +243 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +482 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +387 -0
- package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +222 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +213 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -0
- package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +45 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +109 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/artifact-map.md +44 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +37 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/hardening-lane.md +49 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/maintenance-and-state.md +66 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/ui-language.md +75 -0
- package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +144 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/crossover-protocol.md +221 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/naming-registry.md +88 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/output-contract.md +291 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/pair-compatibility.md +117 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/quality-gates.md +188 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/variation-library.md +125 -0
- package/template/AGENTS.md +23 -1
- package/template/CLAUDE.md +1 -0
|
@@ -0,0 +1,658 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>FORGE — Infrastructure Landing / Bold Editorial UI Preview</title>
|
|
7
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
8
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
9
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet" />
|
|
10
|
+
<style>
|
|
11
|
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
12
|
+
|
|
13
|
+
:root {
|
|
14
|
+
--void: #050505;
|
|
15
|
+
--dark: #0A0A0A;
|
|
16
|
+
--surface: #141414;
|
|
17
|
+
--surface-2: #1C1C1C;
|
|
18
|
+
--border: rgba(255,255,255,0.08);
|
|
19
|
+
--border-mid: rgba(255,255,255,0.12);
|
|
20
|
+
--red: #FF4D2A;
|
|
21
|
+
--red-glow: rgba(255,77,42,0.15);
|
|
22
|
+
--red-glow-strong: rgba(255,77,42,0.25);
|
|
23
|
+
--white: #FFFFFF;
|
|
24
|
+
--body: #B8B8B8;
|
|
25
|
+
--muted: #787878;
|
|
26
|
+
--dim: #4A4A4A;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* Display font stack — Clash Display via system fallback + Impact for the editorial punch */
|
|
30
|
+
@font-face {
|
|
31
|
+
font-family: 'Display';
|
|
32
|
+
src: local('Impact'), local('Haettenschweiler'), local('Arial Narrow'), local('Arial Black');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
html { scroll-behavior: smooth; }
|
|
36
|
+
|
|
37
|
+
body {
|
|
38
|
+
font-family: 'Inter', sans-serif;
|
|
39
|
+
background: var(--dark);
|
|
40
|
+
color: var(--body);
|
|
41
|
+
overflow-x: hidden;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.container {
|
|
45
|
+
max-width: 1160px;
|
|
46
|
+
margin: 0 auto;
|
|
47
|
+
padding: 0 28px;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* Mono overline style */
|
|
51
|
+
.overline {
|
|
52
|
+
font-family: 'JetBrains Mono', monospace;
|
|
53
|
+
font-size: 0.72rem;
|
|
54
|
+
font-weight: 600;
|
|
55
|
+
text-transform: uppercase;
|
|
56
|
+
letter-spacing: 0.12em;
|
|
57
|
+
color: var(--muted);
|
|
58
|
+
}
|
|
59
|
+
.overline-accent { color: var(--red); }
|
|
60
|
+
|
|
61
|
+
/* === NAV === */
|
|
62
|
+
nav {
|
|
63
|
+
position: sticky;
|
|
64
|
+
top: 0;
|
|
65
|
+
z-index: 100;
|
|
66
|
+
background: rgba(5,5,5,0.90);
|
|
67
|
+
backdrop-filter: blur(10px);
|
|
68
|
+
-webkit-backdrop-filter: blur(10px);
|
|
69
|
+
border-bottom: 1px solid var(--border);
|
|
70
|
+
}
|
|
71
|
+
.nav-inner {
|
|
72
|
+
display: flex;
|
|
73
|
+
align-items: center;
|
|
74
|
+
justify-content: space-between;
|
|
75
|
+
height: 60px;
|
|
76
|
+
max-width: 1160px;
|
|
77
|
+
margin: 0 auto;
|
|
78
|
+
padding: 0 28px;
|
|
79
|
+
}
|
|
80
|
+
.logo {
|
|
81
|
+
font-family: Impact, 'Arial Black', sans-serif;
|
|
82
|
+
font-size: 1.4rem;
|
|
83
|
+
font-weight: 700;
|
|
84
|
+
color: var(--white);
|
|
85
|
+
letter-spacing: -0.02em;
|
|
86
|
+
}
|
|
87
|
+
.logo-accent { color: var(--red); }
|
|
88
|
+
.nav-links {
|
|
89
|
+
display: flex;
|
|
90
|
+
gap: 36px;
|
|
91
|
+
list-style: none;
|
|
92
|
+
}
|
|
93
|
+
.nav-links a {
|
|
94
|
+
font-family: 'JetBrains Mono', monospace;
|
|
95
|
+
text-decoration: none;
|
|
96
|
+
color: var(--muted);
|
|
97
|
+
font-size: 0.75rem;
|
|
98
|
+
font-weight: 500;
|
|
99
|
+
text-transform: uppercase;
|
|
100
|
+
letter-spacing: 0.08em;
|
|
101
|
+
transition: color 0.2s;
|
|
102
|
+
}
|
|
103
|
+
.nav-links a:hover { color: var(--white); }
|
|
104
|
+
.btn-red {
|
|
105
|
+
background: var(--red);
|
|
106
|
+
color: var(--white);
|
|
107
|
+
border: none;
|
|
108
|
+
border-radius: 6px;
|
|
109
|
+
padding: 9px 20px;
|
|
110
|
+
font-size: 0.82rem;
|
|
111
|
+
font-weight: 600;
|
|
112
|
+
cursor: pointer;
|
|
113
|
+
font-family: 'Inter', sans-serif;
|
|
114
|
+
letter-spacing: 0.01em;
|
|
115
|
+
transition: opacity 0.15s, transform 0.15s;
|
|
116
|
+
}
|
|
117
|
+
.btn-red:hover {
|
|
118
|
+
opacity: 0.88;
|
|
119
|
+
transform: translateY(-1px);
|
|
120
|
+
}
|
|
121
|
+
.btn-ghost-white {
|
|
122
|
+
background: transparent;
|
|
123
|
+
color: var(--white);
|
|
124
|
+
border: 1px solid var(--border-mid);
|
|
125
|
+
border-radius: 6px;
|
|
126
|
+
padding: 9px 20px;
|
|
127
|
+
font-size: 0.82rem;
|
|
128
|
+
font-weight: 500;
|
|
129
|
+
cursor: pointer;
|
|
130
|
+
font-family: 'Inter', sans-serif;
|
|
131
|
+
transition: border-color 0.2s, background 0.2s;
|
|
132
|
+
}
|
|
133
|
+
.btn-ghost-white:hover {
|
|
134
|
+
border-color: rgba(255,255,255,0.25);
|
|
135
|
+
background: rgba(255,255,255,0.04);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* === HERO === */
|
|
139
|
+
.hero {
|
|
140
|
+
padding: 96px 0 80px;
|
|
141
|
+
border-bottom: 1px solid var(--border);
|
|
142
|
+
text-align: center;
|
|
143
|
+
}
|
|
144
|
+
.hero-overline {
|
|
145
|
+
margin-bottom: 28px;
|
|
146
|
+
}
|
|
147
|
+
.hero h1 {
|
|
148
|
+
font-family: Impact, 'Arial Black', 'Haettenschweiler', sans-serif;
|
|
149
|
+
font-size: clamp(64px, 9vw, 100px);
|
|
150
|
+
font-weight: 700;
|
|
151
|
+
line-height: 0.92;
|
|
152
|
+
letter-spacing: -0.04em;
|
|
153
|
+
color: var(--white);
|
|
154
|
+
margin: 0 auto 28px;
|
|
155
|
+
max-width: 860px;
|
|
156
|
+
text-transform: uppercase;
|
|
157
|
+
}
|
|
158
|
+
.hero h1 .red-word { color: var(--red); }
|
|
159
|
+
.hero-sub {
|
|
160
|
+
font-size: 1.05rem;
|
|
161
|
+
color: var(--body);
|
|
162
|
+
max-width: 520px;
|
|
163
|
+
line-height: 1.65;
|
|
164
|
+
margin: 0 auto 36px;
|
|
165
|
+
font-weight: 300;
|
|
166
|
+
}
|
|
167
|
+
.hero-ctas {
|
|
168
|
+
display: flex;
|
|
169
|
+
gap: 12px;
|
|
170
|
+
flex-wrap: wrap;
|
|
171
|
+
margin-bottom: 60px;
|
|
172
|
+
justify-content: center;
|
|
173
|
+
}
|
|
174
|
+
.hero-ctas .btn-red { padding: 13px 28px; font-size: 0.9rem; font-weight: 700; }
|
|
175
|
+
.hero-ctas .btn-ghost-white { padding: 13px 28px; font-size: 0.9rem; }
|
|
176
|
+
|
|
177
|
+
/* Code window */
|
|
178
|
+
.code-window {
|
|
179
|
+
max-width: 700px;
|
|
180
|
+
margin: 0 auto;
|
|
181
|
+
border: 1px solid var(--border-mid);
|
|
182
|
+
border-radius: 8px;
|
|
183
|
+
background: var(--surface);
|
|
184
|
+
box-shadow: 0 0 60px var(--red-glow), 0 8px 24px rgba(0,0,0,0.35);
|
|
185
|
+
overflow: hidden;
|
|
186
|
+
}
|
|
187
|
+
.code-titlebar {
|
|
188
|
+
display: flex;
|
|
189
|
+
align-items: center;
|
|
190
|
+
gap: 8px;
|
|
191
|
+
padding: 12px 16px;
|
|
192
|
+
border-bottom: 1px solid var(--border);
|
|
193
|
+
background: var(--surface-2);
|
|
194
|
+
}
|
|
195
|
+
.cb-dot { width: 11px; height: 11px; border-radius: 50%; }
|
|
196
|
+
.cb-dot.r { background: #FF5F57; }
|
|
197
|
+
.cb-dot.y { background: #FFBD2E; }
|
|
198
|
+
.cb-dot.g { background: #28C840; }
|
|
199
|
+
.cb-filename {
|
|
200
|
+
font-family: 'JetBrains Mono', monospace;
|
|
201
|
+
font-size: 0.7rem;
|
|
202
|
+
color: var(--muted);
|
|
203
|
+
margin-left: 6px;
|
|
204
|
+
text-transform: uppercase;
|
|
205
|
+
letter-spacing: 0.08em;
|
|
206
|
+
}
|
|
207
|
+
.cb-badge {
|
|
208
|
+
margin-left: auto;
|
|
209
|
+
font-family: 'JetBrains Mono', monospace;
|
|
210
|
+
font-size: 0.65rem;
|
|
211
|
+
padding: 2px 8px;
|
|
212
|
+
border: 1px solid rgba(255,77,42,0.30);
|
|
213
|
+
border-radius: 4px;
|
|
214
|
+
color: var(--red);
|
|
215
|
+
text-transform: uppercase;
|
|
216
|
+
letter-spacing: 0.06em;
|
|
217
|
+
}
|
|
218
|
+
.code-body {
|
|
219
|
+
padding: 20px 22px;
|
|
220
|
+
font-family: 'JetBrains Mono', monospace;
|
|
221
|
+
font-size: 0.8rem;
|
|
222
|
+
line-height: 1.9;
|
|
223
|
+
}
|
|
224
|
+
.c-dim { color: var(--dim); }
|
|
225
|
+
.c-muted { color: var(--muted); }
|
|
226
|
+
.c-white { color: var(--white); }
|
|
227
|
+
.c-red { color: var(--red); }
|
|
228
|
+
.c-green { color: #4ADE80; }
|
|
229
|
+
.c-blue { color: #60A5FA; }
|
|
230
|
+
.c-yellow { color: #FCD34D; }
|
|
231
|
+
.c-purple { color: #A78BFA; }
|
|
232
|
+
.c-orange { color: #FB923C; }
|
|
233
|
+
|
|
234
|
+
/* === STATS ROW === */
|
|
235
|
+
.stats-row {
|
|
236
|
+
border-top: 1px solid var(--border);
|
|
237
|
+
border-bottom: 1px solid var(--border);
|
|
238
|
+
background: var(--void);
|
|
239
|
+
}
|
|
240
|
+
.stats-inner {
|
|
241
|
+
max-width: 1160px;
|
|
242
|
+
margin: 0 auto;
|
|
243
|
+
padding: 0 28px;
|
|
244
|
+
display: grid;
|
|
245
|
+
grid-template-columns: repeat(3, 1fr);
|
|
246
|
+
}
|
|
247
|
+
.stat-item {
|
|
248
|
+
padding: 48px 32px;
|
|
249
|
+
border-right: 1px solid var(--border);
|
|
250
|
+
text-align: center;
|
|
251
|
+
}
|
|
252
|
+
.stat-item:last-child { border-right: none; }
|
|
253
|
+
.stat-num {
|
|
254
|
+
font-family: Impact, 'Arial Black', sans-serif;
|
|
255
|
+
font-size: 3.2rem;
|
|
256
|
+
font-weight: 700;
|
|
257
|
+
color: var(--white);
|
|
258
|
+
letter-spacing: -0.04em;
|
|
259
|
+
line-height: 1;
|
|
260
|
+
margin-bottom: 8px;
|
|
261
|
+
display: block;
|
|
262
|
+
}
|
|
263
|
+
.stat-num .red { color: var(--red); }
|
|
264
|
+
.stat-label {
|
|
265
|
+
font-family: 'JetBrains Mono', monospace;
|
|
266
|
+
font-size: 0.7rem;
|
|
267
|
+
text-transform: uppercase;
|
|
268
|
+
letter-spacing: 0.12em;
|
|
269
|
+
color: var(--muted);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/* === WHITE SECTION === */
|
|
273
|
+
.white-section {
|
|
274
|
+
background: #FAFAF7;
|
|
275
|
+
padding: 100px 0;
|
|
276
|
+
}
|
|
277
|
+
.white-section .overline { color: #999; }
|
|
278
|
+
.white-section .overline-accent { color: var(--red); }
|
|
279
|
+
.white-section-title {
|
|
280
|
+
font-family: Impact, 'Arial Black', sans-serif;
|
|
281
|
+
font-size: clamp(36px, 5vw, 54px);
|
|
282
|
+
font-weight: 700;
|
|
283
|
+
color: #111;
|
|
284
|
+
letter-spacing: -0.04em;
|
|
285
|
+
line-height: 1.0;
|
|
286
|
+
margin-bottom: 56px;
|
|
287
|
+
text-transform: uppercase;
|
|
288
|
+
text-align: center;
|
|
289
|
+
}
|
|
290
|
+
.ws-features {
|
|
291
|
+
display: grid;
|
|
292
|
+
grid-template-columns: repeat(3, 1fr);
|
|
293
|
+
gap: 40px;
|
|
294
|
+
border-top: 2px solid #111;
|
|
295
|
+
padding-top: 40px;
|
|
296
|
+
}
|
|
297
|
+
.ws-feature {
|
|
298
|
+
padding-top: 8px;
|
|
299
|
+
}
|
|
300
|
+
.ws-feature-label {
|
|
301
|
+
font-family: 'JetBrains Mono', monospace;
|
|
302
|
+
font-size: 0.68rem;
|
|
303
|
+
text-transform: uppercase;
|
|
304
|
+
letter-spacing: 0.12em;
|
|
305
|
+
color: var(--red);
|
|
306
|
+
margin-bottom: 12px;
|
|
307
|
+
}
|
|
308
|
+
.ws-feature-title {
|
|
309
|
+
font-size: 1.1rem;
|
|
310
|
+
font-weight: 600;
|
|
311
|
+
color: #111;
|
|
312
|
+
margin-bottom: 10px;
|
|
313
|
+
letter-spacing: -0.02em;
|
|
314
|
+
}
|
|
315
|
+
.ws-feature-desc {
|
|
316
|
+
font-size: 0.88rem;
|
|
317
|
+
color: #555;
|
|
318
|
+
line-height: 1.70;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/* === TESTIMONIAL === */
|
|
322
|
+
.testimonial-section {
|
|
323
|
+
padding: 100px 0;
|
|
324
|
+
border-top: 1px solid var(--border);
|
|
325
|
+
border-bottom: 1px solid var(--border);
|
|
326
|
+
}
|
|
327
|
+
.testimonial-inner {
|
|
328
|
+
max-width: 860px;
|
|
329
|
+
margin: 0 auto;
|
|
330
|
+
}
|
|
331
|
+
.pull-quote {
|
|
332
|
+
font-family: Impact, 'Arial Black', sans-serif;
|
|
333
|
+
font-size: clamp(28px, 4vw, 44px);
|
|
334
|
+
font-weight: 700;
|
|
335
|
+
color: var(--white);
|
|
336
|
+
letter-spacing: -0.03em;
|
|
337
|
+
line-height: 1.1;
|
|
338
|
+
text-transform: uppercase;
|
|
339
|
+
margin-bottom: 32px;
|
|
340
|
+
}
|
|
341
|
+
.pull-quote .red { color: var(--red); }
|
|
342
|
+
.quote-author {
|
|
343
|
+
display: flex;
|
|
344
|
+
align-items: center;
|
|
345
|
+
gap: 16px;
|
|
346
|
+
}
|
|
347
|
+
.qa-avatar {
|
|
348
|
+
width: 44px; height: 44px;
|
|
349
|
+
border-radius: 8px;
|
|
350
|
+
background: var(--surface-2);
|
|
351
|
+
border: 1px solid var(--border-mid);
|
|
352
|
+
display: flex; align-items: center; justify-content: center;
|
|
353
|
+
font-family: 'JetBrains Mono', monospace;
|
|
354
|
+
font-size: 0.78rem;
|
|
355
|
+
font-weight: 600;
|
|
356
|
+
color: var(--white);
|
|
357
|
+
}
|
|
358
|
+
.qa-name {
|
|
359
|
+
font-size: 0.88rem;
|
|
360
|
+
font-weight: 600;
|
|
361
|
+
color: var(--white);
|
|
362
|
+
margin-bottom: 3px;
|
|
363
|
+
}
|
|
364
|
+
.qa-role {
|
|
365
|
+
font-family: 'JetBrains Mono', monospace;
|
|
366
|
+
font-size: 0.68rem;
|
|
367
|
+
text-transform: uppercase;
|
|
368
|
+
letter-spacing: 0.08em;
|
|
369
|
+
color: var(--muted);
|
|
370
|
+
}
|
|
371
|
+
.qa-company {
|
|
372
|
+
margin-left: 40px;
|
|
373
|
+
display: flex;
|
|
374
|
+
flex-direction: column;
|
|
375
|
+
gap: 2px;
|
|
376
|
+
}
|
|
377
|
+
.company-name {
|
|
378
|
+
font-family: 'JetBrains Mono', monospace;
|
|
379
|
+
font-size: 0.72rem;
|
|
380
|
+
text-transform: uppercase;
|
|
381
|
+
letter-spacing: 0.1em;
|
|
382
|
+
color: var(--dim);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
/* === CTA SECTION === */
|
|
386
|
+
.cta-section {
|
|
387
|
+
padding: 120px 0;
|
|
388
|
+
text-align: center;
|
|
389
|
+
border-bottom: 1px solid var(--border);
|
|
390
|
+
position: relative;
|
|
391
|
+
overflow: hidden;
|
|
392
|
+
}
|
|
393
|
+
.cta-section::before {
|
|
394
|
+
content: '';
|
|
395
|
+
position: absolute;
|
|
396
|
+
bottom: -100px;
|
|
397
|
+
left: 50%;
|
|
398
|
+
transform: translateX(-50%);
|
|
399
|
+
width: 600px;
|
|
400
|
+
height: 300px;
|
|
401
|
+
background: radial-gradient(ellipse, var(--red-glow) 0%, transparent 70%);
|
|
402
|
+
pointer-events: none;
|
|
403
|
+
}
|
|
404
|
+
.cta-headline {
|
|
405
|
+
font-family: Impact, 'Arial Black', sans-serif;
|
|
406
|
+
font-size: clamp(52px, 8vw, 88px);
|
|
407
|
+
font-weight: 700;
|
|
408
|
+
color: var(--white);
|
|
409
|
+
letter-spacing: -0.04em;
|
|
410
|
+
line-height: 0.95;
|
|
411
|
+
text-transform: uppercase;
|
|
412
|
+
margin-bottom: 16px;
|
|
413
|
+
}
|
|
414
|
+
.cta-headline .red { color: var(--red); }
|
|
415
|
+
.cta-sub {
|
|
416
|
+
font-size: 1rem;
|
|
417
|
+
color: var(--muted);
|
|
418
|
+
margin-bottom: 40px;
|
|
419
|
+
font-weight: 300;
|
|
420
|
+
}
|
|
421
|
+
.btn-red-glow {
|
|
422
|
+
background: var(--red);
|
|
423
|
+
color: var(--white);
|
|
424
|
+
border: none;
|
|
425
|
+
border-radius: 6px;
|
|
426
|
+
padding: 16px 40px;
|
|
427
|
+
font-size: 1rem;
|
|
428
|
+
font-weight: 700;
|
|
429
|
+
cursor: pointer;
|
|
430
|
+
font-family: 'Inter', sans-serif;
|
|
431
|
+
box-shadow: 0 0 40px var(--red-glow-strong), 0 4px 16px rgba(255,77,42,0.35);
|
|
432
|
+
transition: box-shadow 0.2s, transform 0.15s;
|
|
433
|
+
position: relative;
|
|
434
|
+
z-index: 1;
|
|
435
|
+
}
|
|
436
|
+
.btn-red-glow:hover {
|
|
437
|
+
box-shadow: 0 0 60px rgba(255,77,42,0.35), 0 8px 24px rgba(255,77,42,0.40);
|
|
438
|
+
transform: translateY(-2px);
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/* === FOOTER === */
|
|
442
|
+
footer {
|
|
443
|
+
background: var(--void);
|
|
444
|
+
padding: 48px 0;
|
|
445
|
+
}
|
|
446
|
+
.footer-inner {
|
|
447
|
+
max-width: 1160px;
|
|
448
|
+
margin: 0 auto;
|
|
449
|
+
padding: 0 28px;
|
|
450
|
+
display: flex;
|
|
451
|
+
justify-content: space-between;
|
|
452
|
+
align-items: center;
|
|
453
|
+
flex-wrap: wrap;
|
|
454
|
+
gap: 24px;
|
|
455
|
+
}
|
|
456
|
+
.footer-logo {
|
|
457
|
+
font-family: Impact, 'Arial Black', sans-serif;
|
|
458
|
+
font-size: 1.2rem;
|
|
459
|
+
color: var(--white);
|
|
460
|
+
letter-spacing: -0.02em;
|
|
461
|
+
}
|
|
462
|
+
.footer-logo .red { color: var(--red); }
|
|
463
|
+
.footer-links {
|
|
464
|
+
display: flex;
|
|
465
|
+
gap: 28px;
|
|
466
|
+
flex-wrap: wrap;
|
|
467
|
+
}
|
|
468
|
+
.footer-links a {
|
|
469
|
+
font-family: 'JetBrains Mono', monospace;
|
|
470
|
+
font-size: 0.68rem;
|
|
471
|
+
text-transform: uppercase;
|
|
472
|
+
letter-spacing: 0.1em;
|
|
473
|
+
color: var(--dim);
|
|
474
|
+
text-decoration: none;
|
|
475
|
+
transition: color 0.2s;
|
|
476
|
+
}
|
|
477
|
+
.footer-links a:hover { color: var(--muted); }
|
|
478
|
+
.footer-copy {
|
|
479
|
+
font-family: 'JetBrains Mono', monospace;
|
|
480
|
+
font-size: 0.65rem;
|
|
481
|
+
text-transform: uppercase;
|
|
482
|
+
letter-spacing: 0.08em;
|
|
483
|
+
color: var(--dim);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
/* Intentional grid break */
|
|
487
|
+
.grid-break {
|
|
488
|
+
display: grid;
|
|
489
|
+
grid-template-columns: 1.4fr 1fr;
|
|
490
|
+
gap: 0;
|
|
491
|
+
border-top: 1px solid var(--border);
|
|
492
|
+
}
|
|
493
|
+
.grid-break-main { padding: 48px 28px 48px 0; border-right: 1px solid var(--border); }
|
|
494
|
+
.grid-break-aside { padding: 48px 0 48px 48px; }
|
|
495
|
+
|
|
496
|
+
@media (max-width: 768px) {
|
|
497
|
+
.stats-inner, .ws-features { grid-template-columns: 1fr; }
|
|
498
|
+
.stat-item { border-right: none; border-bottom: 1px solid var(--border); }
|
|
499
|
+
.stat-item:last-child { border-bottom: none; }
|
|
500
|
+
.nav-links { display: none; }
|
|
501
|
+
.grid-break { grid-template-columns: 1fr; }
|
|
502
|
+
.grid-break-main { border-right: none; border-bottom: 1px solid var(--border); padding-right: 0; }
|
|
503
|
+
.grid-break-aside { padding-left: 0; padding-top: 32px; }
|
|
504
|
+
}
|
|
505
|
+
</style>
|
|
506
|
+
</head>
|
|
507
|
+
<body>
|
|
508
|
+
|
|
509
|
+
<!-- NAV -->
|
|
510
|
+
<nav>
|
|
511
|
+
<div class="nav-inner">
|
|
512
|
+
<div class="logo">FORGE<span class="logo-accent">.</span></div>
|
|
513
|
+
<ul class="nav-links">
|
|
514
|
+
<li><a href="#">Platform</a></li>
|
|
515
|
+
<li><a href="#">Pricing</a></li>
|
|
516
|
+
<li><a href="#">Docs</a></li>
|
|
517
|
+
<li><a href="#">Blog</a></li>
|
|
518
|
+
</ul>
|
|
519
|
+
<button class="btn-red">Deploy Now →</button>
|
|
520
|
+
</div>
|
|
521
|
+
</nav>
|
|
522
|
+
|
|
523
|
+
<!-- HERO -->
|
|
524
|
+
<section class="hero">
|
|
525
|
+
<div class="container">
|
|
526
|
+
<div class="overline hero-overline">
|
|
527
|
+
<span class="overline-accent">Infrastructure Platform</span>
|
|
528
|
+
<span> / V3 — Now Generally Available</span>
|
|
529
|
+
</div>
|
|
530
|
+
<h1>EDGE.<br /><span class="red-word">FAST.</span><br />ALWAYS.</h1>
|
|
531
|
+
<p class="hero-sub">Forge is the compute layer the internet runs on. Deploy globally in under 30 seconds. Serve millions without thinking about infrastructure.</p>
|
|
532
|
+
<div class="hero-ctas">
|
|
533
|
+
<button class="btn-red">Start building free</button>
|
|
534
|
+
<button class="btn-ghost-white">Read the docs</button>
|
|
535
|
+
</div>
|
|
536
|
+
|
|
537
|
+
<!-- Code window -->
|
|
538
|
+
<div class="code-window">
|
|
539
|
+
<div class="code-titlebar">
|
|
540
|
+
<div class="cb-dot r"></div>
|
|
541
|
+
<div class="cb-dot y"></div>
|
|
542
|
+
<div class="cb-dot g"></div>
|
|
543
|
+
<div class="cb-filename">forge.config.ts</div>
|
|
544
|
+
<div class="cb-badge">Live · 47 regions</div>
|
|
545
|
+
</div>
|
|
546
|
+
<div class="code-body">
|
|
547
|
+
<span class="c-muted">// Deploy to 47 edge regions in one push</span><br />
|
|
548
|
+
<span class="c-purple">import</span> <span class="c-white">{ forge }</span> <span class="c-purple">from</span> <span class="c-yellow">'@forge/edge'</span><br />
|
|
549
|
+
<br />
|
|
550
|
+
<span class="c-purple">export default</span> <span class="c-blue">forge</span><span class="c-white">.config({</span><br />
|
|
551
|
+
<span class="c-white">regions:</span> <span class="c-yellow">'all'</span><span class="c-white">,</span><br />
|
|
552
|
+
<span class="c-white">runtime:</span> <span class="c-yellow">'edge-v8'</span><span class="c-white">,</span><br />
|
|
553
|
+
<span class="c-white">cache:</span> <span class="c-white">{</span> <span class="c-white">ttl:</span> <span class="c-orange">3600</span><span class="c-white">,</span> <span class="c-white">stale:</span> <span class="c-green">true</span> <span class="c-white">},</span><br />
|
|
554
|
+
<span class="c-white">observability:</span> <span class="c-green">true</span><br />
|
|
555
|
+
<span class="c-white">})</span><br />
|
|
556
|
+
<br />
|
|
557
|
+
<span class="c-dim">$ forge deploy --prod</span><br />
|
|
558
|
+
<span class="c-green">✓ Built in 2.1s · Deployed to 47 regions · 100ms p99</span>
|
|
559
|
+
</div>
|
|
560
|
+
</div>
|
|
561
|
+
</div>
|
|
562
|
+
</section>
|
|
563
|
+
|
|
564
|
+
<!-- STATS ROW -->
|
|
565
|
+
<div class="stats-row">
|
|
566
|
+
<div class="stats-inner">
|
|
567
|
+
<div class="stat-item">
|
|
568
|
+
<span class="stat-num">10<span class="red">M+</span></span>
|
|
569
|
+
<span class="stat-label">Requests / second</span>
|
|
570
|
+
</div>
|
|
571
|
+
<div class="stat-item">
|
|
572
|
+
<span class="stat-num"><<span class="red">12</span>ms</span>
|
|
573
|
+
<span class="stat-label">P99 latency globally</span>
|
|
574
|
+
</div>
|
|
575
|
+
<div class="stat-item">
|
|
576
|
+
<span class="stat-num">99.<span class="red">99</span>%</span>
|
|
577
|
+
<span class="stat-label">Uptime SLA</span>
|
|
578
|
+
</div>
|
|
579
|
+
</div>
|
|
580
|
+
</div>
|
|
581
|
+
|
|
582
|
+
<!-- WHITE SECTION — cinematic cut -->
|
|
583
|
+
<section class="white-section">
|
|
584
|
+
<div class="container">
|
|
585
|
+
<div class="overline" style="margin-bottom: 16px;">
|
|
586
|
+
<span class="overline-accent">Platform capabilities</span>
|
|
587
|
+
</div>
|
|
588
|
+
<div class="white-section-title">The full stack.<br />Zero ops.</div>
|
|
589
|
+
<div class="ws-features">
|
|
590
|
+
<div class="ws-feature">
|
|
591
|
+
<div class="ws-feature-label">Compute / Runtime</div>
|
|
592
|
+
<div class="ws-feature-title">Edge Workers</div>
|
|
593
|
+
<p class="ws-feature-desc">V8 isolates that start in under 1ms. No cold starts. No containers. Your code, running 50ms from every user on earth.</p>
|
|
594
|
+
</div>
|
|
595
|
+
<div class="ws-feature">
|
|
596
|
+
<div class="ws-feature-label">Storage / Data</div>
|
|
597
|
+
<div class="ws-feature-title">Global KV + R2</div>
|
|
598
|
+
<p class="ws-feature-desc">Distributed key-value storage replicated across all 47 regions. Read anywhere, write once, consistent everywhere.</p>
|
|
599
|
+
</div>
|
|
600
|
+
<div class="ws-feature">
|
|
601
|
+
<div class="ws-feature-label">Delivery / CDN</div>
|
|
602
|
+
<div class="ws-feature-title">Smart CDN</div>
|
|
603
|
+
<p class="ws-feature-desc">Automatic cache warming, real-time purge, stale-while-revalidate, and cache analytics — all included, no configuration.</p>
|
|
604
|
+
</div>
|
|
605
|
+
</div>
|
|
606
|
+
</div>
|
|
607
|
+
</section>
|
|
608
|
+
|
|
609
|
+
<!-- TESTIMONIAL -->
|
|
610
|
+
<section class="testimonial-section">
|
|
611
|
+
<div class="container">
|
|
612
|
+
<div class="testimonial-inner">
|
|
613
|
+
<div class="overline" style="margin-bottom: 20px;">
|
|
614
|
+
<span class="overline-accent">// field report</span>
|
|
615
|
+
</div>
|
|
616
|
+
<div class="pull-quote">"Forge cut our<br />global P99 from<br /><span class="red">800ms to 11ms.</span><br />That's the product."</div>
|
|
617
|
+
<div class="quote-author">
|
|
618
|
+
<div class="qa-avatar">JP</div>
|
|
619
|
+
<div>
|
|
620
|
+
<div class="qa-name">James Park</div>
|
|
621
|
+
<div class="qa-role">CTO · Meridian Systems</div>
|
|
622
|
+
</div>
|
|
623
|
+
<div class="qa-company">
|
|
624
|
+
<div class="company-name">Meridian Systems</div>
|
|
625
|
+
<div class="overline">Series B · 40M req/day</div>
|
|
626
|
+
</div>
|
|
627
|
+
</div>
|
|
628
|
+
</div>
|
|
629
|
+
</div>
|
|
630
|
+
</section>
|
|
631
|
+
|
|
632
|
+
<!-- CTA SECTION -->
|
|
633
|
+
<section class="cta-section">
|
|
634
|
+
<div class="container">
|
|
635
|
+
<div class="cta-headline">READY TO<br /><span class="red">BUILD?</span></div>
|
|
636
|
+
<p class="cta-sub">First 100,000 requests free every day. No credit card required.</p>
|
|
637
|
+
<button class="btn-red-glow">Deploy your first app →</button>
|
|
638
|
+
</div>
|
|
639
|
+
</section>
|
|
640
|
+
|
|
641
|
+
<!-- FOOTER -->
|
|
642
|
+
<footer>
|
|
643
|
+
<div class="footer-inner">
|
|
644
|
+
<div class="footer-logo">FORGE<span class="red">.</span></div>
|
|
645
|
+
<div class="footer-links">
|
|
646
|
+
<a href="#">platform</a>
|
|
647
|
+
<a href="#">docs</a>
|
|
648
|
+
<a href="#">pricing</a>
|
|
649
|
+
<a href="#">status</a>
|
|
650
|
+
<a href="#">privacy</a>
|
|
651
|
+
<a href="#">terms</a>
|
|
652
|
+
</div>
|
|
653
|
+
<div class="footer-copy">© 2025 Forge Technologies, Inc.</div>
|
|
654
|
+
</div>
|
|
655
|
+
</footer>
|
|
656
|
+
|
|
657
|
+
</body>
|
|
658
|
+
</html>
|