bet-cli 0.2.0 → 0.3.1
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 +24 -2
- package/dist/commands/edit.js +48 -0
- package/dist/commands/info.js +6 -3
- package/dist/commands/update.js +12 -6
- package/dist/lib/config.js +9 -0
- package/dist/lib/editor.js +97 -0
- package/dist/lib/git.js +14 -8
- package/dist/lib/help.js +15 -3
- package/dist/main.js +17 -15
- package/landing-page/index.html +996 -0
- package/landing-page/vercel.json +25 -0
- package/package.json +1 -1
- package/skills/bet/SKILL.md +129 -0
- package/src/commands/edit.ts +56 -0
- package/src/commands/info.tsx +200 -175
- package/src/commands/update.ts +203 -149
- package/src/lib/config.ts +17 -1
- package/src/lib/editor.ts +131 -0
- package/src/lib/git.ts +20 -10
- package/src/lib/help.ts +28 -15
- package/src/lib/types.ts +2 -0
- package/src/main.ts +3 -1
- package/tests/config.test.ts +71 -0
- package/tests/editor.test.ts +167 -0
|
@@ -0,0 +1,996 @@
|
|
|
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>bet | A local project index for developers</title>
|
|
7
|
+
<meta
|
|
8
|
+
name="description"
|
|
9
|
+
content="bet helps developers search, inspect, and jump between local projects without memorizing paths."
|
|
10
|
+
/>
|
|
11
|
+
<script>
|
|
12
|
+
window.BET_ANALYTICS = window.BET_ANALYTICS || {
|
|
13
|
+
gaMeasurementId: "G-CS4JC3HKS5",
|
|
14
|
+
};
|
|
15
|
+
</script>
|
|
16
|
+
<script>
|
|
17
|
+
(() => {
|
|
18
|
+
const measurementId = window.BET_ANALYTICS?.gaMeasurementId;
|
|
19
|
+
|
|
20
|
+
if (!measurementId || measurementId === "G-XXXXXXXXXX") {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
window.dataLayer = window.dataLayer || [];
|
|
25
|
+
|
|
26
|
+
function gtag() {
|
|
27
|
+
window.dataLayer.push(arguments);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
window.gtag = window.gtag || gtag;
|
|
31
|
+
gtag("js", new Date());
|
|
32
|
+
gtag("config", measurementId);
|
|
33
|
+
|
|
34
|
+
const script = document.createElement("script");
|
|
35
|
+
script.async = true;
|
|
36
|
+
script.src = `https://www.googletagmanager.com/gtag/js?id=${encodeURIComponent(measurementId)}`;
|
|
37
|
+
document.head.appendChild(script);
|
|
38
|
+
|
|
39
|
+
document.addEventListener("DOMContentLoaded", () => {
|
|
40
|
+
document.querySelectorAll("[data-analytics-event]").forEach((element) => {
|
|
41
|
+
element.addEventListener("click", () => {
|
|
42
|
+
window.gtag?.("event", element.dataset.analyticsEvent, {
|
|
43
|
+
cta_label: element.dataset.analyticsLabel,
|
|
44
|
+
cta_location: element.dataset.analyticsLocation,
|
|
45
|
+
link_url: element.getAttribute("href"),
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
})();
|
|
51
|
+
</script>
|
|
52
|
+
<style>
|
|
53
|
+
:root {
|
|
54
|
+
--sand: #f5f0e7;
|
|
55
|
+
--sand-deep: #e2d7c7;
|
|
56
|
+
--stone: #cfc5b7;
|
|
57
|
+
--ink: #121617;
|
|
58
|
+
--ink-soft: #273033;
|
|
59
|
+
--moss: #6d7b52;
|
|
60
|
+
--brass: #b08a45;
|
|
61
|
+
--line: rgba(18, 22, 23, 0.1);
|
|
62
|
+
--panel: rgba(255, 255, 255, 0.62);
|
|
63
|
+
--shadow: 0 24px 60px rgba(18, 22, 23, 0.12);
|
|
64
|
+
--radius-xl: 32px;
|
|
65
|
+
--radius-lg: 24px;
|
|
66
|
+
--radius-md: 16px;
|
|
67
|
+
--max: 1180px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
* {
|
|
71
|
+
box-sizing: border-box;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
html {
|
|
75
|
+
scroll-behavior: smooth;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
body {
|
|
79
|
+
margin: 0;
|
|
80
|
+
font-family:
|
|
81
|
+
"Avenir Next",
|
|
82
|
+
"Segoe UI",
|
|
83
|
+
"Helvetica Neue",
|
|
84
|
+
Arial,
|
|
85
|
+
sans-serif;
|
|
86
|
+
color: var(--ink);
|
|
87
|
+
background:
|
|
88
|
+
radial-gradient(circle at 0% 0%, rgba(176, 138, 69, 0.18), transparent 24%),
|
|
89
|
+
radial-gradient(circle at 85% 10%, rgba(109, 123, 82, 0.16), transparent 28%),
|
|
90
|
+
linear-gradient(180deg, #f9f5ef 0%, #efe8dd 54%, #e8dfd2 100%);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
body::before {
|
|
94
|
+
content: "";
|
|
95
|
+
position: fixed;
|
|
96
|
+
inset: 0;
|
|
97
|
+
pointer-events: none;
|
|
98
|
+
background-image:
|
|
99
|
+
linear-gradient(rgba(18, 22, 23, 0.028) 1px, transparent 1px),
|
|
100
|
+
linear-gradient(90deg, rgba(18, 22, 23, 0.028) 1px, transparent 1px);
|
|
101
|
+
background-size: 34px 34px;
|
|
102
|
+
mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.12));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
img {
|
|
106
|
+
max-width: 100%;
|
|
107
|
+
display: block;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
a {
|
|
111
|
+
color: inherit;
|
|
112
|
+
text-decoration: none;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.page {
|
|
116
|
+
width: min(var(--max), calc(100vw - 32px));
|
|
117
|
+
margin: 0 auto;
|
|
118
|
+
padding: 26px 0 72px;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.mono,
|
|
122
|
+
.nav-links a,
|
|
123
|
+
.eyebrow,
|
|
124
|
+
.pill,
|
|
125
|
+
.meta,
|
|
126
|
+
.terminal,
|
|
127
|
+
.step-index,
|
|
128
|
+
.faq summary,
|
|
129
|
+
code {
|
|
130
|
+
font-family:
|
|
131
|
+
"SFMono-Regular",
|
|
132
|
+
"Menlo",
|
|
133
|
+
"Monaco",
|
|
134
|
+
"Cascadia Mono",
|
|
135
|
+
"Segoe UI Mono",
|
|
136
|
+
monospace;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.nav {
|
|
140
|
+
display: flex;
|
|
141
|
+
align-items: center;
|
|
142
|
+
justify-content: space-between;
|
|
143
|
+
gap: 18px;
|
|
144
|
+
padding: 14px 18px;
|
|
145
|
+
border: 1px solid rgba(255, 255, 255, 0.55);
|
|
146
|
+
border-radius: 999px;
|
|
147
|
+
background: rgba(245, 240, 231, 0.72);
|
|
148
|
+
backdrop-filter: blur(18px);
|
|
149
|
+
box-shadow: 0 12px 28px rgba(18, 22, 23, 0.06);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.brand {
|
|
153
|
+
display: flex;
|
|
154
|
+
align-items: center;
|
|
155
|
+
gap: 12px;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.brand-mark {
|
|
159
|
+
width: 52px;
|
|
160
|
+
height: 52px;
|
|
161
|
+
border-radius: 16px;
|
|
162
|
+
display: grid;
|
|
163
|
+
place-items: center;
|
|
164
|
+
background: var(--ink);
|
|
165
|
+
box-shadow:
|
|
166
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.08),
|
|
167
|
+
0 14px 24px rgba(18, 22, 23, 0.18);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.brand-mark img {
|
|
171
|
+
width: 34px;
|
|
172
|
+
height: 34px;
|
|
173
|
+
object-fit: contain;
|
|
174
|
+
filter: brightness(0) invert(1);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.brand-text {
|
|
178
|
+
display: grid;
|
|
179
|
+
gap: 2px;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.brand-text strong {
|
|
183
|
+
font-size: 0.96rem;
|
|
184
|
+
letter-spacing: 0.05em;
|
|
185
|
+
text-transform: lowercase;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.brand-text span,
|
|
189
|
+
.nav-links a {
|
|
190
|
+
font-size: 0.78rem;
|
|
191
|
+
color: rgba(18, 22, 23, 0.7);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.nav-links {
|
|
195
|
+
display: flex;
|
|
196
|
+
gap: 18px;
|
|
197
|
+
flex-wrap: wrap;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.hero {
|
|
201
|
+
display: grid;
|
|
202
|
+
grid-template-columns: minmax(0, 1.06fr) minmax(320px, 0.94fr);
|
|
203
|
+
gap: 24px;
|
|
204
|
+
margin-top: 24px;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.card {
|
|
208
|
+
position: relative;
|
|
209
|
+
overflow: hidden;
|
|
210
|
+
border: 1px solid rgba(255, 255, 255, 0.55);
|
|
211
|
+
border-radius: var(--radius-xl);
|
|
212
|
+
background: var(--panel);
|
|
213
|
+
backdrop-filter: blur(24px);
|
|
214
|
+
box-shadow: var(--shadow);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.hero-copy {
|
|
218
|
+
padding: 44px;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.hero-copy::after {
|
|
222
|
+
content: "";
|
|
223
|
+
position: absolute;
|
|
224
|
+
right: -90px;
|
|
225
|
+
bottom: -90px;
|
|
226
|
+
width: 280px;
|
|
227
|
+
height: 280px;
|
|
228
|
+
border-radius: 50%;
|
|
229
|
+
background: radial-gradient(circle, rgba(176, 138, 69, 0.18), transparent 66%);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.eyebrow {
|
|
233
|
+
display: inline-flex;
|
|
234
|
+
align-items: center;
|
|
235
|
+
gap: 10px;
|
|
236
|
+
margin-bottom: 16px;
|
|
237
|
+
font-size: 0.78rem;
|
|
238
|
+
letter-spacing: 0.12em;
|
|
239
|
+
text-transform: uppercase;
|
|
240
|
+
color: rgba(18, 22, 23, 0.62);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.eyebrow::before {
|
|
244
|
+
content: "";
|
|
245
|
+
width: 24px;
|
|
246
|
+
height: 1px;
|
|
247
|
+
background: currentColor;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
h1,
|
|
251
|
+
h2,
|
|
252
|
+
h3,
|
|
253
|
+
p {
|
|
254
|
+
margin: 0;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
h1 {
|
|
258
|
+
max-width: 10ch;
|
|
259
|
+
font-size: clamp(3.2rem, 6vw, 5.6rem);
|
|
260
|
+
line-height: 0.92;
|
|
261
|
+
letter-spacing: -0.065em;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
.lede {
|
|
265
|
+
max-width: 42rem;
|
|
266
|
+
margin-top: 18px;
|
|
267
|
+
font-size: 1.1rem;
|
|
268
|
+
line-height: 1.75;
|
|
269
|
+
color: rgba(18, 22, 23, 0.82);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.hero-actions {
|
|
273
|
+
display: flex;
|
|
274
|
+
flex-wrap: wrap;
|
|
275
|
+
gap: 14px;
|
|
276
|
+
margin-top: 28px;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.button {
|
|
280
|
+
display: inline-flex;
|
|
281
|
+
align-items: center;
|
|
282
|
+
justify-content: center;
|
|
283
|
+
min-height: 50px;
|
|
284
|
+
padding: 0 20px;
|
|
285
|
+
border-radius: 999px;
|
|
286
|
+
border: 1px solid transparent;
|
|
287
|
+
font-weight: 700;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
.button-primary {
|
|
291
|
+
background: var(--ink);
|
|
292
|
+
color: var(--sand);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
.button-secondary {
|
|
296
|
+
border-color: rgba(18, 22, 23, 0.14);
|
|
297
|
+
background: rgba(255, 255, 255, 0.44);
|
|
298
|
+
color: var(--ink);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.install-links {
|
|
302
|
+
margin-top: 22px;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.hero-pills {
|
|
306
|
+
display: flex;
|
|
307
|
+
flex-wrap: wrap;
|
|
308
|
+
gap: 10px;
|
|
309
|
+
margin-top: 28px;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
.pill {
|
|
313
|
+
padding: 10px 12px;
|
|
314
|
+
border-radius: 999px;
|
|
315
|
+
border: 1px solid rgba(18, 22, 23, 0.1);
|
|
316
|
+
background: rgba(255, 255, 255, 0.46);
|
|
317
|
+
font-size: 0.75rem;
|
|
318
|
+
color: rgba(18, 22, 23, 0.72);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.hero-demo {
|
|
322
|
+
padding: 24px;
|
|
323
|
+
display: grid;
|
|
324
|
+
gap: 16px;
|
|
325
|
+
background:
|
|
326
|
+
linear-gradient(180deg, rgba(18, 22, 23, 0.96), rgba(18, 22, 23, 0.9)),
|
|
327
|
+
linear-gradient(180deg, rgba(255, 255, 255, 0.08), transparent);
|
|
328
|
+
color: #eef0eb;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.dots {
|
|
332
|
+
display: flex;
|
|
333
|
+
gap: 8px;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
.dots span {
|
|
337
|
+
width: 11px;
|
|
338
|
+
height: 11px;
|
|
339
|
+
border-radius: 999px;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.dots span:nth-child(1) {
|
|
343
|
+
background: #d6745b;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.dots span:nth-child(2) {
|
|
347
|
+
background: #d8a84d;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.dots span:nth-child(3) {
|
|
351
|
+
background: #6d7b52;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
.meta {
|
|
355
|
+
font-size: 0.78rem;
|
|
356
|
+
color: rgba(238, 240, 235, 0.62);
|
|
357
|
+
letter-spacing: 0.08em;
|
|
358
|
+
text-transform: uppercase;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
.terminal-stack {
|
|
362
|
+
display: grid;
|
|
363
|
+
gap: 10px;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.terminal {
|
|
367
|
+
display: grid;
|
|
368
|
+
grid-template-columns: 18px minmax(0, 1fr);
|
|
369
|
+
align-items: center;
|
|
370
|
+
gap: 12px;
|
|
371
|
+
padding: 14px 16px;
|
|
372
|
+
border-radius: 14px;
|
|
373
|
+
background: rgba(255, 255, 255, 0.04);
|
|
374
|
+
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
375
|
+
color: #f8f5ef;
|
|
376
|
+
font-size: 0.92rem;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
.terminal span {
|
|
380
|
+
color: #9cab90;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.terminal code {
|
|
384
|
+
color: inherit;
|
|
385
|
+
font: inherit;
|
|
386
|
+
white-space: nowrap;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.demo-note {
|
|
390
|
+
padding-top: 12px;
|
|
391
|
+
border-top: 1px solid rgba(255, 255, 255, 0.08);
|
|
392
|
+
color: rgba(238, 240, 235, 0.72);
|
|
393
|
+
line-height: 1.65;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
.section {
|
|
397
|
+
margin-top: 24px;
|
|
398
|
+
padding: 30px;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
.section h2 {
|
|
402
|
+
font-size: clamp(1.7rem, 2.5vw, 2.5rem);
|
|
403
|
+
letter-spacing: -0.045em;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.section-intro {
|
|
407
|
+
max-width: 46rem;
|
|
408
|
+
margin-top: 10px;
|
|
409
|
+
color: rgba(18, 22, 23, 0.78);
|
|
410
|
+
line-height: 1.75;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
.three-up,
|
|
414
|
+
.two-up {
|
|
415
|
+
display: grid;
|
|
416
|
+
gap: 16px;
|
|
417
|
+
margin-top: 22px;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
.three-up {
|
|
421
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
.two-up {
|
|
425
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.feature,
|
|
429
|
+
.step,
|
|
430
|
+
.quote,
|
|
431
|
+
.objection,
|
|
432
|
+
.final-panel {
|
|
433
|
+
padding: 22px;
|
|
434
|
+
border-radius: var(--radius-lg);
|
|
435
|
+
border: 1px solid var(--line);
|
|
436
|
+
background: rgba(255, 255, 255, 0.48);
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
.feature h3,
|
|
440
|
+
.step h3,
|
|
441
|
+
.quote h3,
|
|
442
|
+
.objection h3,
|
|
443
|
+
.final-panel h3 {
|
|
444
|
+
margin-bottom: 10px;
|
|
445
|
+
font-size: 1.02rem;
|
|
446
|
+
letter-spacing: -0.03em;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
.feature p,
|
|
450
|
+
.step p,
|
|
451
|
+
.quote p,
|
|
452
|
+
.objection p,
|
|
453
|
+
.final-panel p {
|
|
454
|
+
color: rgba(18, 22, 23, 0.76);
|
|
455
|
+
line-height: 1.7;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
.doc-grid {
|
|
459
|
+
display: grid;
|
|
460
|
+
gap: 16px;
|
|
461
|
+
margin-top: 22px;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
.doc-item {
|
|
465
|
+
padding: 22px;
|
|
466
|
+
border-radius: var(--radius-lg);
|
|
467
|
+
border: 1px solid var(--line);
|
|
468
|
+
background: rgba(255, 255, 255, 0.5);
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
.doc-item h3 {
|
|
472
|
+
margin-bottom: 8px;
|
|
473
|
+
font-size: 1.02rem;
|
|
474
|
+
letter-spacing: -0.03em;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
.doc-item p {
|
|
478
|
+
color: rgba(18, 22, 23, 0.76);
|
|
479
|
+
line-height: 1.7;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
.doc-item .terminal-stack {
|
|
483
|
+
margin-top: 14px;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
.step {
|
|
487
|
+
position: relative;
|
|
488
|
+
padding-top: 54px;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
.step-index {
|
|
492
|
+
position: absolute;
|
|
493
|
+
top: 18px;
|
|
494
|
+
left: 20px;
|
|
495
|
+
color: rgba(18, 22, 23, 0.42);
|
|
496
|
+
font-size: 0.76rem;
|
|
497
|
+
letter-spacing: 0.12em;
|
|
498
|
+
text-transform: uppercase;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
.step .terminal-stack {
|
|
502
|
+
margin-top: 14px;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
.quote {
|
|
506
|
+
background:
|
|
507
|
+
linear-gradient(180deg, rgba(109, 123, 82, 0.08), transparent 100%),
|
|
508
|
+
rgba(255, 255, 255, 0.52);
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
.quote p {
|
|
512
|
+
font-size: 1.05rem;
|
|
513
|
+
color: var(--ink-soft);
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
.quote span {
|
|
517
|
+
display: block;
|
|
518
|
+
margin-top: 14px;
|
|
519
|
+
color: rgba(18, 22, 23, 0.6);
|
|
520
|
+
font-size: 0.88rem;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
.faq {
|
|
524
|
+
margin-top: 22px;
|
|
525
|
+
display: grid;
|
|
526
|
+
gap: 12px;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
.faq details {
|
|
530
|
+
border: 1px solid var(--line);
|
|
531
|
+
border-radius: 18px;
|
|
532
|
+
background: rgba(255, 255, 255, 0.46);
|
|
533
|
+
padding: 18px 20px;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
.faq summary {
|
|
537
|
+
cursor: pointer;
|
|
538
|
+
list-style: none;
|
|
539
|
+
font-size: 0.86rem;
|
|
540
|
+
color: var(--ink);
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
.faq summary::-webkit-details-marker {
|
|
544
|
+
display: none;
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
.faq p {
|
|
548
|
+
margin-top: 12px;
|
|
549
|
+
color: rgba(18, 22, 23, 0.76);
|
|
550
|
+
line-height: 1.7;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
.final {
|
|
554
|
+
display: grid;
|
|
555
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
556
|
+
gap: 18px;
|
|
557
|
+
align-items: center;
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
.footer {
|
|
561
|
+
margin-top: 24px;
|
|
562
|
+
padding: 16px 18px;
|
|
563
|
+
text-align: center;
|
|
564
|
+
color: rgba(18, 22, 23, 0.62);
|
|
565
|
+
font-size: 0.78rem;
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
.reveal {
|
|
569
|
+
opacity: 0;
|
|
570
|
+
transform: translateY(18px);
|
|
571
|
+
animation: fade-up 0.7s ease forwards;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
.delay-1 { animation-delay: 0.08s; }
|
|
575
|
+
.delay-2 { animation-delay: 0.16s; }
|
|
576
|
+
.delay-3 { animation-delay: 0.24s; }
|
|
577
|
+
.delay-4 { animation-delay: 0.32s; }
|
|
578
|
+
|
|
579
|
+
@keyframes fade-up {
|
|
580
|
+
to {
|
|
581
|
+
opacity: 1;
|
|
582
|
+
transform: translateY(0);
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
@media (max-width: 980px) {
|
|
587
|
+
.hero,
|
|
588
|
+
.three-up,
|
|
589
|
+
.two-up,
|
|
590
|
+
.final {
|
|
591
|
+
grid-template-columns: 1fr;
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
@media (max-width: 720px) {
|
|
596
|
+
.page {
|
|
597
|
+
width: min(calc(100vw - 20px), var(--max));
|
|
598
|
+
padding-top: 10px;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
.nav {
|
|
602
|
+
flex-direction: column;
|
|
603
|
+
align-items: flex-start;
|
|
604
|
+
border-radius: 28px;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
.hero-copy,
|
|
608
|
+
.hero-demo,
|
|
609
|
+
.section {
|
|
610
|
+
padding: 22px;
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
h1 {
|
|
614
|
+
max-width: 100%;
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
</style>
|
|
618
|
+
</head>
|
|
619
|
+
<body>
|
|
620
|
+
<div class="page">
|
|
621
|
+
<header class="nav reveal">
|
|
622
|
+
<div class="brand">
|
|
623
|
+
<div class="brand-mark" aria-label="bet logo">
|
|
624
|
+
<img
|
|
625
|
+
src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/Phoenician_beth.svg/2000px-Phoenician_beth.svg.png"
|
|
626
|
+
alt=""
|
|
627
|
+
/>
|
|
628
|
+
</div>
|
|
629
|
+
<div class="brand-text">
|
|
630
|
+
<strong>bet</strong>
|
|
631
|
+
<span>local project index</span>
|
|
632
|
+
</div>
|
|
633
|
+
</div>
|
|
634
|
+
<nav class="nav-links">
|
|
635
|
+
<a
|
|
636
|
+
href="#why"
|
|
637
|
+
data-analytics-event="cta_clicked"
|
|
638
|
+
data-analytics-label="why_bet_nav"
|
|
639
|
+
data-analytics-location="header_nav"
|
|
640
|
+
>Why bet</a
|
|
641
|
+
>
|
|
642
|
+
<a
|
|
643
|
+
href="#how"
|
|
644
|
+
data-analytics-event="cta_clicked"
|
|
645
|
+
data-analytics-label="how_it_works_nav"
|
|
646
|
+
data-analytics-location="header_nav"
|
|
647
|
+
>How it works</a
|
|
648
|
+
>
|
|
649
|
+
<a
|
|
650
|
+
href="#faq"
|
|
651
|
+
data-analytics-event="cta_clicked"
|
|
652
|
+
data-analytics-label="faq_nav"
|
|
653
|
+
data-analytics-location="header_nav"
|
|
654
|
+
>FAQ</a
|
|
655
|
+
>
|
|
656
|
+
</nav>
|
|
657
|
+
</header>
|
|
658
|
+
|
|
659
|
+
<section class="hero">
|
|
660
|
+
<article class="card hero-copy reveal delay-1">
|
|
661
|
+
<div class="eyebrow">Developer productivity CLI</div>
|
|
662
|
+
<h1>Search, inspect, and jump between local projects fast.</h1>
|
|
663
|
+
<p class="lede">
|
|
664
|
+
bet gives you a fast way to find the right repo, inspect it, and jump into it
|
|
665
|
+
without memorizing paths or digging through a crowded <code>~/code</code> folder.
|
|
666
|
+
</p>
|
|
667
|
+
<div class="hero-actions">
|
|
668
|
+
<a
|
|
669
|
+
class="button button-primary"
|
|
670
|
+
href="#install"
|
|
671
|
+
data-analytics-event="cta_clicked"
|
|
672
|
+
data-analytics-label="install_bet_hero"
|
|
673
|
+
data-analytics-location="hero"
|
|
674
|
+
>Install bet</a
|
|
675
|
+
>
|
|
676
|
+
<a
|
|
677
|
+
class="button button-secondary"
|
|
678
|
+
href="#how"
|
|
679
|
+
data-analytics-event="cta_clicked"
|
|
680
|
+
data-analytics-label="see_how_it_works_hero"
|
|
681
|
+
data-analytics-location="hero"
|
|
682
|
+
>See how it works</a
|
|
683
|
+
>
|
|
684
|
+
</div>
|
|
685
|
+
<div class="hero-pills">
|
|
686
|
+
<span class="pill">local project index</span>
|
|
687
|
+
<span class="pill">shell-native workflow</span>
|
|
688
|
+
<span class="pill">lightweight setup</span>
|
|
689
|
+
</div>
|
|
690
|
+
</article>
|
|
691
|
+
|
|
692
|
+
<aside class="card hero-demo reveal delay-2">
|
|
693
|
+
<div class="dots" aria-hidden="true">
|
|
694
|
+
<span></span><span></span><span></span>
|
|
695
|
+
</div>
|
|
696
|
+
<div class="meta">core workflow</div>
|
|
697
|
+
<div class="terminal-stack">
|
|
698
|
+
<div class="terminal"><span>$</span><code>bet update --roots "$HOME/code,$HOME/work"</code></div>
|
|
699
|
+
<div class="terminal"><span>$</span><code>bet search payments</code></div>
|
|
700
|
+
<div class="terminal"><span>$</span><code>bet info marketing-site</code></div>
|
|
701
|
+
<div class="terminal"><span>$</span><code>bet go api</code></div>
|
|
702
|
+
</div>
|
|
703
|
+
<p class="demo-note">
|
|
704
|
+
Point bet at the places where you keep projects, build the index once, and use it
|
|
705
|
+
every day when you need to switch context quickly.
|
|
706
|
+
</p>
|
|
707
|
+
</aside>
|
|
708
|
+
</section>
|
|
709
|
+
|
|
710
|
+
<section class="card section reveal delay-2" id="why">
|
|
711
|
+
<div class="eyebrow">Why bet</div>
|
|
712
|
+
<h2>Your machine probably has more projects than your folder structure can handle.</h2>
|
|
713
|
+
<p class="section-intro">
|
|
714
|
+
As your local workspace grows, simple navigation gets slower. Repos end up spread
|
|
715
|
+
across work, client, and side-project folders. bet gives you one fast interface for
|
|
716
|
+
finding what you need and getting into it.
|
|
717
|
+
</p>
|
|
718
|
+
<div class="three-up">
|
|
719
|
+
<article class="feature">
|
|
720
|
+
<h3>Stop guessing paths</h3>
|
|
721
|
+
<p>
|
|
722
|
+
Search and jump by project slug instead of remembering exactly where a repo lives.
|
|
723
|
+
</p>
|
|
724
|
+
</article>
|
|
725
|
+
<article class="feature">
|
|
726
|
+
<h3>Keep local work organized</h3>
|
|
727
|
+
<p>
|
|
728
|
+
Define your roots once, scan them, and treat your machine like a structured workspace.
|
|
729
|
+
</p>
|
|
730
|
+
</article>
|
|
731
|
+
<article class="feature">
|
|
732
|
+
<h3>Stay in the terminal</h3>
|
|
733
|
+
<p>
|
|
734
|
+
Use a shell-native workflow that fits how developers already work instead of forcing a new system.
|
|
735
|
+
</p>
|
|
736
|
+
</article>
|
|
737
|
+
</div>
|
|
738
|
+
</section>
|
|
739
|
+
|
|
740
|
+
<section class="card section reveal delay-3" id="how">
|
|
741
|
+
<div class="eyebrow">How it works</div>
|
|
742
|
+
<h2>Set it up once. Use it every day.</h2>
|
|
743
|
+
<p class="section-intro">
|
|
744
|
+
bet is intentionally simple. You point it at the directories where you keep projects,
|
|
745
|
+
let it build the index, and then use focused commands to search, inspect, and jump.
|
|
746
|
+
</p>
|
|
747
|
+
<div class="three-up">
|
|
748
|
+
<article class="step">
|
|
749
|
+
<div class="step-index">Step 01</div>
|
|
750
|
+
<h3>Index your roots</h3>
|
|
751
|
+
<p>
|
|
752
|
+
Run <code>bet update --roots "$HOME/code,$HOME/work"</code> to scan the places
|
|
753
|
+
where you keep your projects.
|
|
754
|
+
</p>
|
|
755
|
+
</article>
|
|
756
|
+
<article class="step">
|
|
757
|
+
<div class="step-index">Step 02</div>
|
|
758
|
+
<h3>Find what you need</h3>
|
|
759
|
+
<p>
|
|
760
|
+
Use commands like <code>bet list</code>, <code>bet search api</code>, and
|
|
761
|
+
<code>bet info payments</code> to locate the right project fast.
|
|
762
|
+
</p>
|
|
763
|
+
</article>
|
|
764
|
+
<article class="step">
|
|
765
|
+
<div class="step-index">Step 03</div>
|
|
766
|
+
<h3>Jump into the work</h3>
|
|
767
|
+
<p>
|
|
768
|
+
Add shell integration once, then use <code>bet go <slug></code> to move into
|
|
769
|
+
projects without breaking your flow.
|
|
770
|
+
</p>
|
|
771
|
+
</article>
|
|
772
|
+
</div>
|
|
773
|
+
</section>
|
|
774
|
+
|
|
775
|
+
<section class="card section reveal delay-3">
|
|
776
|
+
<div class="eyebrow">Functionality</div>
|
|
777
|
+
<h2>Common tasks, shown as commands.</h2>
|
|
778
|
+
<p class="section-intro">
|
|
779
|
+
Think of bet as a focused command set for local project navigation. These are the
|
|
780
|
+
core workflows most users need day to day.
|
|
781
|
+
</p>
|
|
782
|
+
<div class="doc-grid">
|
|
783
|
+
<article class="doc-item">
|
|
784
|
+
<h3>Index the directories where you keep code</h3>
|
|
785
|
+
<p>
|
|
786
|
+
Run this the first time to tell bet where your projects live.
|
|
787
|
+
</p>
|
|
788
|
+
<div class="terminal-stack">
|
|
789
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
790
|
+
<span>$</span><code>bet update --roots "$HOME/code,$HOME/work"</code>
|
|
791
|
+
</div>
|
|
792
|
+
</div>
|
|
793
|
+
</article>
|
|
794
|
+
<article class="doc-item">
|
|
795
|
+
<h3>List everything bet has indexed</h3>
|
|
796
|
+
<p>
|
|
797
|
+
Use this when you want a quick view of all known projects.
|
|
798
|
+
</p>
|
|
799
|
+
<div class="terminal-stack">
|
|
800
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
801
|
+
<span>$</span><code>bet list</code>
|
|
802
|
+
</div>
|
|
803
|
+
</div>
|
|
804
|
+
</article>
|
|
805
|
+
<article class="doc-item">
|
|
806
|
+
<h3>Search for a project by name</h3>
|
|
807
|
+
<p>
|
|
808
|
+
Use fuzzy search when you know part of the repo name but not the exact slug.
|
|
809
|
+
</p>
|
|
810
|
+
<div class="terminal-stack">
|
|
811
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
812
|
+
<span>$</span><code>bet search api</code>
|
|
813
|
+
</div>
|
|
814
|
+
</div>
|
|
815
|
+
</article>
|
|
816
|
+
<article class="doc-item">
|
|
817
|
+
<h3>Inspect a project before you open it</h3>
|
|
818
|
+
<p>
|
|
819
|
+
Check metadata or print the absolute path when you want to confirm you have the right
|
|
820
|
+
project.
|
|
821
|
+
</p>
|
|
822
|
+
<div class="terminal-stack">
|
|
823
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
824
|
+
<span>$</span><code>bet info marketing-site</code>
|
|
825
|
+
</div>
|
|
826
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
827
|
+
<span>$</span><code>bet path marketing-site</code>
|
|
828
|
+
</div>
|
|
829
|
+
</div>
|
|
830
|
+
</article>
|
|
831
|
+
<article class="doc-item">
|
|
832
|
+
<h3>Jump into a project from your shell</h3>
|
|
833
|
+
<p>
|
|
834
|
+
After enabling shell integration (add <code></code>eval "$(bet shell)"</code> to your shell rc file), use <code>bet go</code> to change directly into the
|
|
835
|
+
project directory.
|
|
836
|
+
</p>
|
|
837
|
+
<div class="terminal-stack">
|
|
838
|
+
|
|
839
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
840
|
+
<span>$</span><code>bet go marketing-site</code>
|
|
841
|
+
</div>
|
|
842
|
+
</div>
|
|
843
|
+
</article>
|
|
844
|
+
<article class="doc-item">
|
|
845
|
+
<h3>Open a project in your editor</h3>
|
|
846
|
+
<p>
|
|
847
|
+
Launch the selected project with your configured editor or your system default app.
|
|
848
|
+
</p>
|
|
849
|
+
<div class="terminal-stack">
|
|
850
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
851
|
+
<span>$</span><code>bet edit marketing-site</code>
|
|
852
|
+
</div>
|
|
853
|
+
</div>
|
|
854
|
+
</article>
|
|
855
|
+
<article class="doc-item">
|
|
856
|
+
<h3>Keep the index up to date automatically</h3>
|
|
857
|
+
<p>
|
|
858
|
+
If you want bet to refresh itself on a schedule, install a cron update interval.
|
|
859
|
+
</p>
|
|
860
|
+
<div class="terminal-stack">
|
|
861
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
862
|
+
<span>$</span><code>bet update --cron 1h</code>
|
|
863
|
+
</div>
|
|
864
|
+
</div>
|
|
865
|
+
</article>
|
|
866
|
+
</div>
|
|
867
|
+
</section>
|
|
868
|
+
|
|
869
|
+
<section class="card section reveal delay-4" id="faq">
|
|
870
|
+
<div class="eyebrow">FAQ</div>
|
|
871
|
+
<h2>Answer the obvious objections early.</h2>
|
|
872
|
+
<p class="section-intro">
|
|
873
|
+
Developers already have workarounds. The page should acknowledge that and explain why bet
|
|
874
|
+
is still useful.
|
|
875
|
+
</p>
|
|
876
|
+
<div class="faq">
|
|
877
|
+
<details open>
|
|
878
|
+
<summary>I already use <code>cd</code>, <code>find</code>, or <code>fzf</code>.</summary>
|
|
879
|
+
<p>
|
|
880
|
+
bet is not trying to replace the shell. It gives frequent project navigation a
|
|
881
|
+
dedicated, repeatable interface so you spend less time improvising path lookup.
|
|
882
|
+
</p>
|
|
883
|
+
</details>
|
|
884
|
+
<details>
|
|
885
|
+
<summary>I do not want another tool to maintain.</summary>
|
|
886
|
+
<p>
|
|
887
|
+
The setup is lightweight: define roots, run update, and use the index. The value is
|
|
888
|
+
in removing daily friction, not adding process.
|
|
889
|
+
</p>
|
|
890
|
+
</details>
|
|
891
|
+
<details>
|
|
892
|
+
<summary>My folders are already fairly organized.</summary>
|
|
893
|
+
<p>
|
|
894
|
+
bet becomes more valuable as project count grows or work spreads across multiple roots.
|
|
895
|
+
Even tidy systems benefit from faster search, inspect, and jump workflows.
|
|
896
|
+
</p>
|
|
897
|
+
</details>
|
|
898
|
+
</div>
|
|
899
|
+
</section>
|
|
900
|
+
|
|
901
|
+
<section class="card section reveal delay-4" id="install">
|
|
902
|
+
<article class="final-panel">
|
|
903
|
+
<div class="eyebrow">Install</div>
|
|
904
|
+
<h2>Install bet in three steps.</h2>
|
|
905
|
+
<p class="section-intro">
|
|
906
|
+
Install the CLI, build your project index, then enable shell integration so
|
|
907
|
+
<code>bet go</code> can drop you into a project instantly.
|
|
908
|
+
</p>
|
|
909
|
+
<div class="doc-grid" style="margin-top: 22px;">
|
|
910
|
+
<article class="step">
|
|
911
|
+
<div class="step-index">Step 01</div>
|
|
912
|
+
<h3>Install the CLI</h3>
|
|
913
|
+
<p>Use your preferred package manager.</p>
|
|
914
|
+
<div class="terminal-stack">
|
|
915
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
916
|
+
<span>$</span><code>pnpm add -g bet-cli</code>
|
|
917
|
+
</div>
|
|
918
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
919
|
+
<span>$</span><code>npm install -g bet-cli</code>
|
|
920
|
+
</div>
|
|
921
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
922
|
+
<span>$</span><code>yarn global add bet-cli</code>
|
|
923
|
+
</div>
|
|
924
|
+
<!--
|
|
925
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
926
|
+
<span>$</span><code>brew install bet</code>
|
|
927
|
+
</div>
|
|
928
|
+
-->
|
|
929
|
+
</div>
|
|
930
|
+
</article>
|
|
931
|
+
|
|
932
|
+
<article class="step">
|
|
933
|
+
<div class="step-index">Step 02</div>
|
|
934
|
+
<h3>Initialize your project index</h3>
|
|
935
|
+
<p>
|
|
936
|
+
Point bet at the directories where you keep code. If you want bet to refresh the
|
|
937
|
+
index automatically, add the optional cron command after the initial setup.
|
|
938
|
+
</p>
|
|
939
|
+
<div class="terminal-stack">
|
|
940
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
941
|
+
<span>$</span><code>bet update --roots "$HOME/code,$HOME/work"</code>
|
|
942
|
+
</div>
|
|
943
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
944
|
+
<span>#</span><code>optional cron for indexing</code>
|
|
945
|
+
<span>$</span><code>bet update --cron 1h</code>
|
|
946
|
+
</div>
|
|
947
|
+
</div>
|
|
948
|
+
</article>
|
|
949
|
+
|
|
950
|
+
<article class="step">
|
|
951
|
+
<div class="step-index">Step 03</div>
|
|
952
|
+
<h3>Enable shell integration and jump in</h3>
|
|
953
|
+
<p>
|
|
954
|
+
Add the shell snippet to your rc file, reload your shell, and use
|
|
955
|
+
<code>bet go</code> to move directly into a project.
|
|
956
|
+
</p>
|
|
957
|
+
<div class="terminal-stack">
|
|
958
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
959
|
+
<span>$</span><code>echo 'eval "$(bet shell)"' >> ~/.zshrc</code>
|
|
960
|
+
</div>
|
|
961
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
962
|
+
<span>$</span><code>source ~/.zshrc</code>
|
|
963
|
+
</div>
|
|
964
|
+
<div class="terminal" style="background: rgba(18, 22, 23, 0.92); border-color: rgba(255, 255, 255, 0.06);">
|
|
965
|
+
<span>$</span><code>bet go marketing-site</code>
|
|
966
|
+
</div>
|
|
967
|
+
</div>
|
|
968
|
+
</article>
|
|
969
|
+
</div>
|
|
970
|
+
<div class="hero-actions install-links">
|
|
971
|
+
<a
|
|
972
|
+
class="button button-primary"
|
|
973
|
+
href="https://github.com/kenzic/bet-cli"
|
|
974
|
+
data-analytics-event="cta_clicked"
|
|
975
|
+
data-analytics-label="view_on_github_final"
|
|
976
|
+
data-analytics-location="install_section"
|
|
977
|
+
>View on GitHub</a
|
|
978
|
+
>
|
|
979
|
+
<a
|
|
980
|
+
class="button button-secondary"
|
|
981
|
+
href="https://www.npmjs.com/package/bet-cli"
|
|
982
|
+
data-analytics-event="cta_clicked"
|
|
983
|
+
data-analytics-label="view_on_npm_final"
|
|
984
|
+
data-analytics-location="install_section"
|
|
985
|
+
>View on npm</a
|
|
986
|
+
>
|
|
987
|
+
</div>
|
|
988
|
+
</article>
|
|
989
|
+
</section>
|
|
990
|
+
|
|
991
|
+
<div class="footer mono reveal delay-4">
|
|
992
|
+
bet is an open-source CLI for developers who want a faster way to navigate local projects.
|
|
993
|
+
</div>
|
|
994
|
+
</div>
|
|
995
|
+
</body>
|
|
996
|
+
</html>
|