← Examples Gallery

Three Sources, One Menu

One Alap expression can pull data from three completely different sources and merge the results into a single menu. Same grammar, same operators, mixed origins.

allLinks — static, hand-curated  ·  :web: — Open Library JSON API  ·  :atproto: — Bluesky / AT Protocol

Each Source Alone

For reference — what each source looks like individually.

Curated orgsallLinks

Books: "decentralization":web:

EFF — recent posts:atproto:

View source
<a class="alap" data-alap-linkitems=".orgs">Curated orgs</a>
<a class="alap" data-alap-linkitems=":web:books:decentralization:">Books: "decentralization"</a>
<a class="alap" data-alap-linkitems=":atproto:feed:eff.org:limit=3:">EFF — recent posts</a>

All Three in One Expression

Comma-separated scopes — each fetches from a different source, results appear in one menu in order.

Decentralization: orgs + books + EFF postsstatic + :web: + :atproto:

Bebop jazz: orgs + books + Internet Archive posts — same pattern, different topic

Architecture: orgs + books + AT Proto people — static orgs, book search, and live people search

Coffee: orgs + books + Nature posts — because why not

View source
// Three data sources in one expression:
//   1. (.orgs *limit:2*)                  — static allLinks
//   2. (:web:books:decentralization:)     — Open Library API
//   3. (:atproto:feed:eff.org:limit=3:)   — Bluesky AT Protocol

<a class="alap" data-alap-linkitems="(.orgs *limit:2*), (:web:books:decentralization:), (:atproto:feed:eff.org:limit=3:)">Decentralization</a>
<a class="alap" data-alap-linkitems="(.orgs *limit:2*), (:web:books:bebop:), (:atproto:feed:archive.org:limit=3:)">Bebop jazz</a>
<a class="alap" data-alap-linkitems="(.orgs *limit:2*), (:web:books:architecture:), (:atproto:people:atproto:limit=3:)">Architecture</a>
<a class="alap" data-alap-linkitems="(.orgs *limit:2*), (:web:books:coffee:), (:atproto:feed:nature.com:limit=2:)">Coffee</a>

With Operators

Union across sources — not just comma separation.

Union: orgs | books | EFF posts — flat merge with | (OR)

View source
<a class="alap"
   data-alap-linkitems=".orgs | :web:books:decentralization: | :atproto:feed:eff.org:limit=2:"
>Union: orgs | books | EFF posts</a>

GitHub Repos (test — :web: with alternate API)

Uses GitHub search API instead of Open Library. Verifies :web: protocol works when the upstream API is available.

Decentralized protocol repos — GitHub stars

Architecture/design system repos — GitHub stars

Coffee repos — GitHub stars

Mixed: orgs + GitHub repos + EFF posts — three sources, one menu

Config

The config powering this page — all three protocol registrations and the static allLinks entries.

config-combined.ts

← Back to the AT Protocol example