diff --git a/_data/ecosystem.yml b/_data/ecosystem.yml new file mode 100644 index 0000000..b234743 --- /dev/null +++ b/_data/ecosystem.yml @@ -0,0 +1,50 @@ +title: "AtomVM Ecosystem" +intro: "They love AtomVM, and we love them!" + +categories: + - heading: "Commercial Products" + items: + - name: "La Machine" + logo: /assets/images/ecosystem/la-machine.svg + desc: >- + An artistic, hardware "Useless Box" reloaded with Erlang. Built completely offline, it + demonstrates AtomVM's extreme reliability, stability, and deterministic memory management + in a rugged standalone production environment on an ESP32-C3 chip. + links: + - { label: "GitHub", url: "https://github.com/pguyot/la_machine" } + - { label: "Website", url: "https://la-machine.fr/" } + + - heading: "Third-Party Projects" + items: + - name: "midiMESH" + logo: /assets/images/ecosystem/midimesh.svg + desc: >- + Real-time network MIDI handling using Elixir on the ESP32. It routes audio and musical + instrument data over network protocols, leveraging AtomVM's execution model to safely + coordinate live hardware and network events. + links: + - { label: "GitHub", url: "https://github.com/nanassound/midimesh_esp32" } + + - heading: "Strategic Ecosystem Contributors" + items: + - name: "NLnet Foundation (NGI0 Commons Fund)" + logo: /assets/images/ecosystem/nlnet.svg + logo_dark: /assets/images/ecosystem/nlnet-dark.svg + desc: >- + NLnet officially funds and hosts the "Towards AtomVM v1.0" project initiative, + providing strategic financial backing to expand hardware support, polish core APIs, and + improve runtime security on the road to a stable 1.0 release. + links: + - { label: "NLnet project", url: "https://nlnet.nl/project/AtomVM/" } + - name: "piyopiyo.ex" + logo: /assets/images/ecosystem/piyopiyo.png + desc: >- + A highly active Japanese Elixir user community based out of Nagoya. They actively + collaborate on real-world implementations—such as building AtomVM configurations to ingest + BLE data from SwitchBot hardware—and regularly host localized, hands-on developer workshops + to lower the barrier to entry for embedded BEAM applications. + links: + - { label: "GitHub", url: "https://github.com/piyopiyoex" } + +outro: >- + Building something with AtomVM? [Get in touch](/contact/) to be featured here. diff --git a/_data/home.yml b/_data/home.yml index 1ce83a4..53b25be 100644 --- a/_data/home.yml +++ b/_data/home.yml @@ -5,6 +5,8 @@ navbar_entries: url: /news/ - title: Extensions url: /extensions/ + - title: Ecosystem + url: /ecosystem/ - title: Forum url: https://erlangforums.com/c/erlang-platforms/atomvm-forum/76 @@ -64,6 +66,8 @@ footer: url: /sample-code/ - title: Extensions url: /extensions/ + - title: Ecosystem + url: /ecosystem/ - title: Tutorials url: /tutorials/ cta: diff --git a/_includes/ecosystem_card.html b/_includes/ecosystem_card.html new file mode 100644 index 0000000..c2561e7 --- /dev/null +++ b/_includes/ecosystem_card.html @@ -0,0 +1,25 @@ +
+ {% if include.item.logo %} + + {% endif %} +

{{ include.item.name }}

