Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
461 lines (446 loc) · 65.7 KB
/
Copy pathindex.html
File metadata and controls
461 lines (446 loc) · 65.7 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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bitcoin Developer Workshops, Cohorts & Fellowships | Code Orange</title>
<meta name="description" content="Code Orange is a Bitcoin developer school for hands-on workshops, technical cohorts, open-source contributor training, and fellowships.">
<link rel="canonical" href="https://codeorange.dev/">
<meta name="theme-color" content="#F7931A">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Code Orange Dev School">
<meta property="og:url" content="https://codeorange.dev/">
<meta property="og:title" content="Bitcoin Developer Workshops, Cohorts & Fellowships | Code Orange">
<meta property="og:description" content="Hands-on Bitcoin workshops, technical cohorts, open-source contributor training, and fellowships.">
<meta property="og:image" content="https://codeorange.dev/assets/og-codeorange-workshop.jpg">
<meta property="og:image:secure_url" content="https://codeorange.dev/assets/og-codeorange-workshop.jpg">
<meta property="og:image:type" content="image/jpeg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="Code Orange Dev School Bitcoin workshop">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Bitcoin Developer Workshops, Cohorts & Fellowships | Code Orange">
<meta name="twitter:description" content="Hands-on Bitcoin workshops, technical cohorts, open-source contributor training, and fellowships.">
<meta name="twitter:image" content="https://codeorange.dev/assets/og-codeorange-workshop.jpg">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Plus+Jakarta+Sans:wght@500;600;700;800&family=Instrument+Serif:ital@1&display=swap" rel="stylesheet">
<link rel="preload" as="image" href="/assets/new-workshops/workshop-nodes-miners.jpg">
<script src="/assets/lazy-video.js?v=20260903a" defer></script>
<link rel="icon" type="image/svg+xml" href="/assets/favicon-co.svg">
<script type="application/ld+json">{"@context":"https://schema.org","@type":"EducationalOrganization","name":"Code Orange Dev School","url":"https://codeorange.dev","email":"hello@codeorange.dev","description":"Bitcoin developer workshops, technical cohorts, open-source contributor training, and fellowships for builders.","sameAs":["https://github.com/code-orange-dev","https://x.com/CodeOrangeDevs","https://www.instagram.com/codeorangedevs","https://njump.me/npub1gxqyeea3xspkd68mxlxsvvk3gdzdd555u504ynwpdj0ghg503mvq2gydt0"]}</script>
<link rel="stylesheet" href="/assets/theme.css?v=20261015d">
<link rel="stylesheet" href="/assets/co-calendar.css?v=20261012a">
<script src="/assets/co-calendar.js?v=20261015a" defer></script>
<script src="/assets/site-menu.js?v=20261004b" defer></script>
<style>
#static-homepage .co-upnext { padding: 34px 0 6px; }
#static-homepage .co-upnext-head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
#static-homepage .co-upnext-head p { margin: 0; color: #F7931A; font: 700 12px "Plus Jakarta Sans", monospace; letter-spacing: .16em; text-transform: uppercase; }
#static-homepage .co-upnext-head a { color: #B8B8B8; font-size: 14px; text-decoration: none; }
#static-homepage .co-upnext-head a:hover { color: #F7931A; }
#static-homepage .co-upnext-list { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 14px; }
#static-homepage .co-upnext-card { display: flex; gap: 16px; align-items: center; padding: 16px 18px; border: 1px solid rgba(255,255,255,.1); border-radius: 18px; background: rgba(18,18,18,.72); color: #F5F5F5; text-decoration: none; transition: border-color .2s, transform .2s; }
#static-homepage .co-upnext-card:hover { border-color: rgba(247,147,26,.55); transform: translateY(-2px); }
#static-homepage .co-upnext-date { flex: 0 0 58px; display: flex; flex-direction: column; align-items: center; padding: 8px 0; border-radius: 14px; background: rgba(247,147,26,.12); color: #F5F5F5; font-size: 24px; font-weight: 700; line-height: 1.05; }
#static-homepage .co-upnext-date b, #static-homepage .co-upnext-date i { color: #F7931A; font: 700 10px "Plus Jakarta Sans", monospace; font-style: normal; letter-spacing: .12em; text-transform: uppercase; }
#static-homepage .co-upnext-text { min-width: 0; }
#static-homepage .co-upnext-text strong { display: block; font-size: 16px; font-weight: 600; line-height: 1.3; }
#static-homepage .co-upnext-text span, #static-homepage .co-upnext-text small { display: block; margin-top: 4px; color: #9A9A9A; font-size: 13px; }
#static-homepage .co-upnext-text em { display: inline-block; margin-bottom: 4px; padding: 2px 8px; border-radius: 99px; background: #F7931A; color: #0A0A0A; font: 700 10px "Plus Jakarta Sans", monospace; font-style: normal; letter-spacing: .1em; text-transform: uppercase; }
@media (max-width: 900px) { #static-homepage .co-upnext-list { grid-template-columns: minmax(0,1fr); } }
</style>
<script src="/assets/co-upnext.js?v=2" defer></script>
</head>
<body>
<main id="static-homepage">
<style>
html, body { margin: 0; padding: 0; min-height: 100%; overflow-x: hidden; background: #0A0A0A; }
#static-homepage { background: #0A0A0A; color: #F5F5F5; font-family: "Inter", system-ui, sans-serif; min-height: 100vh; overflow-x: hidden; }
#static-homepage * { box-sizing: border-box; }
#static-homepage img, #static-homepage video { max-width: 100%; }
#static-homepage a { color: inherit; }
#static-homepage .co-wrap { width: min(1240px, calc(100% - 40px)); margin: 0 auto; }
#static-homepage .co-band { border-bottom: 1px solid rgba(255,255,255,.08); }
#static-homepage .co-eyebrow { margin: 0 0 16px; color: #F7931A; font: 700 12px/1.4 "Plus Jakarta Sans", monospace; letter-spacing: .14em; text-transform: uppercase; }
#static-homepage h1, #static-homepage h2, #static-homepage h3 { font-family: "Inter", system-ui, sans-serif; font-weight: 400; line-height: 1.08; }
#static-homepage h1 { max-width: 850px; margin: 0; font-size: clamp(42px, 6vw, 72px); }
#static-homepage h2 { max-width: 760px; margin: 0; font-size: clamp(31px, 4vw, 52px); }
#static-homepage h3 { margin: 0; font-size: 22px; }
#static-homepage p { color: #B8B8B8; line-height: 1.65; }
#static-homepage .co-announce { display: flex; align-items: stretch; justify-content: center; background: #F7931A; color: #0A0A0A; font: 700 12px/1.4 "Plus Jakarta Sans", monospace; text-align: center; }
#static-homepage .co-announce a { display: flex; align-items: center; justify-content: center; padding: 10px 18px; color: inherit; text-decoration: none; }
#static-homepage .co-announce a + a { border-left: 1px solid rgba(10,10,10,.24); }
#static-homepage .co-announce a:hover { background: rgba(255,255,255,.2); }
#static-homepage .co-nav { display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 82px; }
#static-homepage .co-nav img { width: 200px; height: auto; flex: 0 0 auto; }
#static-homepage .co-nav > a:first-of-type { flex: 0 0 auto; }
#static-homepage .co-links, #static-homepage .co-actions { display: flex; flex-wrap: nowrap; align-items: center; gap: 10px; }
#static-homepage .co-links a { color: #B8B8B8; font-size: 14px; text-decoration: none; }
#static-homepage .co-mobile-menu { display: none; }
#static-homepage .co-button { display: inline-block; padding: 13px 20px; border: 1px solid rgba(255,255,255,.16); border-radius: 8px; font-weight: 700; text-decoration: none; }
#static-homepage .co-button.primary { border-color: #F7931A; background: #F7931A; color: #0A0A0A; }
/* ── CTA + polish ── */
#static-homepage .co-button { transition: transform 140ms, box-shadow 140ms, background 140ms, border-color 140ms; }
#static-homepage .co-button:hover { transform: translateY(-2px); }
#static-homepage .co-button.primary:hover { background: #FFB347; box-shadow: 0 12px 32px rgba(247,147,26,.35); }
#static-homepage .co-button.co-xl { padding: 19px 38px; font-size: 18px; border-radius: 10px; }
#static-homepage a:focus-visible, #static-homepage summary:focus-visible { outline: 2px solid #F7931A; outline-offset: 3px; border-radius: 4px; }
#static-homepage details summary { cursor: pointer; transition: color 120ms; }
#static-homepage details summary:hover { color: #F7931A; }
#static-homepage .co-hero { position: relative; display: flex; align-items: center; min-height: calc(100svh - 126px); overflow: hidden; padding: 88px 0 68px; background: #0A0A0A; }
#static-homepage .co-hero-video { position: absolute; inset: 0; z-index: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; opacity: .92; }
#static-homepage .co-hero:after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(10,10,10,.68), rgba(10,10,10,.88)); pointer-events: none; }
#static-homepage .co-hero:before { content: ""; position: absolute; inset: 0; background: linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px), linear-gradient(180deg, rgba(10,10,10,.74), rgba(10,10,10,.88)), url("/assets/new-workshops/workshop-nodes-miners.webp"); background-size: 48px 48px, 48px 48px, auto, cover; background-position: 0 0, 0 0, center, center; opacity: .92; }
#static-homepage .co-hero .co-wrap { position: relative; z-index: 2; }
#static-homepage .co-mb-card { display: flex; align-items: center; gap: 16px; max-width: 520px; margin-top: 26px; padding: 12px 18px 12px 12px; border: 1px solid rgba(247,147,26,.45); border-radius: 16px; background: rgba(20,20,20,.78); backdrop-filter: blur(6px); color: #F5F5F5; text-decoration: none; transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease; }
#static-homepage .co-mb-card:hover { transform: translateY(-2px); border-color: #F7931A; box-shadow: 0 12px 30px rgba(247,147,26,.18); }
#static-homepage .co-mb-card .co-mb-icon { display: grid; place-items: center; width: 54px; height: 54px; flex: none; border-radius: 12px; background: linear-gradient(145deg, #F7931A, #C2620A); color: #0a0a0a; font-size: 30px; font-weight: 800; box-shadow: 0 6px 16px rgba(0,0,0,.5); }
#static-homepage .co-mb-card span { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
#static-homepage .co-mb-card em { font: 700 11px/1.3 "Plus Jakarta Sans", monospace; font-style: normal; letter-spacing: .08em; text-transform: uppercase; color: #F7931A; }
#static-homepage .co-mb-card b { font-size: 17px; line-height: 1.25; }
#static-homepage .co-mb-card small { font-size: 13px; color: rgba(255,255,255,.62); }
#static-homepage .co-mb-card i { margin-left: auto; flex: none; display: grid; place-items: center; width: 34px; height: 34px; border-radius: 999px; background: #F7931A; color: #0a0a0a; font-style: normal; font-weight: 800; }
#static-homepage .co-hero-grid { display: grid; grid-template-columns: minmax(0, 1.04fr) minmax(320px, .86fr); gap: 54px; align-items: center; }
#static-homepage .co-lead { max-width: 710px; margin: 24px 0 30px; font-size: 18px; }
#static-homepage .co-terminal { overflow: hidden; border: 1px solid rgba(255,255,255,.1); border-radius: 20px; background: #0F0F0F; box-shadow: 0 20px 60px rgba(0,0,0,.45); }
#static-homepage .co-terminal-top { display: flex; align-items: center; gap: 8px; padding: 14px 18px; border-bottom: 1px solid rgba(255,255,255,.08); background: #141414; }
#static-homepage .co-dot { width: 12px; height: 12px; border-radius: 50%; }
#static-homepage .co-prompt { margin-left: 10px; color: #858585; font: 500 12px/1 "Plus Jakarta Sans", monospace; }
#static-homepage .co-terminal-body { min-height: 264px; padding: 24px 24px 28px; font: 400 14px/1.9 "Plus Jakarta Sans", monospace; }
#static-homepage .co-terminal-body p { margin: 0; }
#static-homepage .co-terminal-body ol { margin: 0; padding-left: 22px; color: #B8B8B8; }
#static-homepage .co-terminal-body li { padding: 2px 0; }
#static-homepage .co-cursor { display: inline-block; width: 8px; height: 16px; margin-left: 4px; background: #F7931A; vertical-align: -3px; }
#static-homepage .co-section { padding: 88px 0; }
#static-homepage .co-photo-section { position: relative; overflow: hidden; isolation: isolate; }
#static-homepage .co-photo-section:before { content: ""; position: absolute; inset: 0; z-index: -1; background-image: linear-gradient(180deg, rgba(10,10,10,.76), rgba(10,10,10,.92)), var(--co-bg); background-size: cover; background-position: var(--co-bg-pos, center); }
#static-homepage .co-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; margin-top: 34px; }
#static-homepage .co-card { position: relative; display: flex; min-height: 210px; flex-direction: column; padding: 24px 54px 24px 24px; border: 1px solid rgba(255,255,255,.1); border-radius: 16px; background: linear-gradient(145deg, #1A1A1A, #141414); color: #F5F5F5; text-decoration: none; box-shadow: 0 10px 24px rgba(0,0,0,.14); transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease; }
#static-homepage .co-card:after { content: "→"; position: absolute; right: 22px; bottom: 21px; display: grid; width: 30px; height: 30px; place-items: center; border: 1px solid rgba(247,147,26,.48); border-radius: 50%; color: #F7931A; font-size: 18px; transition: transform 160ms ease, background 160ms ease, color 160ms ease; }
#static-homepage .co-card:hover { transform: translateY(-4px); border-color: rgba(247,147,26,.72); box-shadow: 0 20px 38px rgba(0,0,0,.3); }
#static-homepage .co-card:hover:after { transform: translateX(3px); background: #F7931A; color: #0A0A0A; }
#static-homepage .co-card span { color: #F7931A; font: 700 11px/1.35 "Plus Jakarta Sans", monospace; letter-spacing: .07em; text-transform: uppercase; }
#static-homepage .co-card h3 { margin: 14px 0 0; font-size: 21px; }
#static-homepage .co-card p { margin: 12px 0 0; color: #B8B8B8; font-size: 14px; line-height: 1.55; }
#static-homepage .co-event-preview { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 30px; }
#static-homepage .co-event-preview a { display: flex; min-height: 188px; flex-direction: column; padding: 22px; border: 1px solid rgba(247,147,26,.3); border-radius: 16px; background: linear-gradient(135deg, rgba(247,147,26,.15), rgba(20,20,20,.96) 58%); color: #F5F5F5; text-decoration: none; box-shadow: 0 12px 30px rgba(0,0,0,.18); transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease; }
#static-homepage .co-event-preview a:hover { transform: translateY(-3px); border-color: #F7931A; box-shadow: 0 18px 38px rgba(0,0,0,.3); }
#static-homepage .co-event-preview span { color: #F7931A; font: 700 11px/1.35 "Plus Jakarta Sans", monospace; letter-spacing: .08em; text-transform: uppercase; }
#static-homepage .co-event-preview h3 { margin: 13px 0 0; font-size: 21px; }
#static-homepage .co-event-preview p { margin: 9px 0 18px; color: #B8B8B8; font-size: 14px; line-height: 1.5; }
#static-homepage .co-event-preview a img { width: calc(100% + 44px); height: 150px; object-fit: cover; border-radius: 15px 15px 0 0; margin: -22px -22px 16px; }
#static-homepage .co-event-preview b { margin-top: auto; color: #F5F5F5; font-size: 14px; }
#static-homepage .co-proof-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 34px; }
#static-homepage .co-proof-card { display: flex; min-height: 205px; flex-direction: column; padding: 24px; border: 1px solid rgba(255,255,255,.1); border-radius: 16px; background: #141414; color: #F5F5F5; text-decoration: none; transition: transform 160ms ease, border-color 160ms ease; }
#static-homepage .co-proof-card:hover { transform: translateY(-3px); border-color: rgba(247,147,26,.7); }
#static-homepage .co-proof-card span { color: #F7931A; font: 700 11px/1.35 "Plus Jakarta Sans", monospace; letter-spacing: .08em; text-transform: uppercase; }
#static-homepage .co-proof-card h3 { margin: 14px 0 0; font-size: 21px; }
#static-homepage .co-proof-card p { margin: 10px 0 20px; color: #B8B8B8; font-size: 14px; line-height: 1.55; }
#static-homepage .co-proof-card b { margin-top: auto; font-size: 14px; }
#static-homepage .co-list { display: grid; gap: 12px; margin-top: 30px; }
#static-homepage .co-list article { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 20px; padding: 22px; border: 1px solid rgba(255,255,255,.08); border-radius: 12px; background: #141414; }
#static-homepage .co-list h3 { font-family: "Inter", system-ui, sans-serif; font-size: 18px; font-weight: 700; }
#static-homepage .co-list p { margin: 7px 0 0; font-size: 14px; }
#static-homepage .co-meta { align-self: center; color: #F7931A; font: 700 12px/1.5 "Plus Jakarta Sans", monospace; text-align: right; }
#static-homepage .co-dark { background: #0F0F0F; }
#static-homepage .co-calendar-section { padding: 64px 0 80px; }
#static-homepage .co-calendar { margin-top: 30px; border: 1px solid rgba(255,255,255,.13); border-radius: 20px; overflow: hidden; background: #fff; box-shadow: 0 24px 70px rgba(0,0,0,.36); }
#static-homepage .co-calendar-label { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 13px 18px; background: #141414; color: #B8B8B8; font: 600 11px/1.4 "Plus Jakarta Sans", monospace; letter-spacing: .07em; text-transform: uppercase; }
#static-homepage .co-calendar-label b { color: #F7931A; font-weight: 700; }
#static-homepage .co-calendar-subscribe { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-top: 22px; padding: 16px 18px; border: 1px solid rgba(247,147,26,.34); border-radius: 14px; background: linear-gradient(100deg, rgba(247,147,26,.15), rgba(20,20,20,.88)); }
#static-homepage .co-calendar-subscribe p { margin: 0; color: #B8B8B8; font-size: 14px; line-height: 1.45; }
#static-homepage .co-calendar-subscribe b { display: block; margin-bottom: 3px; color: #F5F5F5; font-size: 15px; }
#static-homepage .co-calendar-subscribe .co-button { flex: 0 0 auto; }
#static-homepage .co-weekly { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-top: 12px; padding: 16px 18px; border: 1px solid rgba(255,255,255,.13); border-radius: 14px; background: rgba(20,20,20,.88); }
#static-homepage .co-weekly p { margin: 0; color: #B8B8B8; font-size: 14px; line-height: 1.45; }
#static-homepage .co-weekly b { display: block; margin-bottom: 3px; color: #F5F5F5; font-size: 15px; }
#static-homepage .co-weekly form { display: flex; gap: 8px; flex: 0 1 420px; }
#static-homepage .co-weekly input[type=email] { flex: 1 1 200px; min-width: 0; min-height: 44px; padding: 10px 14px; border-radius: 999px; border: 1px solid rgba(255,255,255,.2); background: rgba(6,6,6,.7); color: #F5F5F5; font: inherit; font-size: 14px; }
#static-homepage .co-weekly input[type=email]:focus { outline: 2px solid #F7931A; outline-offset: 1px; }
#static-homepage .co-weekly button { flex: 0 0 auto; cursor: pointer; font: inherit; }
#static-homepage .co-weekly .co-weekly-msg { margin-top: 6px; color: #F7931A; font-size: 13px; }
#static-homepage .co-calendar iframe { display: block; width: 100%; height: 620px; border: 0; background: #fff; }
#static-homepage .co-people { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 30px; }
#static-homepage .co-person { padding: 15px 16px; border: 1px solid rgba(255,255,255,.1); border-left: 3px solid #F7931A; border-radius: 10px; background: rgba(20,20,20,.9); min-height: 96px; }
#static-homepage .co-person b { display: block; font-size: 15px; line-height: 1.2; }
#static-homepage .co-person b a { color: #F5F5F5; text-decoration: none; }
#static-homepage .co-person b a:hover { color: #F7931A; }
#static-homepage .co-person span { display: block; margin-top: 5px; color: #B8B8B8; font-size: 12.5px; line-height: 1.45; }
#static-homepage .co-host { padding: 38px; border: 1px solid rgba(247,147,26,.35); border-radius: 20px; background: linear-gradient(135deg, rgba(247,147,26,.14), #141414 58%); }
#static-homepage details { border-bottom: 1px solid rgba(255,255,255,.1); padding: 18px 0; }
#static-homepage summary { cursor: pointer; color: #F5F5F5; font-weight: 700; }
#static-homepage details p { max-width: 760px; margin: 14px 0 0; }
#static-homepage .co-media-footer { position: relative; min-height: 300px; margin-bottom: 28px; border: 1px solid rgba(255,255,255,.1); border-radius: 18px; overflow: hidden; background: #0F0F0F; box-shadow: 0 24px 70px rgba(0,0,0,.34); }
#static-homepage .co-media-footer video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
#static-homepage .co-media-footer:after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(6,6,6,.88), rgba(6,6,6,.38) 58%, rgba(6,6,6,.74)); }
#static-homepage .co-media-footer div { position: relative; z-index: 1; max-width: 560px; padding: 34px; }
#static-homepage footer { padding: 56px 0; border-top: 1px solid rgba(255,255,255,.08); background: linear-gradient(180deg, #060606, #060606); }
#static-homepage .co-foot { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 24px; color: #858585; font-size: 14px; padding: 24px 0 0; }
#static-homepage .co-foot-brand strong { display: block; color:#F5F5F5; font: 400 26px/1.1 "Inter", monospace; margin-bottom: 8px; }
#static-homepage .co-foot-brand a { color: #F7931A; text-decoration: none; font-weight: 700; }
#static-homepage .co-socials { display: flex; flex-wrap: wrap; gap: 10px; justify-content: flex-end; }
#static-homepage .co-socials a { display: inline-flex; align-items: center; justify-content: center; min-height: 38px; padding: 9px 13px; border: 1px solid rgba(255,255,255,.14); border-radius: 999px; color: #F5F5F5; background: rgba(20,20,20,.78); text-decoration: none; font: 700 12px "Plus Jakarta Sans", monospace; transition: border-color .15s ease, color .15s ease, background .15s ease; }
#static-homepage .co-socials a:hover { border-color: #F7931A; color: #F7931A; background: rgba(247,147,26,.08); }
#static-homepage a:focus-visible, #static-homepage summary:focus-visible, #static-homepage .co-gallery:focus-visible { outline: 3px solid #F7931A; outline-offset: 4px; }
@media (prefers-reduced-motion: reduce) {
#static-homepage *, #static-homepage *:before, #static-homepage *:after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
#static-homepage .co-hero-video, #static-homepage .co-media-footer video { display: none; }
}
@media (max-width: 1080px) {
#static-homepage .co-people { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
#static-homepage .co-hero { display: block; min-height: 0; }
#static-homepage .co-wrap { width: min(100% - 36px, 1240px); }
#static-homepage .co-announce { flex-wrap: wrap; }
#static-homepage .co-announce a { flex: 1 1 50%; padding: 9px 10px; font-size: 11px; }
#static-homepage .co-announce a + a { border-left: 0; }
#static-homepage .co-announce a:nth-child(2) { border-left: 1px solid rgba(10,10,10,.24); }
#static-homepage .co-announce a:last-child { flex-basis: 100%; border-top: 1px solid rgba(10,10,10,.24); }
#static-homepage .co-nav { display: grid; grid-template-columns: auto auto minmax(0, 1fr); align-items: center; gap: 10px; min-height: 68px; padding: 10px 0; }
#static-homepage .co-nav img { width: 168px; }
#static-homepage .co-links { display: none; }
#static-homepage .co-mobile-menu { display: block; position: relative; width: auto; padding: 0; border-bottom: 0; }
#static-homepage .co-mobile-menu summary { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 42px; border: 1px solid rgba(255,255,255,.16); border-radius: 10px; list-style: none; cursor: pointer; color: #F5F5F5; background: rgba(20,20,20,.84); }
#static-homepage .co-mobile-menu summary::-webkit-details-marker { display: none; }
#static-homepage .co-mobile-menu summary span, #static-homepage .co-mobile-menu summary:before, #static-homepage .co-mobile-menu summary:after { content: ""; display: block; width: 20px; height: 2px; border-radius: 999px; background: currentColor; }
#static-homepage .co-mobile-menu summary { flex-direction: column; gap: 5px; }
#static-homepage .co-mobile-panel { position: absolute; top: calc(100% + 10px); left: 0; z-index: 20; display: grid; width: min(280px, calc(100vw - 36px)); gap: 10px; padding: 14px; border: 1px solid rgba(255,255,255,.1); border-radius: 14px; background: #141414; box-shadow: 0 18px 48px rgba(0,0,0,.35); }
#static-homepage .co-mobile-panel a { padding: 10px 8px; color: #F5F5F5; text-decoration: none; font-weight: 700; }
#static-homepage .co-hero-grid { grid-template-columns: 1fr; gap: 34px; }
#static-homepage h1 { font-size: clamp(34px, 10.5vw, 48px); line-height: 1.05; }
#static-homepage h2 { font-size: clamp(30px, 8.5vw, 40px); line-height: 1.08; }
#static-homepage .co-lead { font-size: 16px; line-height: 1.62; }
#static-homepage .co-grid, #static-homepage .co-people, #static-homepage .co-event-preview, #static-homepage .co-proof-grid { grid-template-columns: 1fr; }
#static-homepage .co-terminal-body { min-height: 0; padding: 20px; font-size: 12px; line-height: 1.75; }
#static-homepage .co-card, #static-homepage .co-person, #static-homepage .co-list article { border-radius: 14px; }
#static-homepage .co-card { min-height: 0; padding: 22px 50px 22px 22px; }
#static-homepage .co-calendar-label { align-items: flex-start; flex-direction: column; }
#static-homepage .co-calendar-subscribe { align-items: stretch; flex-direction: column; }
#static-homepage .co-weekly { align-items: stretch; flex-direction: column; }
#static-homepage .co-weekly form { flex-basis: auto; flex-direction: column; }
#static-homepage .co-weekly input[type=email] { flex: 0 0 auto; width: 100%; }
#static-homepage .co-list article { grid-template-columns: 1fr; }
#static-homepage .co-meta { text-align: left; }
#static-homepage .co-calendar iframe { height: 520px; }
#static-homepage .co-calendar-section { padding: 56px 0 64px; }
#static-homepage .co-hero, #static-homepage .co-section { padding: 56px 0; }
#static-homepage .co-host { padding: 28px 22px; }
#static-homepage .co-actions { width: auto; justify-self: end; flex-wrap: nowrap; align-items: center; gap: 8px; }
#static-homepage .co-button { width: 100%; text-align: center; }
#static-homepage .co-nav .co-button { width: auto; padding: 10px 11px; font-size: 13px; white-space: nowrap; }
#static-homepage .co-foot { grid-template-columns: 1fr; }
#static-homepage .co-socials { justify-content: flex-start; }
#static-homepage .co-media-footer { min-height: 250px; }
#static-homepage .co-person { min-height: 0; }
}
@media (max-width: 380px) {
#static-homepage .co-wrap { width: min(100% - 32px, 1240px); }
#static-homepage h1 { font-size: clamp(31px, 11vw, 40px); }
#static-homepage h2 { font-size: clamp(27px, 9.5vw, 34px); }
#static-homepage .co-nav .co-actions { gap: 8px; }
#static-homepage .co-nav img { width: 150px; }
#static-homepage .co-mobile-menu summary { width: 40px; height: 40px; }
#static-homepage .co-nav .co-button { padding: 9px 9px; font-size: 12px; }
}
/* ── Pathway section ── */
#static-homepage .co-path { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 14px; margin-top: 34px; }
#static-homepage .co-path a { position: relative; display: flex; flex-direction: column; gap: 8px; padding: 20px 18px; border: 1px solid rgba(255,255,255,.1); border-radius: 12px; background: #0A0A0A; text-decoration: none; color: inherit; transition: transform 140ms, border-color 140ms; }
#static-homepage .co-path a:hover { transform: translateY(-3px); border-color: rgba(247,147,26,.7); }
#static-homepage .co-path .co-step-num { color: #F7931A; font: 700 12px/1 "Plus Jakarta Sans", monospace; letter-spacing: .08em; }
#static-homepage .co-path h3 { margin: 0; font-size: 15px; font-weight: 700; line-height: 1.3; color: #F5F5F5; }
#static-homepage .co-path p { margin: 0; font-size: 12.5px; color: #858585; line-height: 1.45; }
#static-homepage .co-path .co-step-arrow { position: absolute; right: -13px; top: 50%; transform: translateY(-50%); color: #F7931A; font-weight: 700; z-index: 1; pointer-events: none; }
#static-homepage .co-path-cta { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; margin-top: 30px; }
#static-homepage .co-path-cta .co-note { font-size: 13px; color: #858585; }
@media (max-width: 980px) {
#static-homepage .co-path { grid-template-columns: 1fr 1fr; }
#static-homepage .co-path .co-step-arrow { display: none; }
}
@media (max-width: 560px) {
#static-homepage .co-path { grid-template-columns: 1fr; }
}
/* ── Community list in a dropdown ── */
#static-homepage details.co-people-drop { margin-top: 30px; padding: 0; border: 1px solid rgba(247,147,26,.35); border-radius: 18px; background: rgba(14,14,14,.82); backdrop-filter: blur(6px); }
#static-homepage .co-people-drop > summary { display: flex; align-items: center; gap: 6px 16px; flex-wrap: wrap; padding: 20px 64px 20px 24px; position: relative; list-style: none; border-radius: 18px; }
#static-homepage .co-people-drop > summary::-webkit-details-marker { display: none; }
#static-homepage .co-people-drop-label { font-size: 19px; font-weight: 800; color: #F5F5F5; }
#static-homepage .co-people-drop-meta { color: rgba(255,255,255,.62); font-size: 14px; font-weight: 500; }
#static-homepage .co-people-drop > summary i { position: absolute; right: 20px; top: 50%; width: 32px; height: 32px; margin-top: -16px; border-radius: 999px; background: #F7931A; transition: transform .25s ease; }
#static-homepage .co-people-drop > summary i::before { content: ""; position: absolute; left: 11px; top: 9px; width: 8px; height: 8px; border: solid #0a0a0a; border-width: 0 2.5px 2.5px 0; transform: rotate(45deg); }
#static-homepage .co-people-drop[open] > summary i { transform: rotate(180deg); }
#static-homepage .co-people-drop > summary:hover .co-people-drop-label { color: #F7931A; }
#static-homepage .co-people-drop .co-people { margin: 0; padding: 0 20px 20px; }
#static-homepage .co-people-drop .co-people .co-person:nth-child(n) { display: flex !important; }
/* ── Desktop nav breathing room ── */
#static-homepage .co-links { gap: 28px; }
/* ── FAQ CTA ── */
#static-homepage .co-faq-cta { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; margin-top: 26px; padding-top: 22px; border-top: 1px solid rgba(255,255,255,.1); }
/* Photo cards + bento gallery (2026-10-15) */
#static-homepage a.co-photo { background: linear-gradient(155deg, rgba(10,10,10,.9) 0%, rgba(10,10,10,.78) 42%, rgba(10,10,10,.38) 100%), var(--bg) center 35% / cover no-repeat !important; background-blend-mode: normal !important; transition: transform 160ms ease, background-position .6s ease !important; }
#static-homepage a.co-photo:hover, #static-homepage a.co-photo:focus-visible { background: linear-gradient(155deg, rgba(10,10,10,.86) 0%, rgba(10,10,10,.62) 42%, rgba(10,10,10,.15) 100%), radial-gradient(circle at 90% 100%, rgba(247,147,26,.3), transparent 55%), var(--bg) center 45% / cover no-repeat !important; background-blend-mode: normal !important; }
#static-homepage a.co-photo p { color: #DADADA; }
#static-homepage a.co-photo h3 { text-shadow: 0 2px 16px rgba(0,0,0,.7); }
#static-homepage .co-bento { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 210px; grid-auto-flow: row dense; gap: 12px; margin-top: 30px; }
#static-homepage .co-bento-item { position: relative; padding: 0; overflow: hidden; border: 1px solid rgba(255,255,255,.1); border-radius: 16px; background: #141414; cursor: zoom-in; }
#static-homepage .co-bento-item:nth-child(1), #static-homepage .co-bento-item:nth-child(6) { grid-column: span 2; grid-row: span 2; }
@media (min-width: 761px) { #static-homepage .co-bento-item:nth-child(6) { grid-column: 3 / span 2; } }
#static-homepage .co-bento-item img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .45s ease, filter .3s ease; filter: saturate(.9); }
#static-homepage .co-bento-item:hover img { transform: scale(1.05); filter: saturate(1.1); }
#static-homepage .co-bento-item:focus-visible { outline: 3px solid #F7931A; outline-offset: 3px; }
#static-homepage .co-bento .co-more { display: none; }
#static-homepage .co-bento.is-open .co-more { display: block; }
#static-homepage .co-bento-foot { display: flex; justify-content: center; margin-top: 22px; }
.co-lightbox { max-width: min(92vw, 1100px); max-height: 92vh; padding: 0; border: 0; border-radius: 18px; background: #0a0a0a; overflow: visible; }
.co-lightbox::backdrop { background: rgba(0,0,0,.88); backdrop-filter: blur(4px); }
.co-lightbox img { display: block; max-width: min(92vw, 1100px); max-height: 86vh; border-radius: 18px; object-fit: contain; }
.co-lb-count { position: absolute; left: 50%; bottom: -34px; margin: 0; transform: translateX(-50%); color: #bbb; font: 700 12px "Plus Jakarta Sans", monospace; letter-spacing: .1em; }
.co-lb-btn { position: absolute; width: 46px; height: 46px; border-radius: 50%; border: 1px solid rgba(247,147,26,.6); background: rgba(10,10,10,.85); color: #F7931A; font-size: 20px; cursor: pointer; }
.co-lb-btn:hover { background: #F7931A; color: #0a0a0a; }
.co-lb-close { top: 10px; right: 10px; }
.co-lb-prev { top: 50%; left: 10px; margin-top: -23px; }
.co-lb-next { top: 50%; right: 10px; margin-top: -23px; }
@media (max-width: 760px) {
#static-homepage .co-bento { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 150px; gap: 8px; }
#static-homepage .co-bento-item { border-radius: 12px; }
}
</style>
<div class="co-announce" role="navigation" aria-label="Current enrollment opportunities"><a href="/privacy-track">Bitcoin Privacy Track · open for enrollment</a><a href="https://github.com/code-orange-dev/code-orange-dev/blob/main/privacy-contributor-program/REVIEW_CLUB.md" target="_blank" rel="noopener">Code Review Club · real upstream PRs</a><a href="/apply">Apply →</a></div>
<header class="co-band"><div class="co-wrap co-nav">
<a href="#top"><img src="/assets/logo-dot-wordmark.svg" alt="Code Orange Dev School"></a>
<nav class="co-links" aria-label="Primary"><a href="/start">Start here</a><a href="/programs">Programs</a><a href="/portal">Portal</a><a href="/fellowships">Fellowships</a><a href="/calendar">Calendar</a><a href="/community">Community</a><a href="/about">About</a></nav>
<details class="co-mobile-menu"><summary aria-label="Open menu"><span></span></summary><div class="co-mobile-panel"><a href="/start">Start here</a><a href="/programs">Programs</a><a href="/portal">Portal</a><a href="/fellowships">Fellowships</a><a href="/calendar">Calendar</a><a href="/community">Community</a><a href="/about">About</a></div></details>
<div class="co-actions"><a class="co-button" href="https://discord.gg/ZtvA79paWa" target="_blank" rel="noopener">Discord</a><a class="co-button primary" href="/apply">Apply now</a></div>
</div></header>
<section id="top" class="co-hero"><div class="co-fx" aria-hidden="true"><i></i><i></i><i></i><svg class="co-fx-glow" viewBox="0 0 1200 400" preserveAspectRatio="none"><defs><filter id="co-glow-blur" x="-20%" y="-50%" width="140%" height="200%"><feGaussianBlur stdDeviation="25"/></filter><radialGradient id="co-glow-fill"><stop offset="0" stop-color="#F7931A" stop-opacity=".55"/><stop offset=".55" stop-color="#C2620A" stop-opacity=".28"/><stop offset="1" stop-color="#4A2600" stop-opacity="0"/></radialGradient></defs><ellipse cx="600" cy="200" rx="520" ry="110" fill="url(#co-glow-fill)" filter="url(#co-glow-blur)"/></svg></div><video class="co-hero-video" poster="/assets/co-hero-first.webp" autoplay muted loop playsinline preload="auto" aria-hidden="true"><source src="/assets/co-hero-v2-540.mp4" type="video/mp4" media="(max-width: 760px)"><source src="/assets/co-hero-v2.mp4" type="video/mp4"><source src="/assets/co-hero-720.webm" type="video/webm"></video><div class="co-wrap">
<div class="co-hero-grid">
<div>
<p class="co-eyebrow">Bitcoin Developer School</p>
<h1>A Bitcoin OSS contributor pipeline<span class="co-dot-accent">.</span></h1>
<p class="co-lead">Learn practical Bitcoin skills, become a capable builder, or bring hands-on Bitcoin education to your community.</p>
<div class="co-actions"><a class="co-button primary" href="https://discord.gg/ZtvA79paWa" target="_blank" rel="noopener">Join Discord, it’s free</a><a class="co-button" href="/start">New here? Start here</a></div>
<a class="co-mb-card" href="/decoding-bitcoin"><span class="co-mb-icon" aria-hidden="true">₿</span><span><em>New study cohort · free</em><b>Decoding Bitcoin starts Mon 16 Nov</b><small>10 weeks of interactive lessons, Mondays 7–8:30pm (UTC+8) on Discord</small></span><i aria-hidden="true">→</i></a>
</div>
<div class="co-terminal" aria-label="Code Orange developer pipeline">
<div class="co-terminal-top"><span class="co-dot" style="background:#FF5F56"></span><span class="co-dot" style="background:#FFBD2E"></span><span class="co-dot" style="background:#27C93F"></span><span class="co-prompt">student@codeorange: ~</span></div>
<div class="co-terminal-body">
<p style="color:#F7931A; margin-bottom:12px;">$ cat developer-pipeline.txt</p>
<p style="color:#F5F5F5; margin-bottom:16px;">Our developer pipeline:</p>
<ol>
<li>Workshops and meetups</li>
<li>Study cohorts</li>
<li>Privacy Track</li>
<li>Code Review Club</li>
<li>Fellowships</li>
<li style="color:#F5F5F5;">Full-time Bitcoin OSS development</li>
</ol>
<p style="margin-top:16px; color:#858585;">$ status: builders moving from first meetup to public contribution<span class="co-cursor"></span></p>
</div>
</div>
</div>
</div></section>
<section class="co-upnext co-dark" data-upnext hidden aria-label="Upcoming sessions"><div class="co-wrap"><div class="co-upnext-head"><p>Up next</p><a href="/calendar">Full calendar →</a></div><div class="co-upnext-list" data-upnext-list></div></div></section>
<section id="pathway" class="co-section co-dark"><div class="co-wrap"><p class="co-eyebrow">How it works</p><h2>The pathway: first meetup to full-time Bitcoin OSS.</h2><p class="co-lead">Six steps. Start wherever you are — every step is free, and every step points at real public work.</p>
<div class="co-path" aria-label="Code Orange developer pathway">
<a href="/calendar"><span class="co-step-num">STEP 01</span><h3>Workshops & meetups</h3><p>The front door. Drop in, no experience needed.</p><span class="co-step-arrow" aria-hidden="true">→</span></a>
<a href="/programs"><span class="co-step-num">STEP 02</span><h3>Study cohorts</h3><p>Dojo, rawBit, Decoding Bitcoin — structured weeks, real skills.</p><span class="co-step-arrow" aria-hidden="true">→</span></a>
<a href="/privacy-track"><span class="co-step-num">STEP 03</span><h3>Privacy Track</h3><p>12 sessions: Silent Payments, Payjoin, CoinJoin, and more.</p><span class="co-step-arrow" aria-hidden="true">→</span></a>
<a href="/programs"><span class="co-step-num">STEP 04</span><h3>Code Review Club</h3><p>Review real upstream Bitcoin PRs, together.</p><span class="co-step-arrow" aria-hidden="true">→</span></a>
<a href="/fellowships"><span class="co-step-num">STEP 05</span><h3>Fellowships</h3><p>Focused time, mentors, a real open-source project.</p><span class="co-step-arrow" aria-hidden="true">→</span></a>
<a href="/community"><span class="co-step-num">STEP 06</span><h3>Full-time Bitcoin OSS</h3><p>Graduates contribute to Bitcoin for a living.</p></a>
</div>
<div class="co-path-cta"><a class="co-button primary co-xl" href="https://discord.gg/ZtvA79paWa" target="_blank" rel="noopener">Join Discord — the next step</a><a class="co-button" href="/calendar">Or pick a workshop first</a><span class="co-note">Free forever · online + in person · beginners welcome</span></div>
</div></section>
<section class="co-calendar-section co-dark co-band"><div class="co-wrap"><p class="co-eyebrow">Recurring events</p><h2>Always something happening.</h2><div class="co-event-preview" aria-label="Featured Code Orange community sessions"><a href="https://discord.gg/6XPJ96sCY4?event=1545332635348246528" target="_blank" rel="noopener"><img src="/assets/event-cards/code-review-club.webp" alt="Code Review Club session with hardware wallet and laptop" loading="lazy"><span>Build & review</span><h3>Code Review Club</h3><p>Discuss real upstream Bitcoin work, test ideas, and practise useful review notes.</p><b>Open Discord event →</b></a><a href="https://discord.gg/6XPJ96sCY4?event=1520663887471710248" target="_blank" rel="noopener"><img src="/assets/event-cards/self-custody.webp" alt="Hardware wallets and Code Orange stickers" loading="lazy"><span>Hands-on workshop</span><h3>Self-custody</h3><p>Bring practical questions and learn the tools and habits of Bitcoin self-custody.</p><b>Open Discord event →</b></a><a href="https://discord.gg/6XPJ96sCY4?event=1387624917339472053" target="_blank" rel="noopener"><img src="/assets/event-cards/bitcoin-reading-club.jpg" alt="Steel seed backup plates for Bitcoin self-custody" loading="lazy"><span>Study together</span><h3>Bitcoin Reading Club</h3><p>Work through essential Bitcoin writing alongside people who care about the details.</p><b>Open Discord event →</b></a></div><div class="co-calendar-subscribe"><p><b style="margin:0">Never miss a session.</b></p><a class="co-button primary" href="https://calendar.google.com/calendar/r?cid=466de2be7431d78be2049f96f5fd31f9b06b5a9cd94f909ba3182b18442ed499%40group.calendar.google.com" target="_blank" rel="noopener">Add to Google Calendar ↗</a></div><div class="co-weekly" id="weekly-email"><div><p><b style="margin:0">Get a weekly email of our events.</b></p><p class="co-weekly-msg" role="status" aria-live="polite" hidden></p></div><form action="https://assets.mailerlite.com/jsonp/2133495/forms/201289376620086972/subscribe" method="post" target="_blank" data-co-weekly><input type="email" id="co-weekly-email" aria-label="Email address" name="fields[email]" placeholder="you@example.com" autocomplete="email" required><input type="hidden" name="ml-submit" value="1"><input type="hidden" name="anticsrf" value="true"><button class="co-button primary" type="submit">Subscribe</button></form></div>
<script>
(function(){var f=document.querySelector('[data-co-weekly]');if(!f||!window.fetch)return;var m=f.parentNode.querySelector('.co-weekly-msg');
f.addEventListener('submit',function(e){e.preventDefault();var b=f.querySelector('button');b.disabled=true;
fetch(f.action,{method:'POST',body:new FormData(f)}).then(function(r){return r.json()}).then(function(d){
m.hidden=false;if(d&&d.success){m.textContent='Almost done: check your inbox and click the confirmation link.';f.reset();}else{m.textContent='That did not work. Please check the email address and try again.';}
}).catch(function(){f.removeAttribute('data-co-weekly');f.submit();}).then(function(){b.disabled=false;});});})();
</script><div class="co-calendar"><div class="co-calendar-label"><span><b>● Live schedule</b> · updates automatically</span><span>Times in UTC+8</span></div><iframe title="Code Orange public student calendar" src="https://calendar.google.com/calendar/embed?src=466de2be7431d78be2049f96f5fd31f9b06b5a9cd94f909ba3182b18442ed499%40group.calendar.google.com&ctz=Asia%2FMakassar" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe></div><p style="margin-top:28px"><a class="co-button" href="/calendar">Open calendar page →</a></p></div></section>
<section class="co-section co-photo-section" style="--co-bg:url('/assets/latest-workshops/workshop-latest-table.webp'); --co-bg-pos:center 52%;"><div class="co-wrap"><p class="co-eyebrow">Programs</p><h2>Pick a practical next step.</h2><div class="co-grid">
<a class="co-card co-photo" style="--bg:url(/assets/home-cards/self-custody.webp)" href="https://discord.gg/6XPJ96sCY4?event=1520663887471710248" target="_blank" rel="noopener"><span>🛡️ Discord event</span><h3>Self-custody workshop</h3><p>Build practical confidence with the tools and habits of Bitcoin self-custody.</p></a>
<a class="co-card co-photo" style="--bg:url(/assets/home-cards/reading-club.webp)" href="https://discord.gg/6XPJ96sCY4?event=1387624917339472053" target="_blank" rel="noopener"><span>📚 Discord event</span><h3>Bitcoin Reading Club</h3><p>Read the essential Bitcoin canon alongside builders who care about the details.</p></a>
<a class="co-card co-photo" style="--bg:url(/assets/home-cards/code-review.webp)" href="https://discord.gg/6XPJ96sCY4?event=1545332635348246528" target="_blank" rel="noopener"><span>🔎 Every two weeks</span><h3>Code Review Club</h3><p>Build, test, explain, and discuss real upstream Bitcoin work before writing useful review notes.</p></a>
<a class="co-card co-photo" style="--bg:url(/assets/home-cards/bitcoin-basics.webp)" href="https://discord.gg/6XPJ96sCY4?event=1487290769541955664" target="_blank" rel="noopener"><span>₿ Discord event</span><h3>Bitcoin Basics</h3><p>A practical entry point for curious Bitcoiners who want to understand the system.</p></a>
<a class="co-card co-photo" style="--bg:url(/assets/home-cards/protocol.webp)" href="https://discord.gg/6XPJ96sCY4?event=1524278951575293992" target="_blank" rel="noopener"><span>⚙️ Discord event</span><h3>Bitcoin Protocol Fundamentals</h3><p>Get closer to transactions, Script, network rules, and the code that runs Bitcoin.</p></a>
<a class="co-card co-photo" style="--bg:url(/assets/home-cards/sovereign.webp)" href="https://discord.gg/6XPJ96sCY4?event=1524278951575293992" target="_blank" rel="noopener"><span>🛡️ Discord event</span><h3>Sovereign Bitcoiner workshop</h3><p>Hands-on self-custody, nodes, multisig, inheritance, Ecash, and Fedimint.</p></a>
<a class="co-card co-photo" style="--bg:url(/assets/home-cards/agentic.webp)" href="https://discord.gg/6XPJ96sCY4?event=1401076359220035655" target="_blank" rel="noopener"><span>✦ Discord event</span><h3>Agentic engineering & vibe coding</h3><p>Build useful tools with AI, Nostr, and open protocols in a working session.</p></a>
</div><div class="co-host" style="margin-top:24px; padding:28px;"><p class="co-eyebrow">For committed contributors</p><h3>Ready for a deeper contribution?</h3><p style="margin:10px 0 18px;">Code Orange fellowships provide focused time, mentor support, and a real open-source project for builders who have shown they are ready.</p><a class="co-button primary" href="/fellowships">Explore fellowships →</a></div><p style="margin-top:28px"><a class="co-button" href="/programs">View all programs →</a></p></div></section>
<section class="co-section co-dark"><div class="co-wrap"><p class="co-eyebrow">Proof in public</p><h2>See the work behind the school.</h2><p class="co-lead">The point is not just to attend a session. It is to leave with the confidence, community, and path to contribute in public.</p><div class="co-proof-grid"><a class="co-proof-card co-photo" style="--bg:url(/assets/home-cards/follow-code.webp)" href="https://github.com/code-orange-dev" target="_blank" rel="noopener"><span>Open source</span><h3>Follow the code</h3><p>Explore the Code Orange GitHub organization and the public work our community gathers around.</p><b>Visit GitHub →</b></a><a class="co-proof-card co-photo" style="--bg:url(/assets/home-cards/go-deeper.webp)" href="/fellowships"><span>Mentored path</span><h3>Go deeper</h3><p>Fellowships give committed builders focused time, mentor feedback, and a real open-source project.</p><b>Explore fellowships →</b></a><a class="co-proof-card co-photo" style="--bg:url(/assets/home-cards/build-locally.webp)" href="/community"><span>Community impact</span><h3>Build locally, contribute globally</h3><p>See how workshops, cohorts, and local builders connect to the wider Bitcoin ecosystem.</p><b>See the impact →</b></a></div></div></section>
<section class="co-section co-dark"><div class="co-wrap"><p class="co-eyebrow">Workshop floor</p><h2>Inside the workshops.</h2><div class="co-bento" id="co-bento">
<button type="button" class="co-bento-item" data-i="0" aria-label="Open photo: Bitcoin workshop in the Code Orange space"><img src="/assets/workshop-gallery/large/workshop-legacy-circle.webp" alt="Bitcoin workshop in the Code Orange space" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item" data-i="1" aria-label="Open photo: Bitcoin hardware tools and laptops on a workshop table"><img src="/assets/workshop-gallery/large/workshop-hardware-table.webp" alt="Bitcoin hardware tools and laptops on a workshop table" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item" data-i="2" aria-label="Open photo: Code Orange community workshop in progress"><img src="/assets/workshop-gallery/large/workshop-community-circle.webp" alt="Code Orange community workshop in progress" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item" data-i="3" aria-label="Open photo: Bitcoin mining workshop with Code Orange equipment"><img src="/assets/workshop-gallery/large/workshop-mining-table.webp" alt="Bitcoin mining workshop with Code Orange equipment" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item" data-i="4" aria-label="Open photo: Bitcoin nodes and hardware wallets laid out for a workshop"><img src="/assets/workshop-gallery/large/workshop-hardware-kit.webp" alt="Bitcoin nodes and hardware wallets laid out for a workshop" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item" data-i="5" aria-label="Open photo: Bitcoin tools shown on a workshop projector"><img src="/assets/workshop-gallery/large/workshop-projector.webp" alt="Bitcoin tools shown on a workshop projector" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item" data-i="6" aria-label="Open photo: Code Orange website displayed during a workshop"><img src="/assets/workshop-gallery/large/workshop-site-screen.webp" alt="Code Orange website displayed during a workshop" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item" data-i="7" aria-label="Open photo: Bitcoin mining class with workshop equipment"><img src="/assets/workshop-gallery/large/workshop-mining-class.webp" alt="Bitcoin mining class with workshop equipment" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item" data-i="8" aria-label="Open photo: Bitcoin miner components during a hands-on session"><img src="/assets/workshop-gallery/large/workshop-miner-build.webp" alt="Bitcoin miner components during a hands-on session" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item" data-i="9" aria-label="Open photo: Ecash session around the workshop table"><img src="/assets/workshop-gallery/large/workshop-ecash-session.webp" alt="Ecash session around the workshop table" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item co-more" data-i="10" aria-label="Open photo: Laptop-led Bitcoin mining demonstration"><img src="/assets/workshop-gallery/large/workshop-mining-lab.webp" alt="Laptop-led Bitcoin mining demonstration" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item co-more" data-i="11" aria-label="Open photo: Instructor leading a live Code Orange workshop"><img src="/assets/workshop-gallery/large/workshop-whiteboard.webp" alt="Instructor leading a live Code Orange workshop" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item co-more" data-i="12" aria-label="Open photo: Bitcoin devices and Code Orange workshop tools"><img src="/assets/workshop-gallery/large/workshop-new-0428.webp" alt="Bitcoin devices and Code Orange workshop tools" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item co-more" data-i="13" aria-label="Open photo: Builders sitting in a circle with Bitcoin hardware"><img src="/assets/workshop-gallery/large/workshop-floor-circle.webp" alt="Builders sitting in a circle with Bitcoin hardware" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item co-more" data-i="14" aria-label="Open photo: Hands-on Bitcoin workshop moment"><img src="/assets/workshop-gallery/large/workshop-new-0362.webp" alt="Hands-on Bitcoin workshop moment" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item co-more" data-i="15" aria-label="Open photo: Bitcoin learning session with practical equipment"><img src="/assets/workshop-gallery/large/workshop-new-0403.webp" alt="Bitcoin learning session with practical equipment" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item co-more" data-i="16" aria-label="Open photo: Code Orange workshop participant working with Bitcoin tools"><img src="/assets/workshop-gallery/large/workshop-new-0444.webp" alt="Code Orange workshop participant working with Bitcoin tools" width="960" height="1280" loading="lazy" decoding="async"></button>
<button type="button" class="co-bento-item co-more" data-i="17" aria-label="Open photo: Bitcoin signing devices, seed QR plates and a Code Orange node"><img src="/assets/workshop-gallery/large/workshop-new-0558.webp" alt="Bitcoin signing devices, seed QR plates and a Code Orange node" width="960" height="1280" loading="lazy" decoding="async"></button>
</div><div class="co-bento-foot"><button type="button" class="co-button" id="co-bento-all">See all 18 photos</button></div>
<dialog class="co-lightbox" id="co-lightbox" aria-label="Workshop photo viewer"><img alt=""><p class="co-lb-count"></p><button type="button" class="co-lb-btn co-lb-close" aria-label="Close">×</button><button type="button" class="co-lb-btn co-lb-prev" aria-label="Previous photo">←</button><button type="button" class="co-lb-btn co-lb-next" aria-label="Next photo">→</button></dialog>
<script>(function(){var g=document.getElementById("co-bento"),items=[].slice.call(g.querySelectorAll(".co-bento-item")),all=document.getElementById("co-bento-all"),d=document.getElementById("co-lightbox"),im=d.querySelector("img"),ct=d.querySelector(".co-lb-count"),i=0,x0=null;
all.addEventListener("click",function(){g.classList.add("is-open");all.parentNode.hidden=true;});
function show(n){i=(n+items.length)%items.length;var s=items[i].querySelector("img");im.src=s.src;im.alt=s.alt;ct.textContent=(i+1)+" / "+items.length;}
items.forEach(function(b,n){b.addEventListener("click",function(){show(n);d.showModal?d.showModal():d.setAttribute("open","");});});
d.querySelector(".co-lb-prev").onclick=function(){show(i-1);};d.querySelector(".co-lb-next").onclick=function(){show(i+1);};d.querySelector(".co-lb-close").onclick=function(){d.close();};
d.addEventListener("click",function(e){if(e.target===d)d.close();});
d.addEventListener("keydown",function(e){if(e.key==="ArrowLeft")show(i-1);if(e.key==="ArrowRight")show(i+1);});
d.addEventListener("touchstart",function(e){x0=e.touches[0].clientX;},{passive:true});d.addEventListener("touchend",function(e){if(x0===null)return;var dx=e.changedTouches[0].clientX-x0;if(Math.abs(dx)>40)show(i+(dx<0?1:-1));x0=null;});})();</script></div></section>
<section class="co-section co-photo-section" style="--co-bg:url('/assets/latest-workshops/workshop-latest-builders.webp'); --co-bg-pos:center 42%;"><div class="co-wrap"><p class="co-eyebrow">Developer community</p><h2>We build the community. They build Bitcoin.</h2><p class="co-lead">People in the Code Orange community. Projects are listed only where the person has a merged PR on our public <a href="/dashboard">PR dashboard</a>; the work belongs to them.</p><details class="co-people-drop"><summary><span class="co-people-drop-label">Meet the 28 builders</span><span class="co-people-drop-meta">11 with merged PRs in Bitcoin open source</span><i aria-hidden="true"></i></summary><div class="co-people" id="co-people">
<article class="co-person"><b><a href="https://github.com/alexxie16" target="_blank" rel="noopener">Alex Xie</a></b><span>Merged PRs in: OpenTollGate.</span></article>
<article class="co-person"><b><a href="https://github.com/Arowolokehinde" target="_blank" rel="noopener">Arowolo</a></b><span>Merged PRs in: Mostro, rust-payjoin.</span></article>
<article class="co-person"><b><a href="https://github.com/dayvvo" target="_blank" rel="noopener">Dayvvo</a></b><span>Merged PRs in: Alby bitcoin-connect, Alby js-sdk.</span></article>
<article class="co-person"><b><a href="https://github.com/0xlaga" target="_blank" rel="noopener">Diegodev</a></b><span>Merged PRs in: Master Bitcoin From Command Line.</span></article>
<article class="co-person"><b><a href="https://github.com/alexgrad42" target="_blank" rel="noopener">Gradale</a></b><span>Merged PRs in: rust-bitcoin, hex-conservative, corepc.</span></article>
<article class="co-person"><b><a href="https://github.com/muhahahmad68" target="_blank" rel="noopener">Muhammad</a></b><span>Merged PRs in: Bitcoin Core, rust-bitcoin, Floresta, bdk_wallet, Cove wallet, SeedSigner.</span></article>
<article class="co-person"><b><a href="https://github.com/mwihoti" target="_blank" rel="noopener">Mwihoti</a></b><span>Merged PRs in: rust-payjoin.</span></article>
<article class="co-person"><b><a href="https://github.com/pzafonte" target="_blank" rel="noopener">Peter</a></b><span>Merged PRs in: Bitcoin Core, rust-bitcoin, kernel-node, rust-bitcoinkernel, BDK.</span></article>
<article class="co-person"><b><a href="https://github.com/psychemist" target="_blank" rel="noopener">Psychemist</a></b><span>Merged PRs in: LDK, Mastering Taproot, bitcointranscripts, Saving Satoshi.</span></article>
<article class="co-person"><b><a href="https://github.com/RazorBest" target="_blank" rel="noopener">Razor</a></b><span>Merged PRs in: peer-observer, corepc, bitcointranscripts.</span></article>
<article class="co-person"><b><a href="https://github.com/va-an" target="_blank" rel="noopener">Vaan</a></b><span>Merged PRs in: rust-payjoin, payjoin.org, bdk-cli, rust-bitcoin, bdk_wallet, esplora-cli.</span></article>
<article class="co-person"><b><a href="https://github.com/alikulaOwen" target="_blank" rel="noopener">alikulaOwen</a></b><span>Community member.</span></article>
<article class="co-person"><b><a href="https://github.com/rollingdice" target="_blank" rel="noopener">Bunny Rolling Dice</a></b><span>Community member.</span></article>
<article class="co-person"><b><a href="https://github.com/SIDHARTH20K4" target="_blank" rel="noopener">Captain Levi</a></b><span>Community member.</span></article>
<article class="co-person"><b><a href="https://github.com/fqhhusain" target="_blank" rel="noopener">Daily Cisea</a></b><span>Community member.</span></article>
<article class="co-person"><b>Dashingtimmy</b><span>Community member.</span></article>
<article class="co-person"><b><a href="https://github.com/ElijahMwambazi" target="_blank" rel="noopener">Elijahhh</a></b><span>Community member.</span></article>
<article class="co-person"><b><a href="https://github.com/Ilie27" target="_blank" rel="noopener">Ilie</a></b><span>Community member.</span></article>
<article class="co-person"><b><a href="https://github.com/kelly-musk" target="_blank" rel="noopener">Kelly Musk</a></b><span>Community member.</span></article>
<article class="co-person"><b><a href="https://github.com/yomanthunder" target="_blank" rel="noopener">Kirito</a></b><span>Community member.</span></article>
<article class="co-person"><b>Makuuci</b><span>Community member.</span></article>
<article class="co-person"><b><a href="https://github.com/martinbarilik" target="_blank" rel="noopener">Martin Barilik</a></b><span>Community member.</span></article>
<article class="co-person"><b>Mr Miyagi</b><span>Community member.</span></article>
<article class="co-person"><b><a href="https://github.com/tigeryant" target="_blank" rel="noopener">Shimmy</a></b><span>Community member.</span></article>
<article class="co-person"><b><a href="https://github.com/shiivamgupta" target="_blank" rel="noopener">Shivam Gupta</a></b><span>Community member.</span></article>
<article class="co-person"><b><a href="https://github.com/Specter2100" target="_blank" rel="noopener">Specter B</a></b><span>Community member.</span></article>
<article class="co-person"><b><a href="https://github.com/Einsamwolf28" target="_blank" rel="noopener">Wolf</a></b><span>Community member.</span></article>
<article class="co-person"><b><a href="https://github.com/ywiyogo" target="_blank" rel="noopener">Yongki</a></b><span>Community member.</span></article>
</div></details><p style="margin-top:28px"><a class="co-button" href="https://github.com/code-orange-dev/dev-community" target="_blank" rel="noopener">Community directory →</a></p></div></section>
<section class="co-section co-photo-section" style="--co-bg:url('/assets/latest-workshops/workshop-latest-table.webp'); --co-bg-pos:center;"><div class="co-wrap"><p class="co-eyebrow">FAQ</p><h2>Common questions.</h2>
<details open><summary>How do I get started?</summary><p>One step: <a href="https://discord.gg/ZtvA79paWa" target="_blank" rel="noopener">join the Discord →</a> — that's the front door. Say hi, then come to a <a href="/calendar">free workshop</a> or enroll in a <a href="/programs">study cohort</a>. No application, no cost.</p></details>
<details><summary>How much does it cost?</summary><p>All Code Orange programs are free of charge for everyone joining.</p></details>
<details><summary>Do I need prior coding experience?</summary><p>rawBit and the Bitcoin Privacy Track expect comfort with a programming language. Bitcoin Basics, Sovereign Bitcoiner, Agentic Engineering, and Vibe Coding welcome curious beginners.</p></details>
<details><summary>Can I join remotely?</summary><p>Yes. Most sessions run online through <a href="https://discord.gg/ZtvA79paWa" target="_blank" rel="noopener">Discord</a>, with hands-on hardware sessions layered in where they help.</p></details>
<details><summary>Can I run a workshop?</summary><p>Yes. The curriculum is open source and adaptable for local communities. <a href="mailto:hello@codeorange.dev?subject=Workshop%20proposal">Email us your workshop idea →</a> and we’ll help get it started.</p></details>
<div class="co-faq-cta"><a class="co-button primary co-xl" href="https://discord.gg/ZtvA79paWa" target="_blank" rel="noopener">Join Discord — the next step</a><a class="co-button" href="/calendar">See this week's sessions</a></div>
</div></section>
<footer><div class="co-wrap">
<div class="co-media-footer"><video data-lazy-video data-src="/assets/co-footer-720.mp4" poster="/assets/co-footer-poster.webp" autoplay muted loop playsinline preload="none"></video><div><p class="co-eyebrow">Scenes from the school</p><h2>Hands-on Bitcoin education.</h2></div></div>
<div class="co-foot-grid"><div class="co-foot-brand"><img src="/assets/logo-dot-wordmark.svg" alt="Code Orange Dev School" loading="lazy"><p>Code Orange Dev School trains Bitcoin developers, node runners, and technical community leaders through practical education and open-source contribution.</p><a class="co-foot-mail" href="mailto:hello@codeorange.dev">hello@codeorange.dev</a><div class="co-socials"><a href="https://github.com/code-orange-dev" target="_blank" rel="noopener">GitHub</a><a href="https://discord.gg/ZtvA79paWa" target="_blank" rel="noopener">Discord</a><a href="https://x.com/CodeOrangeDevs" target="_blank" rel="noopener">X</a><a href="https://www.instagram.com/codeorangedevs" target="_blank" rel="noopener">Instagram</a><a href="https://njump.me/npub1gxqyeea3xspkd68mxlxsvvk3gdzdd555u504ynwpdj0ghg503mvq2gydt0" target="_blank" rel="noopener">Nostr</a></div></div><nav class="co-foot-col" aria-label="School"><strong>School</strong><a href="/about">About</a><a href="/community">Community</a><a href="/fellowships">Fellowships</a><a href="/calendar">Calendar</a></nav><nav class="co-foot-col" aria-label="Learn"><strong>Learn</strong><a href="/programs">Programs</a><a href="/privacy-track">Privacy Track</a><a href="/rawbit">rawBit</a><a href="/portal">Portal</a><a href="/articles">Articles</a><a href="/session-notes">Session notes</a><a href="/resources">Resources</a></nav><div class="co-foot-col co-foot-join"><strong>Join us</strong><p>Free of charge for everyone joining.</p><a class="co-button primary" href="/apply">Apply now</a><a class="co-button" href="https://discord.gg/ZtvA79paWa" target="_blank" rel="noopener">Join Discord</a></div></div><div class="co-foot-bottom"><span>© 2026 Code Orange Dev School</span><a href="#top">Back to top ↑</a></div>
</div></footer>
</main>
</body>
</html>