deck.cool, part 1: let the browser do the work
deck.cool is a family of unstyled React components built on what the browser already does: scroll snap, <dialog> and <video>. Plus Pagedeck, Astro for React. Part 1 of a series.
psousa.dev=#selectbiofromauthor;
I build the content infrastructure behind large multilingual websites, and tools for data that outgrew its container.
select*frompostswherefeatured= true;
deck.cool, part 1: let the browser do the work
deck.cool is a family of unstyled React components built on what the browser already does: scroll snap, <dialog> and <video>. Plus Pagedeck, Astro for React. Part 1 of a series.
The content store, part 1: stop fetching what you already have
Why we stopped fetching from our CMS on every request and started syncing everything into a local SQLite database instead. Part 1 of a series.
Recreating macOS Magnet window management in Linux
Set up macOS Magnet-like window management in Linux using gTile with custom presets and keyboard shortcuts for efficient workspace organization
SSR CSS modules as a library author
Rollup-compiled CSS modules add a client-side script, raising concerns for server-side rendering. Navigate this quirk for seamless integration in both environments
select*frompostsorder bypub_datedesc;
deck.cool, part 2: a carousel that lets the browser scroll
Carouseldeck is a headless React 19 carousel built on native CSS scroll snap. The browser does the scrolling, and the library only tracks where the deck comes to rest. Part 2 of the deck.cool series.
deck.cool, part 3: a drawer that lets the browser drag
Drawerdeck is a headless React bottom sheet where the drag, momentum and snap points are native scroll snap, and <dialog> gives the top layer, focus trap and Escape. Part 3 of the deck.cool series.
deck.cool, part 4: a video player that hides what it can't do
Playdeck is a headless React 19 media player with one API across MP4, HLS, YouTube, Vimeo and Wistia. Every control checks what the active provider can do. Part 4 of the deck.cool series.
deck.cool, part 5: Astro, if it were built for React
Pagedeck syncs content into SQLite, renders React to plain HTML, and ships JavaScript only for components marked "use client", on the pages that render them. Part 5 of the deck.cool series.
A URL redirector that never watches you
Most URL redirectors work by reading every request. Ferry pushes the rules down to the browser with declarativeNetRequest, so it redirects without ever seeing where you go.
Building a JSON viewer for large payloads
JSON viewers are easy to build until payloads get large. JSON Bonsai focuses on faster navigation, search, queries, and data fidelity.
The content store, part 4: the fun stuff
Once your CMS content lives in a real database, weird doors open: ranking components by fold position, generating your imports from usage data, and CI builds that never sync. Final part of the series.
The content store, part 3: the read side
Serving CMS content from a local database sounds trivial until stories start referencing each other. Relations, cycles, and why dev mode reads differently than production. Part 3 of a series.
select*fromprojects;
URL redirector that never watches you. Native declarativeNetRequest redirects, no telemetry.
Terminal radio for wandering the world's airwaves. Privacy-first, offline search, no telemetry.
Browser extension that keeps 100k-node JSON payloads navigable. Tree, table, schema, and query views.
Local npm package development without the reinstall loop. A faster yalc.