From 695fec2e4b0fca10c79a3e5b90a724d4708a6752 Mon Sep 17 00:00:00 2001
From: Rae McKelvey <633012+okdistribute@users.noreply.github.com>
Date: Thu, 6 Nov 2025 13:46:48 -0800
Subject: [PATCH 1/8] Update to add people page, services, products. Massage
the messaging. Remove twitter. Let's chat contact page everywhere.
---
content/n0ps.md | 2 +-
content/{roles => people}/_index.md | 17 +--
content/products.md | 5 +
static/styles/style.css | 166 ++++++++++--------------
templates/index.html | 84 ++++++------
templates/layout.html | 14 +-
templates/n0ps.html | 11 +-
templates/people/index.html | 101 ++++++++++++++
templates/{roles => people}/layout.html | 2 +-
templates/{roles => people}/page.html | 2 +-
templates/products.html | 44 +++++++
templates/roles/index.html | 17 ---
12 files changed, 282 insertions(+), 183 deletions(-)
rename content/{roles => people}/_index.md (76%)
create mode 100644 content/products.md
create mode 100644 templates/people/index.html
rename templates/{roles => people}/layout.html (97%)
rename templates/{roles => people}/page.html (96%)
create mode 100644 templates/products.html
delete mode 100644 templates/roles/index.html
diff --git a/content/n0ps.md b/content/n0ps.md
index d345a7c..c5210e5 100644
--- a/content/n0ps.md
+++ b/content/n0ps.md
@@ -1,5 +1,5 @@
+++
-title = "number 0 protocol services"
+title = "number 0 services"
description = "Build on the edge with the team that lives there"
template="n0ps.html"
+++
diff --git a/content/roles/_index.md b/content/people/_index.md
similarity index 76%
rename from content/roles/_index.md
rename to content/people/_index.md
index b980366..9906cb5 100644
--- a/content/roles/_index.md
+++ b/content/people/_index.md
@@ -1,16 +1,16 @@
+++
-title = "Work with number 0"
-description = "Open positions"
+title = "People"
+description = "One of the very few teams with a proven track record of shipping direct connection topologies in production apps"
# Template to use to render this section page.
-template = "roles/index.html"
+template = "people/index.html"
# The given template is applied to ALL pages below the section, recursively.
# If you have several nested sections, each with a page_template set, the page
# will always use the closest to itself.
# However, a page's own `template` variable will always have priority.
# Not set by default.
-page_template = "roles/page.html"
+page_template = "people/page.html"
# The date of the post.
# Two formats are allowed: YYYY-MM-DD (2012-10-02) and RFC3339 (2002-10-02T15:00:00Z).
@@ -52,12 +52,3 @@ aliases = []
in_search_index = true
+++
-
-## Open Roles at number 0
-
-### We have no open roles at this time.
-
-Rather than leave "ghost roles" open that we don't intend to fill, we're opting to keep this page empty. If you're a truly standout human & think you'd be an incredible fit for out team, please reach out via email to "hello" at this website, or thorugh the iroh discord. Nearly all of our team has come to us thorugh "the passion door", instead of having an explicit role they applied for.
-
-Thanks,
-The number 0 team
diff --git a/content/products.md b/content/products.md
new file mode 100644
index 0000000..41cf7c7
--- /dev/null
+++ b/content/products.md
@@ -0,0 +1,5 @@
++++
+title = "number 0 products"
+description = "Get started today shipping quality networking software"
+template="products.html"
++++
diff --git a/static/styles/style.css b/static/styles/style.css
index 99e94cb..a86947e 100644
--- a/static/styles/style.css
+++ b/static/styles/style.css
@@ -259,26 +259,21 @@ img, video {
margin-right: auto;
}
-.my-10 {
- margin-top: 2.5rem;
- margin-bottom: 2.5rem;
-}
-
.my-5 {
margin-top: 1.25rem;
margin-bottom: 1.25rem;
}
-.mx-4 {
- margin-left: 1rem;
- margin-right: 1rem;
-}
-
.my-6 {
margin-top: 1.5rem;
margin-bottom: 1.5rem;
}
+.my-10 {
+ margin-top: 2.5rem;
+ margin-bottom: 2.5rem;
+}
+
.mt-40 {
margin-top: 10rem;
}
@@ -295,8 +290,8 @@ img, video {
margin-top: 2.5rem;
}
-.mb-4 {
- margin-bottom: 1rem;
+.mt-5 {
+ margin-top: 1.25rem;
}
.mr-auto {
@@ -307,18 +302,18 @@ img, video {
margin-bottom: auto;
}
-.mt-5 {
- margin-top: 1.25rem;
-}
-
-.ml-16 {
- margin-left: 4rem;
+.mr-4 {
+ margin-right: 1rem;
}
.mb-1 {
margin-bottom: .25rem;
}
+.mb-4 {
+ margin-bottom: 1rem;
+}
+
.mb-2 {
margin-bottom: .5rem;
}
@@ -339,10 +334,6 @@ img, video {
margin-left: .25rem;
}
-.mr-4 {
- margin-right: 1rem;
-}
-
.mb-8 {
margin-bottom: 2rem;
}
@@ -351,6 +342,14 @@ img, video {
margin-top: .25rem;
}
+.mb-10 {
+ margin-bottom: 2.5rem;
+}
+
+.mb-20 {
+ margin-bottom: 5rem;
+}
+
.block {
display: block;
}
@@ -395,6 +394,18 @@ img, video {
min-height: 100vh;
}
+.min-h-\[30vh\] {
+ min-height: 30vh;
+}
+
+.min-h-\[20vh\] {
+ min-height: 20vh;
+}
+
+.min-h-\[40vh\] {
+ min-height: 40vh;
+}
+
.w-auto {
width: auto;
}
@@ -403,6 +414,10 @@ img, video {
width: 100%;
}
+.w-6 {
+ width: 1.5rem;
+}
+
.w-40 {
width: 10rem;
}
@@ -411,14 +426,6 @@ img, video {
width: 7rem;
}
-.w-6 {
- width: 1.5rem;
-}
-
-.w-1\/2 {
- width: 50%;
-}
-
.max-w-6xl {
max-width: 72rem;
}
@@ -431,10 +438,6 @@ img, video {
max-width: 56rem;
}
-.max-w-2xl {
- max-width: 42rem;
-}
-
.flex-1 {
flex: 1;
}
@@ -491,30 +494,11 @@ img, video {
border-top-width: 1px;
}
-.border-dotted {
- border-style: dotted;
-}
-
.border-gray-700 {
--tw-border-opacity: 1;
border-color: rgb(55 65 81 / var(--tw-border-opacity));
}
-.border-gray-400 {
- --tw-border-opacity: 1;
- border-color: rgb(156 163 175 / var(--tw-border-opacity));
-}
-
-.bg-white {
- --tw-bg-opacity: 1;
- background-color: rgb(255 255 255 / var(--tw-bg-opacity));
-}
-
-.bg-irohPurple-500 {
- --tw-bg-opacity: 1;
- background-color: rgb(124 124 255 / var(--tw-bg-opacity));
-}
-
.bg-n0gray-600 {
--tw-bg-opacity: 1;
background-color: rgb(82 82 91 / var(--tw-bg-opacity));
@@ -535,6 +519,16 @@ img, video {
background-color: rgb(14 14 15 / var(--tw-bg-opacity));
}
+.bg-white {
+ --tw-bg-opacity: 1;
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity));
+}
+
+.bg-irohPurple-500 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(124 124 255 / var(--tw-bg-opacity));
+}
+
.bg-n0gray-800 {
--tw-bg-opacity: 1;
background-color: rgb(39 39 42 / var(--tw-bg-opacity));
@@ -561,10 +555,6 @@ img, video {
padding: .5rem;
}
-.p-6 {
- padding: 1.5rem;
-}
-
.px-4 {
padding-left: 1rem;
padding-right: 1rem;
@@ -575,11 +565,6 @@ img, video {
padding-bottom: 10rem;
}
-.px-10 {
- padding-left: 2.5rem;
- padding-right: 2.5rem;
-}
-
.py-3 {
padding-top: .75rem;
padding-bottom: .75rem;
@@ -610,12 +595,13 @@ img, video {
padding-bottom: 1.5rem;
}
-.pt-40 {
- padding-top: 10rem;
+.px-10 {
+ padding-left: 2.5rem;
+ padding-right: 2.5rem;
}
-.pt-5 {
- padding-top: 1.25rem;
+.pt-40 {
+ padding-top: 10rem;
}
.pt-2 {
@@ -654,8 +640,8 @@ img, video {
padding-bottom: 8rem;
}
-.text-right {
- text-align: right;
+.pt-10 {
+ padding-top: 2.5rem;
}
.font-space-mono {
@@ -753,14 +739,14 @@ img, video {
color: rgb(161 161 170 / var(--tw-text-opacity));
}
-.text-n0gray-900 {
+.text-n0pink-500 {
--tw-text-opacity: 1;
- color: rgb(24 24 27 / var(--tw-text-opacity));
+ color: rgb(255 172 156 / var(--tw-text-opacity));
}
-.text-white {
+.text-n0gray-900 {
--tw-text-opacity: 1;
- color: rgb(255 255 255 / var(--tw-text-opacity));
+ color: rgb(24 24 27 / var(--tw-text-opacity));
}
.text-n0gray-200 {
@@ -768,6 +754,11 @@ img, video {
color: rgb(228 228 231 / var(--tw-text-opacity));
}
+.text-white {
+ --tw-text-opacity: 1;
+ color: rgb(255 255 255 / var(--tw-text-opacity));
+}
+
.text-n0gray-700 {
--tw-text-opacity: 1;
color: rgb(63 63 70 / var(--tw-text-opacity));
@@ -778,11 +769,6 @@ img, video {
color: rgb(113 113 122 / var(--tw-text-opacity));
}
-.text-n0pink-500 {
- --tw-text-opacity: 1;
- color: rgb(255 172 156 / var(--tw-text-opacity));
-}
-
.text-gray-400 {
--tw-text-opacity: 1;
color: rgb(156 163 175 / var(--tw-text-opacity));
@@ -803,11 +789,6 @@ img, video {
color: rgb(243 244 246 / var(--tw-text-opacity));
}
-.text-gray-300 {
- --tw-text-opacity: 1;
- color: rgb(209 213 219 / var(--tw-text-opacity));
-}
-
.underline {
text-decoration-line: underline;
}
@@ -982,24 +963,20 @@ img, video {
width: 58.3333%;
}
- .sm\:w-5\/12 {
- width: 41.6667%;
- }
-
.sm\:w-2\/12 {
width: 16.6667%;
}
- .sm\:w-10\/12 {
- width: 83.3333%;
+ .sm\:w-4\/12 {
+ width: 33.3333%;
}
.sm\:w-9\/12 {
width: 75%;
}
- .sm\:w-4\/12 {
- width: 33.3333%;
+ .sm\:w-5\/12 {
+ width: 41.6667%;
}
.sm\:scroll-px-6 {
@@ -1041,11 +1018,6 @@ img, video {
text-align: right;
}
- .sm\:text-3xl {
- font-size: 1.875rem;
- line-height: 2.25rem;
- }
-
.sm\:text-xl {
font-size: 1.25rem;
line-height: 1.75rem;
@@ -1072,6 +1044,10 @@ img, video {
}
@media (min-width: 1024px) {
+ .lg\:mt-10 {
+ margin-top: 2.5rem;
+ }
+
.lg\:w-6\/12 {
width: 50%;
}
diff --git a/templates/index.html b/templates/index.html
index 113834d..1a0c1af 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -3,12 +3,20 @@
{% block content %}
-
+
00
Less net work for networks
We are an open R&D organization focused on efficient distributed systems
+
+
@@ -17,63 +25,53 @@
We are a
01
-
Rather than optimize for performance or decentralization, we're building networks that use fewer resources to perform the same task.
-
With five plus years of experience building open distributed systems each, our founding team understands the importance of collaboration and accessibility when it comes to developing innovative software and conducting research.
-
We measure everything. We think technology is best when it's a bit creative. We build things that just work. If that sounds cool to you, let's connect.
+
What We Do
+
We build software that uses fewer resources. We believe that apps should be able to sync and send data reliably anytime, anywhere. We specialize in creating fast, cheap, and direct networking connections between devices even with unstable connectivity.
+
We measure everything. We think technology is best when it's a bit creative. We build things that just work.
+
+
-
-
-
+
-
+
04
-
Hi Fren
+
Hi Friends
Follow us on social internet things
{% endblock content %}
diff --git a/templates/layout.html b/templates/layout.html
index 733d3ec..d5ceaae 100644
--- a/templates/layout.html
+++ b/templates/layout.html
@@ -73,11 +73,12 @@
@@ -87,10 +88,10 @@
@@ -125,6 +126,7 @@
+
{% endblock footer %}
diff --git a/templates/n0ps.html b/templates/n0ps.html
index f9fa81f..2406311 100644
--- a/templates/n0ps.html
+++ b/templates/n0ps.html
@@ -3,7 +3,7 @@
- number 0 protocol services
+ number 0 services
Shipping quality software is hard.
@@ -21,7 +21,7 @@
- “doesn’t work on hotel wifi”, “laggy connections at work”,
+ “doesn’t work on hotel wifi”, “laggy”,
“my phone is hot”. Users say kind things in interviews, but
things are not clicking. Your
networking engineer is now a networking team, the project is
@@ -32,9 +32,8 @@
It doesn’t have to be this way. The number 0 team can get
- you out of the food, water, & shelter phase of direct
- connections. We can get you up & running in weeks, with
- software that just works, so you can focus on delivering
+ you out of the food, water, & shelter phase. We can get
+ you up & running in weeks, with the tools to scale, so you can focus on delivering
meaningful software.
@@ -84,7 +83,7 @@
- We’ll keep iroh up to date for you, bringing the full
+ We’ll keep your integration up to date for you, bringing the full
value of a thriving open source project into your
codebase on a regular cadence.
diff --git a/templates/people/index.html b/templates/people/index.html
new file mode 100644
index 0000000..52057f1
--- /dev/null
+++ b/templates/people/index.html
@@ -0,0 +1,101 @@
+{% extends "layout.html" %} {% block content %}
+
+
+
+
+ team
+
+
+ One of the very few teams with a proven track record of shipping direct connection topologies in production
+
+
+
+
+ With 70+ years of experience building networked, edge, and cloud distributed systems, our team understands the importance of collaboration when it comes to developing innovative software and conducting research.
+
+
+ The number 0 team can get
+ you out of the food, water, & shelter phase of direct
+ connections. We can get you up & running in weeks, so you can focus on delivering
+ meaningful software.
+
+
+
+
+
+
+
+ Brendan O'Brian, CEO
+
+
+ Brendan is passionate about distributed systems, improving
+ the internet, and making technical concepts accessible
+ through storytelling. His main job at number 0 is
+ copy-pasting links to documents.
+
+
+
+
+
+
+ Kasey, Head of Engineering
+
+
+
+
+
+
+
+
+
+
+{% endblock %} {% block pagination %} {% if page.earlier or page.later or
+page.lighter or page.heavier %}
+
+{% endif %} {% endblock %}
diff --git a/templates/roles/layout.html b/templates/people/layout.html
similarity index 97%
rename from templates/roles/layout.html
rename to templates/people/layout.html
index 52fb6ed..97f0914 100644
--- a/templates/roles/layout.html
+++ b/templates/people/layout.html
@@ -58,7 +58,7 @@

-
roles
+
team
diff --git a/templates/roles/page.html b/templates/people/page.html
similarity index 96%
rename from templates/roles/page.html
rename to templates/people/page.html
index 4f93fe1..9978e1f 100644
--- a/templates/roles/page.html
+++ b/templates/people/page.html
@@ -1,4 +1,4 @@
-{% extends "roles/layout.html" %}
+{% extends "people/layout.html" %}
{% block content %}
+{% endif %} {% endblock %}
\ No newline at end of file
diff --git a/templates/roles/index.html b/templates/roles/index.html
deleted file mode 100644
index 10eba30..0000000
--- a/templates/roles/index.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "roles/layout.html" %}
-
-{% block content %}
-
-
- {% for page in section.pages %}
-
- {{ page.title }}
- open role at number 0
-
- {{ page.description | safe }}
-
-
- {% endfor %}
-
-
-{% endblock %}
\ No newline at end of file
From 5be4e25c31dbb9ecfdf274945ff81cd5665f0eb5 Mon Sep 17 00:00:00 2001
From: Rae McKelvey <633012+okdistribute@users.noreply.github.com>
Date: Thu, 6 Nov 2025 14:03:32 -0800
Subject: [PATCH 2/8] fix css on home page
---
templates/index.html | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/templates/index.html b/templates/index.html
index 1a0c1af..e230279 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -38,7 +38,7 @@ We measure everything. We think technology is best when it&apos
-
+
02
@@ -55,6 +55,21 @@ With 70+ years of experience building networked, edge, and clou
+
+
04
From af12e8c263b0cb12ee25bcc9339066898fd414e6 Mon Sep 17 00:00:00 2001
From: Rae McKelvey <633012+okdistribute@users.noreply.github.com>
Date: Sat, 8 Nov 2025 15:38:57 -0800
Subject: [PATCH 3/8] Add people
---
templates/index.html | 34 ++++++----------
templates/people/index.html | 81 ++++++++++++++++++++++++++++++++++---
2 files changed, 88 insertions(+), 27 deletions(-)
diff --git a/templates/index.html b/templates/index.html
index e230279..c08fae5 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -35,10 +35,17 @@ We measure everything. We think technology is best when it&apos
>Services
+
-
+
02
@@ -55,38 +62,21 @@ With 70+ years of experience building networked, edge, and clou
-
-
04
Hi Friends
-
Follow us on social internet things
+
Let's chat
{% endblock content %}
diff --git a/templates/people/index.html b/templates/people/index.html
index 52057f1..4d1b7cf 100644
--- a/templates/people/index.html
+++ b/templates/people/index.html
@@ -33,7 +33,7 @@
class="border-t border-gray-700 pt-6 pb-12 sm:grid sm:grid-cols-2 gap-5"
>
- Brendan O'Brian, CEO
+ Brendan O'Brian
Brendan is passionate about distributed systems, improving
@@ -46,10 +46,13 @@
class="border-t border-gray-700 pt-6 pb-12 sm:grid sm:grid-cols-2 gap-5"
>
- Dig, CTO
+ Friedel Ziegelmayer aka Dig
+Dig is in a deep love and hate relationship with computers for over 20 years, and continues to engage with them for reasons unknown to him.
+At n0 he tries to make sure that not the computers but the good humans come out on top at the end, because he still believes that computers are meant to make our lifes better.
+
>
- Kasey, Head of Engineering
+ Kasey Huizinga
+
+
+
+
+ Kasey enjoys working with smart folks on difficult engineering problems that solve real issues. Her primary responsibilities at n0 are wrangling releases and people.
+
+
+
+
+
+
+
+ Rae McKelvey
+
+
+
+
+ Rae is passionate about helping people build great technology that works anytime, anywhere — even with disrupted service, dead zones, or hostile infrastructure. At n0, Rae focuses on growth and adoption.
+
+
+
+
+
+
+ Asmir Avdicevic
+ Asmir enjoys geeking around with software and hardware. Putting together things from the home work bench and home lab up all the way into the cloud.
+At n0 you will usually find him on the metrics and ops side of things but also likes to take a stroll through the odd corners and problems.
+
- Flub
+ Rüdiger Klaehn
+ Rüdiger likes simple things that work. He is so stubborn that he continues to work on a problem until he considers it solved. At n0 he has the opportunity to do just that for content-addressed storage and peer to peer networking. He did space stuff in the past and still likes to watch rocket launches with his 4 kids.
+
+
+
+
+
+
+
+
+ Franz Heinzmann aka Frando
+
+
+
+
+
+Franz came to n0 from ever-unfinished efforts to make peer-to-peer tools work for grassroots media. He’s relieved to finally build solid foundations for real this time. When not busy with iroh core development, he’s probably creating a demo or protocol prototype to bring iroh into new areas.
+
+
+
+
+
+
+
+ Philipp Krüger
+
+
+
+
+
+ Philipp took a long walk through many programming-related interests from game development to frontend to functional programming to cryptography, but nowadays writes networking software.
+When he joined, he helped make iroh run in browsers and now is the person everyone else trusts too much to touch the cryptographic bits. Occasionally he might disappear into the nearest forest for a trail run.
@@ -84,11 +154,12 @@
>
- Asmir
+ Floris Bruynooghe
+Floris enjoys working on the least user-visible engineering problems. At n0 he obsesses over exactly how to shuffle bytes over the many wires of the internet. He hopes you never noticed.
From 86028b63871dbf1b7cfedc90021614d5c5361f78 Mon Sep 17 00:00:00 2001
From: Rae McKelvey <633012+okdistribute@users.noreply.github.com>
Date: Mon, 10 Nov 2025 09:19:57 -0800
Subject: [PATCH 4/8] add gtihub links to people
---
content/contact.md | 2 +-
content/people/_index.md | 2 +-
content/people/asmir-avdicevic.md | 6 ++
content/people/brendan-obrien.md | 6 ++
content/people/floris-bruynooghe.md | 6 ++
content/people/franz-heinzmann.md | 6 ++
content/people/friedel-ziegelmayer.md | 6 ++
content/people/kasey-huizinga.md | 6 ++
content/people/philipp-kruger.md | 6 ++
content/people/rae-mckelvey.md | 6 ++
content/people/rudiger-klaehn.md | 6 ++
js/site.js | 106 ++++++++++++++++++
src/js/site.js | 43 ++++++++
static/img/Github_logo_svg.webp | Bin 0 -> 8012 bytes
static/styles/style.css | 95 ++++++++++++----
templates/index.html | 19 +++-
templates/layout.html | 33 +++++-
templates/people/index.html | 149 +++-----------------------
templates/people/page.html | 26 -----
templates/products.html | 28 +----
20 files changed, 345 insertions(+), 212 deletions(-)
create mode 100644 content/people/asmir-avdicevic.md
create mode 100644 content/people/brendan-obrien.md
create mode 100644 content/people/floris-bruynooghe.md
create mode 100644 content/people/franz-heinzmann.md
create mode 100644 content/people/friedel-ziegelmayer.md
create mode 100644 content/people/kasey-huizinga.md
create mode 100644 content/people/philipp-kruger.md
create mode 100644 content/people/rae-mckelvey.md
create mode 100644 content/people/rudiger-klaehn.md
create mode 100644 js/site.js
create mode 100644 static/img/Github_logo_svg.webp
delete mode 100644 templates/people/page.html
diff --git a/content/contact.md b/content/contact.md
index 0f91414..1b81023 100644
--- a/content/contact.md
+++ b/content/contact.md
@@ -53,4 +53,4 @@ template = "page.html"
[extra]
+++
-Get in touch by emailing hello [at] (n0.computer)
+Get in touch by emailing hello [at] (n0.computer) or by [booking a meeting](https://cal.com/team/number-0/n0-protocol-services)
diff --git a/content/people/_index.md b/content/people/_index.md
index 9906cb5..8ae1c48 100644
--- a/content/people/_index.md
+++ b/content/people/_index.md
@@ -10,7 +10,7 @@ template = "people/index.html"
# will always use the closest to itself.
# However, a page's own `template` variable will always have priority.
# Not set by default.
-page_template = "people/page.html"
+# page_template =
# The date of the post.
# Two formats are allowed: YYYY-MM-DD (2012-10-02) and RFC3339 (2002-10-02T15:00:00Z).
diff --git a/content/people/asmir-avdicevic.md b/content/people/asmir-avdicevic.md
new file mode 100644
index 0000000..28d1fd5
--- /dev/null
+++ b/content/people/asmir-avdicevic.md
@@ -0,0 +1,6 @@
++++
+title = "Asmir Avdicevic"
+description = "arqu"
++++
+
+Asmir enjoys geeking around with software and hardware. Putting together things from the home work bench and home lab up all the way into the cloud. At n0 you will usually find him on the metrics and ops side of things but also likes to take a stroll through the odd corners and problems.
diff --git a/content/people/brendan-obrien.md b/content/people/brendan-obrien.md
new file mode 100644
index 0000000..4571a71
--- /dev/null
+++ b/content/people/brendan-obrien.md
@@ -0,0 +1,6 @@
++++
+title = "Brendan O'Brian"
+description = "b5"
++++
+
+Brendan is passionate about distributed systems, improving the internet, and making technical concepts accessible through storytelling. His main job at number 0 is copy-pasting links to documents.
diff --git a/content/people/floris-bruynooghe.md b/content/people/floris-bruynooghe.md
new file mode 100644
index 0000000..e142cbc
--- /dev/null
+++ b/content/people/floris-bruynooghe.md
@@ -0,0 +1,6 @@
++++
+title = "Floris Bruynooghe"
+description = "flub"
++++
+
+Floris enjoys working on the least user-visible engineering problems. At n0 he obsesses over exactly how to shuffle bytes over the many wires of the internet. He hopes you never noticed.
diff --git a/content/people/franz-heinzmann.md b/content/people/franz-heinzmann.md
new file mode 100644
index 0000000..41043c5
--- /dev/null
+++ b/content/people/franz-heinzmann.md
@@ -0,0 +1,6 @@
++++
+title = "Franz Heinzmann"
+description = "Frando"
++++
+
+Franz came to n0 from ever-unfinished efforts to make peer-to-peer tools work for grassroots media. He’s relieved to finally build solid foundations for real this time. When not busy with iroh core development, he’s probably creating a demo or protocol prototype to bring iroh into new areas.
diff --git a/content/people/friedel-ziegelmayer.md b/content/people/friedel-ziegelmayer.md
new file mode 100644
index 0000000..c1d577b
--- /dev/null
+++ b/content/people/friedel-ziegelmayer.md
@@ -0,0 +1,6 @@
++++
+title = "Friedel Ziegelmayer"
+description = "dignifiedquire"
++++
+
+Dig is in a deep love and hate relationship with computers for over 20 years, and continues to engage with them for reasons unknown to him. At n0 he tries to make sure that not the computers but the good humans come out on top at the end, because he still believes that computers are meant to make our lifes better.
diff --git a/content/people/kasey-huizinga.md b/content/people/kasey-huizinga.md
new file mode 100644
index 0000000..2360117
--- /dev/null
+++ b/content/people/kasey-huizinga.md
@@ -0,0 +1,6 @@
++++
+title = "Kasey Huizinga"
+description = "ramfox"
++++
+
+Kasey enjoys working with smart folks on difficult engineering problems that solve real issues. Her primary responsibilities at n0 are wrangling releases and people.
diff --git a/content/people/philipp-kruger.md b/content/people/philipp-kruger.md
new file mode 100644
index 0000000..99fa481
--- /dev/null
+++ b/content/people/philipp-kruger.md
@@ -0,0 +1,6 @@
++++
+title = "Philipp Krüger"
+description = "matheus23"
++++
+
+Philipp took a long walk through many programming-related interests from game development to frontend to functional programming to cryptography, but nowadays writes networking software. When he joined, he helped make iroh run in browsers and now is the person everyone else trusts too much to touch the cryptographic bits. Occasionally he might disappear into the nearest forest for a trail run.
diff --git a/content/people/rae-mckelvey.md b/content/people/rae-mckelvey.md
new file mode 100644
index 0000000..b18f938
--- /dev/null
+++ b/content/people/rae-mckelvey.md
@@ -0,0 +1,6 @@
++++
+title = "Rae McKelvey"
+description = "okdistrubte"
++++
+
+Rae is passionate about helping people build great technology that works anytime, anywhere — even with disrupted service, dead zones, or hostile infrastructure. At n0, Rae focuses on growth and adoption.
diff --git a/content/people/rudiger-klaehn.md b/content/people/rudiger-klaehn.md
new file mode 100644
index 0000000..12c931b
--- /dev/null
+++ b/content/people/rudiger-klaehn.md
@@ -0,0 +1,6 @@
++++
+title = "Rüdiger Klaehn"
+description = "rklaehn"
++++
+
+Rüdiger likes simple things that work. He is so stubborn that he continues to work on a problem until he considers it solved. At n0 he has the opportunity to do just that for content-addressed storage and peer to peer networking. He did space stuff in the past and still likes to watch rocket launches with his 4 kids.
diff --git a/js/site.js b/js/site.js
new file mode 100644
index 0000000..ec014ae
--- /dev/null
+++ b/js/site.js
@@ -0,0 +1,106 @@
+document.addEventListener("DOMContentLoaded", function() {
+ // ---------------- Selected Navbar Link -------------------------
+ let navbar_links = document.querySelectorAll('.nav-links a');
+ let trim_last_slash = window.location.href.replace(/\/$/, '');
+ let selected_navbar_link = [...navbar_links].filter((item) => {
+ return ((item.href === trim_last_slash) || (item.href === window.location.href))
+ })
+ if (selected_navbar_link.length !== 0) {
+ for (let element of selected_navbar_link) {
+ element.className = "bg-gray-900 text-white px-3 py-2 rounded-md text-sm font-medium"
+ }
+ }
+
+ document.getElementById('toggle-sidebar')?.addEventListener('click', toggleSidebar);
+
+
+ document.getElementById('toggle-mobile-menu')?.addEventListener('click', toggleMobileMenu);
+
+ // Products dropdown (desktop)
+ const prodToggle = document.getElementById('toggle-products-dropdown');
+ const prodMenu = document.getElementById('products-dropdown');
+ if (prodToggle && prodMenu) {
+ console.debug('Products dropdown initialized', {prodToggle, prodMenu});
+ prodToggle.addEventListener('click', function(e) {
+ console.debug('Products toggle clicked');
+ e.stopPropagation();
+ const isOpen = prodMenu.classList.contains('hidden') === false;
+ if (isOpen) {
+ prodMenu.classList.add('hidden');
+ prodMenu.setAttribute('aria-hidden', 'true');
+ prodToggle.setAttribute('aria-expanded', 'false');
+ } else {
+ prodMenu.classList.remove('hidden');
+ prodMenu.setAttribute('aria-hidden', 'false');
+ prodToggle.setAttribute('aria-expanded', 'true');
+ }
+ });
+
+ // Close when clicking outside
+ document.addEventListener('click', function(e) {
+ if (!prodMenu.classList.contains('hidden')) {
+ if (!prodMenu.contains(e.target) && !prodToggle.contains(e.target)) {
+ prodMenu.classList.add('hidden');
+ prodMenu.setAttribute('aria-hidden', 'true');
+ prodToggle.setAttribute('aria-expanded', 'false');
+ }
+ }
+ });
+
+ // Close on escape
+ document.addEventListener('keydown', function(e) {
+ if (e.key === 'Escape') {
+ if (!prodMenu.classList.contains('hidden')) {
+ prodMenu.classList.add('hidden');
+ prodMenu.setAttribute('aria-hidden', 'true');
+ prodToggle.setAttribute('aria-expanded', 'false');
+ }
+ }
+ });
+ }
+});
+
+function switchTheme() {
+ let current_theme = ([...document.documentElement.classList].includes('dark')) ? 'dark' : 'light';
+ if (current_theme === 'dark') {
+ localStorage.theme = 'light';
+ document.documentElement.classList.remove('dark');
+ document.getElementById('light').classList.add('hidden');
+ document.getElementById('dark').classList.remove('hidden');
+ document.getElementById("syntax_highlight").href = "/syntax-light.css";
+ } else {
+ localStorage.theme = 'dark';
+ document.documentElement.classList.add('dark');
+ document.getElementById('dark').classList.add('hidden');
+ document.getElementById('light').classList.remove('hidden');
+ document.getElementById("syntax_highlight").href = "/syntax-dark.css";
+ }
+}
+
+function toggleSidebar() {
+ let sidebar = document.getElementById('sidebar');
+ if ([...sidebar.classList].includes('translate-x-0')) {
+ document.body.style.removeProperty("overflow")
+ sidebar.classList.remove('translate-x-0')
+ sidebar.classList.add('-translate-x-full')
+ } else {
+ document.body.style.setProperty("overflow", "hidden")
+ sidebar.classList.remove('-translate-x-full')
+ sidebar.classList.add('translate-x-0')
+ }
+}
+
+function toggleMobileMenu() {
+ let menu = document.querySelector('#mobile-menu div.nav-links');
+ if ([...menu.classList].includes('h-screen')) {
+ document.body.classList.remove("overflow-hidden", "relative")
+ document.documentElement.classList.remove("overscroll-none",)
+ menu.classList.remove('h-screen')
+ menu.classList.add('h-0')
+ } else {
+ document.body.classList.add("overflow-hidden", "relative")
+ document.documentElement.classList.add("overscroll-none",)
+ menu.classList.remove('h-0')
+ menu.classList.add('h-screen')
+ }
+}
diff --git a/src/js/site.js b/src/js/site.js
index f065af7..d2acaa6 100644
--- a/src/js/site.js
+++ b/src/js/site.js
@@ -15,6 +15,49 @@ document.addEventListener("DOMContentLoaded", function() {
document.getElementById('toggle-mobile-menu')?.addEventListener('click', toggleMobileMenu);
+
+ // Products dropdown (desktop)
+ const prodToggle = document.getElementById('toggle-products-dropdown');
+ const prodMenu = document.getElementById('products-dropdown');
+ if (prodToggle && prodMenu) {
+ console.debug('Products dropdown initialized', {prodToggle, prodMenu});
+ prodToggle.addEventListener('click', function(e) {
+ console.debug('Products toggle clicked');
+ e.stopPropagation();
+ const isOpen = prodMenu.classList.contains('hidden') === false;
+ if (isOpen) {
+ prodMenu.classList.add('hidden');
+ prodMenu.setAttribute('aria-hidden', 'true');
+ prodToggle.setAttribute('aria-expanded', 'false');
+ } else {
+ prodMenu.classList.remove('hidden');
+ prodMenu.setAttribute('aria-hidden', 'false');
+ prodToggle.setAttribute('aria-expanded', 'true');
+ }
+ });
+
+ // Close when clicking outside
+ document.addEventListener('click', function(e) {
+ if (!prodMenu.classList.contains('hidden')) {
+ if (!prodMenu.contains(e.target) && !prodToggle.contains(e.target)) {
+ prodMenu.classList.add('hidden');
+ prodMenu.setAttribute('aria-hidden', 'true');
+ prodToggle.setAttribute('aria-expanded', 'false');
+ }
+ }
+ });
+
+ // Close on escape
+ document.addEventListener('keydown', function(e) {
+ if (e.key === 'Escape') {
+ if (!prodMenu.classList.contains('hidden')) {
+ prodMenu.classList.add('hidden');
+ prodMenu.setAttribute('aria-hidden', 'true');
+ prodToggle.setAttribute('aria-expanded', 'false');
+ }
+ }
+ });
+ }
});
function switchTheme() {
diff --git a/static/img/Github_logo_svg.webp b/static/img/Github_logo_svg.webp
new file mode 100644
index 0000000000000000000000000000000000000000..3708f885e3f266d8218e68fec67ed6da13c29c03
GIT binary patch
literal 8012
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
literal 0
HcmV?d00001
diff --git a/static/styles/style.css b/static/styles/style.css
index a86947e..9ae4005 100644
--- a/static/styles/style.css
+++ b/static/styles/style.css
@@ -254,6 +254,10 @@ img, video {
right: 0;
}
+.z-20 {
+ z-index: 20;
+}
+
.mx-auto {
margin-left: auto;
margin-right: auto;
@@ -338,16 +342,12 @@ img, video {
margin-bottom: 2rem;
}
-.mt-1 {
- margin-top: .25rem;
-}
-
-.mb-10 {
- margin-bottom: 2.5rem;
+.mr-2 {
+ margin-right: .5rem;
}
-.mb-20 {
- margin-bottom: 5rem;
+.ml-2 {
+ margin-left: .5rem;
}
.block {
@@ -358,6 +358,10 @@ img, video {
display: inline-block;
}
+.inline {
+ display: inline;
+}
+
.flex {
display: flex;
}
@@ -386,26 +390,22 @@ img, video {
height: 2rem;
}
-.min-h-\[70vh\] {
- min-height: 70vh;
+.h-4 {
+ height: 1rem;
}
-.min-h-screen {
- min-height: 100vh;
+.min-h-\[40vh\] {
+ min-height: 40vh;
}
-.min-h-\[30vh\] {
- min-height: 30vh;
+.min-h-screen {
+ min-height: 100vh;
}
.min-h-\[20vh\] {
min-height: 20vh;
}
-.min-h-\[40vh\] {
- min-height: 40vh;
-}
-
.w-auto {
width: auto;
}
@@ -426,6 +426,22 @@ img, video {
width: 7rem;
}
+.w-2 {
+ width: .5rem;
+}
+
+.w-5 {
+ width: 1.25rem;
+}
+
+.w-4 {
+ width: 1rem;
+}
+
+.w-48 {
+ width: 12rem;
+}
+
.max-w-6xl {
max-width: 72rem;
}
@@ -450,6 +466,10 @@ img, video {
cursor: pointer;
}
+.list-none {
+ list-style-type: none;
+}
+
.flex-col {
flex-direction: column;
}
@@ -543,6 +563,11 @@ img, video {
background-color: #0000;
}
+.bg-black {
+ --tw-bg-opacity: 1;
+ background-color: rgb(0 0 0 / var(--tw-bg-opacity));
+}
+
.bg-cover {
background-size: cover;
}
@@ -600,6 +625,11 @@ img, video {
padding-right: 2.5rem;
}
+.py-1 {
+ padding-top: .25rem;
+ padding-bottom: .25rem;
+}
+
.pt-40 {
padding-top: 10rem;
}
@@ -640,8 +670,8 @@ img, video {
padding-bottom: 8rem;
}
-.pt-10 {
- padding-top: 2.5rem;
+.pl-4 {
+ padding-left: 1rem;
}
.font-space-mono {
@@ -803,6 +833,27 @@ img, video {
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
+.shadow-lg {
+ --tw-shadow: 0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;
+ --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
+}
+
+.ring-1 {
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
+}
+
+.ring-black {
+ --tw-ring-opacity: 1;
+ --tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity));
+}
+
+.ring-opacity-5 {
+ --tw-ring-opacity: .05;
+}
+
.filter {
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
@@ -926,6 +977,10 @@ img, video {
--tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity));
}
+.group:hover .group-hover\:block {
+ display: block;
+}
+
@media (min-width: 640px) {
.sm\:inset-auto {
inset: auto;
diff --git a/templates/index.html b/templates/index.html
index c08fae5..490e4b7 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -39,7 +39,7 @@ We measure everything. We think technology is best when it&apos
Productsiroh
@@ -62,6 +62,23 @@ With 70+ years of experience building networked, edge, and clou
+
04
diff --git a/templates/layout.html b/templates/layout.html
index d5ceaae..1985b4e 100644
--- a/templates/layout.html
+++ b/templates/layout.html
@@ -74,11 +74,26 @@
@@ -87,8 +102,16 @@
-
-
- Brendan O'Brian
-
-
- Brendan is passionate about distributed systems, improving
- the internet, and making technical concepts accessible
- through storytelling. His main job at number 0 is
- copy-pasting links to documents.
-
-
-
-
- Friedel Ziegelmayer aka Dig
-
-
-
-Dig is in a deep love and hate relationship with computers for over 20 years, and continues to engage with them for reasons unknown to him.
-At n0 he tries to make sure that not the computers but the good humans come out on top at the end, because he still believes that computers are meant to make our lifes better.
-
-
-
-
-
-
- Kasey Huizinga
-
-
-
-
- Kasey enjoys working with smart folks on difficult engineering problems that solve real issues. Her primary responsibilities at n0 are wrangling releases and people.
-
-
-
-
-
-
-
- Rae McKelvey
-
-
-
-
- Rae is passionate about helping people build great technology that works anytime, anywhere — even with disrupted service, dead zones, or hostile infrastructure. At n0, Rae focuses on growth and adoption.
-
-
-
-
-
-
- Asmir Avdicevic
-
-
-
-
- Asmir enjoys geeking around with software and hardware. Putting together things from the home work bench and home lab up all the way into the cloud.
-At n0 you will usually find him on the metrics and ops side of things but also likes to take a stroll through the odd corners and problems.
-
-
-
-
-
-
-
- Rüdiger Klaehn
-
-
-
-
- Rüdiger likes simple things that work. He is so stubborn that he continues to work on a problem until he considers it solved. At n0 he has the opportunity to do just that for content-addressed storage and peer to peer networking. He did space stuff in the past and still likes to watch rocket launches with his 4 kids.
-
-
-
-
-
-
-
-
- Franz Heinzmann aka Frando
-
-
-
-
-
-Franz came to n0 from ever-unfinished efforts to make peer-to-peer tools work for grassroots media. He’s relieved to finally build solid foundations for real this time. When not busy with iroh core development, he’s probably creating a demo or protocol prototype to bring iroh into new areas.
-
-
-
-
-
-
-
- Philipp Krüger
-
-
-
-
-
- Philipp took a long walk through many programming-related interests from game development to frontend to functional programming to cryptography, but nowadays writes networking software.
-When he joined, he helped make iroh run in browsers and now is the person everyone else trusts too much to touch the cryptographic bits. Occasionally he might disappear into the nearest forest for a trail run.
-
-
-
-
-
-
-
- Floris Bruynooghe
-
-
-
-
-Floris enjoys working on the least user-visible engineering problems. At n0 he obsesses over exactly how to shuffle bytes over the many wires of the internet. He hopes you never noticed.
-
-
-
-
+
+
+ {% for page in section.pages %}
+
+
+
+
+
{{ page.title }}
+

+
+
+
{{ page.content | safe }}
+
+ {% endfor %}
{% endblock %} {% block pagination %} {% if page.earlier or page.later or
page.lighter or page.heavier %}
diff --git a/templates/people/page.html b/templates/people/page.html
deleted file mode 100644
index 9978e1f..0000000
--- a/templates/people/page.html
+++ /dev/null
@@ -1,26 +0,0 @@
-{% extends "people/layout.html" %}
-
-{% block content %}
-
-
-
-
- {{ page.title }}
-
-
open role at number 0
-
location: {{ page.extra.location }}
-
contract term: {{ page.extra.contract_term }}
-
- {{ page.description }}
-
-
-
- {{ page.content | safe }}
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/products.html b/templates/products.html
index 30b650a..80a5dde 100644
--- a/templates/products.html
+++ b/templates/products.html
@@ -1,15 +1,6 @@
{% extends "layout.html" %} {% block content %}
-
-
-
-
02
-
- Products
-
-
-
-
-
From 826bb557983674f97207adb03dc1cff9f59a3b6b Mon Sep 17 00:00:00 2001
From: Rae McKelvey <633012+okdistribute@users.noreply.github.com>
Date: Mon, 10 Nov 2025 09:24:44 -0800
Subject: [PATCH 5/8] remove unused products page
---
static/styles/style.css | 128 +++++++++++++++++-----------------------
templates/index.html | 4 +-
templates/products.html | 24 --------
3 files changed, 56 insertions(+), 100 deletions(-)
delete mode 100644 templates/products.html
diff --git a/static/styles/style.css b/static/styles/style.css
index 9ae4005..9bfb2b7 100644
--- a/static/styles/style.css
+++ b/static/styles/style.css
@@ -263,6 +263,11 @@ img, video {
margin-right: auto;
}
+.my-10 {
+ margin-top: 2.5rem;
+ margin-bottom: 2.5rem;
+}
+
.my-5 {
margin-top: 1.25rem;
margin-bottom: 1.25rem;
@@ -273,11 +278,6 @@ img, video {
margin-bottom: 1.5rem;
}
-.my-10 {
- margin-top: 2.5rem;
- margin-bottom: 2.5rem;
-}
-
.mt-40 {
margin-top: 10rem;
}
@@ -302,6 +302,14 @@ img, video {
margin-right: auto;
}
+.ml-2 {
+ margin-left: .5rem;
+}
+
+.mt-2 {
+ margin-top: .5rem;
+}
+
.mb-auto {
margin-bottom: auto;
}
@@ -326,10 +334,6 @@ img, video {
margin-right: 2.5rem;
}
-.mt-2 {
- margin-top: .5rem;
-}
-
.mb-6 {
margin-bottom: 1.5rem;
}
@@ -342,14 +346,6 @@ img, video {
margin-bottom: 2rem;
}
-.mr-2 {
- margin-right: .5rem;
-}
-
-.ml-2 {
- margin-left: .5rem;
-}
-
.block {
display: block;
}
@@ -402,10 +398,6 @@ img, video {
min-height: 100vh;
}
-.min-h-\[20vh\] {
- min-height: 20vh;
-}
-
.w-auto {
width: auto;
}
@@ -414,10 +406,6 @@ img, video {
width: 100%;
}
-.w-6 {
- width: 1.5rem;
-}
-
.w-40 {
width: 10rem;
}
@@ -426,14 +414,14 @@ img, video {
width: 7rem;
}
-.w-2 {
- width: .5rem;
-}
-
.w-5 {
width: 1.25rem;
}
+.w-6 {
+ width: 1.5rem;
+}
+
.w-4 {
width: 1rem;
}
@@ -524,29 +512,29 @@ img, video {
background-color: rgb(82 82 91 / var(--tw-bg-opacity));
}
-.bg-n0pink-600 {
+.bg-white {
--tw-bg-opacity: 1;
- background-color: rgb(226 132 125 / var(--tw-bg-opacity));
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}
-.bg-n0gray-900 {
+.bg-irohPurple-500 {
--tw-bg-opacity: 1;
- background-color: rgb(24 24 27 / var(--tw-bg-opacity));
+ background-color: rgb(124 124 255 / var(--tw-bg-opacity));
}
-.bg-n0gray-1000 {
+.bg-black {
--tw-bg-opacity: 1;
- background-color: rgb(14 14 15 / var(--tw-bg-opacity));
+ background-color: rgb(0 0 0 / var(--tw-bg-opacity));
}
-.bg-white {
+.bg-n0pink-600 {
--tw-bg-opacity: 1;
- background-color: rgb(255 255 255 / var(--tw-bg-opacity));
+ background-color: rgb(226 132 125 / var(--tw-bg-opacity));
}
-.bg-irohPurple-500 {
+.bg-n0gray-900 {
--tw-bg-opacity: 1;
- background-color: rgb(124 124 255 / var(--tw-bg-opacity));
+ background-color: rgb(24 24 27 / var(--tw-bg-opacity));
}
.bg-n0gray-800 {
@@ -554,6 +542,11 @@ img, video {
background-color: rgb(39 39 42 / var(--tw-bg-opacity));
}
+.bg-n0gray-1000 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(14 14 15 / var(--tw-bg-opacity));
+}
+
.bg-gray-900 {
--tw-bg-opacity: 1;
background-color: rgb(17 24 39 / var(--tw-bg-opacity));
@@ -563,11 +556,6 @@ img, video {
background-color: #0000;
}
-.bg-black {
- --tw-bg-opacity: 1;
- background-color: rgb(0 0 0 / var(--tw-bg-opacity));
-}
-
.bg-cover {
background-size: cover;
}
@@ -590,6 +578,11 @@ img, video {
padding-bottom: 10rem;
}
+.px-10 {
+ padding-left: 2.5rem;
+ padding-right: 2.5rem;
+}
+
.py-3 {
padding-top: .75rem;
padding-bottom: .75rem;
@@ -610,6 +603,11 @@ img, video {
padding-bottom: .5rem;
}
+.py-1 {
+ padding-top: .25rem;
+ padding-bottom: .25rem;
+}
+
.px-2 {
padding-left: .5rem;
padding-right: .5rem;
@@ -620,16 +618,6 @@ img, video {
padding-bottom: 1.5rem;
}
-.px-10 {
- padding-left: 2.5rem;
- padding-right: 2.5rem;
-}
-
-.py-1 {
- padding-top: .25rem;
- padding-bottom: .25rem;
-}
-
.pt-40 {
padding-top: 10rem;
}
@@ -642,6 +630,10 @@ img, video {
padding-bottom: .75rem;
}
+.pl-4 {
+ padding-left: 1rem;
+}
+
.pt-20 {
padding-top: 5rem;
}
@@ -670,10 +662,6 @@ img, video {
padding-bottom: 8rem;
}
-.pl-4 {
- padding-left: 1rem;
-}
-
.font-space-mono {
font-family: Space Mono, sans-serif;
}
@@ -779,14 +767,14 @@ img, video {
color: rgb(24 24 27 / var(--tw-text-opacity));
}
-.text-n0gray-200 {
+.text-white {
--tw-text-opacity: 1;
- color: rgb(228 228 231 / var(--tw-text-opacity));
+ color: rgb(255 255 255 / var(--tw-text-opacity));
}
-.text-white {
+.text-n0gray-200 {
--tw-text-opacity: 1;
- color: rgb(255 255 255 / var(--tw-text-opacity));
+ color: rgb(228 228 231 / var(--tw-text-opacity));
}
.text-n0gray-700 {
@@ -977,10 +965,6 @@ img, video {
--tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity));
}
-.group:hover .group-hover\:block {
- display: block;
-}
-
@media (min-width: 640px) {
.sm\:inset-auto {
inset: auto;
@@ -1018,6 +1002,10 @@ img, video {
width: 58.3333%;
}
+ .sm\:w-5\/12 {
+ width: 41.6667%;
+ }
+
.sm\:w-2\/12 {
width: 16.6667%;
}
@@ -1030,10 +1018,6 @@ img, video {
width: 75%;
}
- .sm\:w-5\/12 {
- width: 41.6667%;
- }
-
.sm\:scroll-px-6 {
scroll-padding-left: 1.5rem;
scroll-padding-right: 1.5rem;
@@ -1099,10 +1083,6 @@ img, video {
}
@media (min-width: 1024px) {
- .lg\:mt-10 {
- margin-top: 2.5rem;
- }
-
.lg\:w-6\/12 {
width: 50%;
}
diff --git a/templates/index.html b/templates/index.html
index 490e4b7..28120f4 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -70,8 +70,8 @@ With 70+ years of experience building networked, edge, and clou
A toolkit for building distributed applications.
-
- Get Started with iroh
+
+ Get started with iroh
Follow Development on GitHub
diff --git a/templates/products.html b/templates/products.html
deleted file mode 100644
index 80a5dde..0000000
--- a/templates/products.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
-{% extends "layout.html" %} {% block content %}
-
-
-{% endblock %} {% block pagination %} {% if page.earlier or page.later or
-page.lighter or page.heavier %}
-
-{% endif %} {% endblock %}
\ No newline at end of file
From 298ae2f2e3703dddcdbb1ed1bf9b5b7c792b4473 Mon Sep 17 00:00:00 2001
From: Rae McKelvey <633012+okdistribute@users.noreply.github.com>
Date: Mon, 10 Nov 2025 09:32:59 -0800
Subject: [PATCH 6/8] remove products.md
---
content/products.md | 5 -----
1 file changed, 5 deletions(-)
delete mode 100644 content/products.md
diff --git a/content/products.md b/content/products.md
deleted file mode 100644
index 41cf7c7..0000000
--- a/content/products.md
+++ /dev/null
@@ -1,5 +0,0 @@
-+++
-title = "number 0 products"
-description = "Get started today shipping quality networking software"
-template="products.html"
-+++
From 29853de127919bd0dffeb44127d506f8da3586d1 Mon Sep 17 00:00:00 2001
From: Rae McKelvey <633012+okdistribute@users.noreply.github.com>
Date: Mon, 10 Nov 2025 09:40:16 -0800
Subject: [PATCH 7/8] Add diva
---
content/people/diva-martinez.md | 6 ++++++
1 file changed, 6 insertions(+)
create mode 100644 content/people/diva-martinez.md
diff --git a/content/people/diva-martinez.md b/content/people/diva-martinez.md
new file mode 100644
index 0000000..7ab1dd2
--- /dev/null
+++ b/content/people/diva-martinez.md
@@ -0,0 +1,6 @@
++++
+title = "Diva Martínez"
+description = "divagant-martian"
++++
+
+Diva loves to work close to computers. She's been doing protocol work the last years and it's her main role at n0.
\ No newline at end of file
From d11e161f40fc26bb3f04d4f9a7d5d89897602e3c Mon Sep 17 00:00:00 2001
From: Rae McKelvey <633012+okdistribute@users.noreply.github.com>
Date: Tue, 11 Nov 2025 09:21:14 -0800
Subject: [PATCH 8/8] combined experience
---
templates/index.html | 2 +-
templates/people/index.html | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/templates/index.html b/templates/index.html
index 28120f4..dc04890 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -51,7 +51,7 @@ 02
Who we Are
-
With 70+ years of experience building networked, edge, and cloud distributed systems, our team understands the importance of collaboration when it comes to developing innovative software and conducting research.
+
With combined 70+ years of experience building networked, edge, and cloud distributed systems, our team understands the importance of collaboration when it comes to developing innovative software and conducting research.