+
{{ include.item.desc | markdownify }}
+ {% if include.item.links %} + + {% endif %} +
diff --git a/_layouts/ecosystem.html b/_layouts/ecosystem.html new file mode 100644 index 0000000..c2e58ce --- /dev/null +++ b/_layouts/ecosystem.html @@ -0,0 +1,30 @@ +--- +layout: default +--- +
+ + + {% for category in site.data.ecosystem.categories %} +
+ +
+ {% for item in category.items %} + {% include ecosystem_card.html item=item %} + {% endfor %} +
+
+ {% endfor %} + + {% if site.data.ecosystem.outro %} +
+
{{ site.data.ecosystem.outro | markdownify }}
+
+ {% endif %} +
diff --git a/_sass/_ecosystem.scss b/_sass/_ecosystem.scss new file mode 100644 index 0000000..e690e31 --- /dev/null +++ b/_sass/_ecosystem.scss @@ -0,0 +1,61 @@ +.page-header__intro { + max-width: 760px; + margin: 16px auto 0; + color: var(--color-text-muted); +} + +.eco-section { + width: 100%; + max-width: 1420px; + display: flex; + flex-direction: column; + gap: 32px; +} + +.eco-card__logo { + display: flex; + align-items: center; +} + +.eco-card__logo img { + height: 56px; + width: auto; + max-width: 100%; + object-fit: contain; +} + +/* Theme-specific logo swap: show the light asset by default, the dark one + when the site theme toggle sets [data-theme="dark"]. */ +.eco-card__logo-dark { display: none; } +[data-theme="dark"] .eco-card__logo-light { display: none; } +[data-theme="dark"] .eco-card__logo-dark { display: block; } + +/* Centre a lone card instead of pinning it to the left column. */ +.features__grid--single { + justify-items: center; +} + +@media (min-width: 768px) { + .features__grid--single { + grid-template-columns: min(100%, 700px); + justify-content: center; + } +} + +.eco-card__links { + display: flex; + flex-wrap: wrap; + gap: 16px; + margin-top: auto; +} + +.eco-card__link { + display: inline-flex; + align-items: center; + gap: 6px; + font-size: var(--body-secondary-size); + color: var(--color-link); + text-decoration: none; +} + +.eco-card__link:hover { color: var(--color-link-hover); } diff --git a/assets/css/main.scss b/assets/css/main.scss index 20d3bea..6ed1723 100644 --- a/assets/css/main.scss +++ b/assets/css/main.scss @@ -8,6 +8,7 @@ @import 'typography'; @import 'layout'; @import 'cards'; +@import 'ecosystem'; @import 'navbar'; @import 'footer'; @import 'buttons'; diff --git a/assets/images/ecosystem/la-machine.svg b/assets/images/ecosystem/la-machine.svg new file mode 100644 index 0000000..0f1c672 --- /dev/null +++ b/assets/images/ecosystem/la-machine.svg @@ -0,0 +1 @@ +logo_button \ No newline at end of file diff --git a/assets/images/ecosystem/midimesh.svg b/assets/images/ecosystem/midimesh.svg new file mode 100644 index 0000000..d5a891c --- /dev/null +++ b/assets/images/ecosystem/midimesh.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/images/ecosystem/nlnet-dark.svg b/assets/images/ecosystem/nlnet-dark.svg new file mode 100644 index 0000000..0b31dca --- /dev/null +++ b/assets/images/ecosystem/nlnet-dark.svg @@ -0,0 +1,162 @@ + + + + + Logo NLnet Foundation + + + + image/svg+xml + + https://nlnet.nl/logo + Logo NLnet Foundation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/ecosystem/nlnet.svg b/assets/images/ecosystem/nlnet.svg new file mode 100644 index 0000000..7a3d57b --- /dev/null +++ b/assets/images/ecosystem/nlnet.svg @@ -0,0 +1,98 @@ + + diff --git a/assets/images/ecosystem/piyopiyo.png b/assets/images/ecosystem/piyopiyo.png new file mode 100644 index 0000000..9e136a3 Binary files /dev/null and b/assets/images/ecosystem/piyopiyo.png differ diff --git a/ecosystem.md b/ecosystem.md new file mode 100644 index 0000000..fe74c32 --- /dev/null +++ b/ecosystem.md @@ -0,0 +1,5 @@ +--- +layout: ecosystem +title: "AtomVM Ecosystem" +permalink: /ecosystem/ +---