Open Source

Bausteine aus unserer Arbeit.

Was sich bei Kundenseiten und in unseren eigenen Produkten bewährt, lösen wir heraus und veröffentlichen es als Open Source — frei nutzbar unter MIT-Lizenz.

JavaScript · npm

Ein Carousel auf nativem Scrollen: 3,4 kB, keine Abhängigkeiten, React, Preact und Astro.

Version 0.1.5 ·

  • 3,4 kB

    So groß ist der Kern, gzip. Ziehen und automatisches Weiterblättern laden nur, wo eine Reihe sie braucht.

  • Keine Abhängigkeiten

    Natives Scrollen mit CSS Scroll Snap — kein Framework im Kern, keine Animationsbibliothek.

  • Fertig ohne JavaScript

    Das Layout steht im CSS. Das Skript ergänzt Pfeile, Punkte und Seitenwechsel; beim Laden springt nichts.

  • React, Preact und Astro

    Fertige Komponenten für alle drei, dazu der Kern für jede andere Umgebung.

  • Tastatur und Screenreader

    Mit Pfeiltasten bedienbar, Wechsel werden angesagt, alle Beschriftungen in Ihrer Sprache.

  • MIT-Lizenz

    Frei nutzbar, auch in kommerziellen Projekten.

npm install @nordwerk/scroll-carousel

JavaScript · React · Preact · Astro · MIT-Lizenz

scroll-sheet

Sheets, Seitenleisten und Dialoge auf dem nativen HTML-Dialog: 2,7 kB, bedienbar ohne JavaScript, für iOS gebaut.

Version 0.5.0 ·

npm install @nordwerk/scroll-sheet

JavaScript · React · Preact · Astro · shadcn/ui · MIT-Lizenz

Convex Mail Bridge

IMAP und SMTP für eine Convex-App, ohne eigenen Mailserver: Apple Mail, Thunderbird und Outlook lesen und senden die Nachrichten deiner App.

Version 0.1.0 ·

npm install @nordwerk/convex-mail-bridge

Convex · TypeScript · Go · MIT-Lizenz

Contao · Composer

Freie Bundles für deine Contao-Seite.

  • Verfügbar

    Widerrufsbutton

    Elektronische Widerrufsfunktion nach § 356a BGB, zweistufig, ohne Login und JavaScript. Läuft auch ohne unsere Pakete.

    Version 1.2.2 ·

    Zum Paket
  • Verfügbar

    Zahlung

    Überweisung mit Bankdaten und GiroCode, dazu Stripe Checkout. Die gemeinsame Zahlungsschicht für Shop und Seminare.

    Version 1.2.0 ·

    Zum Paket
  • Verfügbar

    Carousel

    Beliebige Inhaltselemente als Slides, auf nativem Scroll-Snap. Kein Swiper, auch ohne JavaScript bedienbar.

    Version 0.1.1 ·

    Zum Paket
  • Verfügbar

    Dialog und Sheet

    Dialoge, Bottom-Sheets und Offcanvas-Navigation auf dem nativen dialog-Element, mit Wischen und Einrastpunkten.

    Version 0.1.1 ·

    Zum Paket
  • Verfügbar

    Galerie

    Raster, Leiste und Lightbox aus Carousel und Sheet, mit den Bildgrößen aus Contao.

    Version 0.1.1 ·

    Zum Paket
  • Geplant

    Belegungsplan

    Freie und belegte Nächte, Saisonpreise und Mindestaufenthalt für Ferienwohnungen und Pensionen.

  • Geplant

    Speisekarte

    Tages- und Wochenkarte, geschrieben wie auf der Tafel, mit strukturierten Daten für Suchmaschinen.

  • Verfügbar

    Adventskalender

    24 Türchen mit Angeboten, Gutscheinen oder Geschichten. Der Server prüft das Datum, vorab lässt sich nichts ansehen.

    Version 0.3.0 ·

    Zum Paket

Häufige Fragen

Warum sind scroll-carousel und scroll-sheet so klein, und warum ist das wichtig?

Jedes Kilobyte JavaScript muss geladen, entpackt und ausgeführt werden, bevor eine Seite auf Eingaben reagiert. Auf einem Mittelklasse-Smartphone im Mobilfunknetz spürt man das. Gemessen gebündelt, minifiziert und mit gzip: scroll-carousel braucht 3,4 kB, Swiper mit Pfeilen und Punkten 23,9 kB, der Kern von Embla 7,4 kB. scroll-sheet braucht mit seiner React-Komponente 3,7 kB, Vaul, die Grundlage des Drawers von shadcn/ui, 21,4 kB. Weniger Code heißt auch weniger, das brechen kann.

Wie kommen sie mit so wenig Code aus?

Der Browser erledigt die Arbeit. scroll-carousel und scroll-sheet bauen auf natives Scrollen mit CSS Scroll Snap: Wischen, Schwung und Einrasten fühlen sich an wie im Betriebssystem, weil sie von dort kommen. scroll-sheet nutzt dazu das native Dialog-Element, das über allem liegt und die Seite dahinter sperrt. Es gibt keine Animationsbibliothek, keine eigene Gestenerkennung und keine Abhängigkeiten.

Funktioniert das ohne JavaScript?

Ja. Eine Reihe von scroll-carousel steht und lässt sich wischen, bevor ein Skript geladen ist. Ein scroll-sheet öffnet und schließt über HTML-Befehle, auch mit Escape. Das Skript ergänzt, was HTML und CSS allein nicht können: Pfeile und Punkte, Wegwischen, Rastpunkte, die Rückkehr des Fokus.

Worin unterscheidet sich scroll-sheet vom Drawer von shadcn/ui?

Der Drawer von shadcn/ui beruht auf Vaul, das das Sheet per JavaScript verschiebt. Bei scroll-sheet ist Ziehen gewöhnliches Scrollen, die Seite dahinter bleibt, wo sie war, und das Sheet öffnet schon vor der Hydration. Für shadcn/ui gibt es eine eigene Komponente und sieben fertige Blöcke, und eine Anleitung zeigt, was beim Umstieg wegfallen kann.

Und scroll-carousel im Vergleich zu Swiper?

Swiper verschiebt die Folien mit Transformationen und rechnet Gesten selbst nach. scroll-carousel lässt den Browser scrollen und ergänzt nur die Bedienelemente. Eine eigene Seite stellt die üblichen Swiper-Optionen denen von scroll-carousel gegenüber, mit fünf typischen Mustern aus Onlineshops.

Welche Browser und Frameworks unterstützen scroll-carousel und scroll-sheet?

Aktuelle Versionen von Chrome, Firefox und Safari, auch auf iOS. Jede Änderung wird automatisch in allen drei Browser-Engines getestet. Fertige Komponenten gibt es für React, Preact und Astro, dazu den Kern für jede andere Umgebung. Mit Tailwind CSS lassen sich die Stylesheets in eine Ebene legen und mit Utilities überschreiben.

Können KI-Assistenten damit arbeiten?

Dafür ist gesorgt. scroll-carousel und scroll-sheet bringen je eine Anleitung für Coding-Agenten mit (AGENTS.md), mit Regeln, Rezepten und den Stellen, die absichtlich anders sind als gewohnt. Dieselbe Anleitung liegt als llms.txt neben der Doku, etwa unter nordwerk.studio/oss/scroll-sheet/llms.txt.

Warum veröffentlichen Sie das, und darf ich es kommerziell nutzen?

Die Pakete entstehen bei der Arbeit an Kundenseiten und an unseren eigenen Produkten und laufen dort im Einsatz. Deshalb pflegen wir sie weiter. Sie stehen unter der MIT-Lizenz und sind frei nutzbar, auch in kommerziellen Projekten.

scroll-sheet

Sheet von unten: dieses Fenster ist selbst ein scroll-sheet.

  • 2,7 kB

    So groß ist der Kern, gzip, ohne Abhängigkeiten. Zurück-Taste und iOS-Tastatur laden nur, wo ein Sheet sie braucht.

  • Bedienbar ohne JavaScript

    Öffnen und Schließen laufen über HTML-Befehle am nativen Dialog-Element. Das Skript ergänzt Ziehen, Rastpunkte und die Rückkehr des Fokus.

  • Für iOS gebaut

    Die Seite dahinter bleibt, wo sie war, und die Leisten von Safari bleiben ruhig. Mit dem Tastatur-Plugin verdeckt die Tastatur keine Felder.

  • Eine Komponente, drei Darstellungen

    Sheet von unten, Seitenleiste oder Dialog in der Mitte, je Bildschirmbreite im CSS umschaltbar.

  • React, Preact, Astro und shadcn/ui

    Fertige Komponenten und sieben Blöcke, dazu der Kern für jede andere Umgebung.

  • MIT-Lizenz

    Frei nutzbar, auch in kommerziellen Projekten.

scroll-sheet

Seitenleiste: dieses Fenster ist selbst ein scroll-sheet.

  • 2,7 kB

    So groß ist der Kern, gzip, ohne Abhängigkeiten. Zurück-Taste und iOS-Tastatur laden nur, wo ein Sheet sie braucht.

  • Bedienbar ohne JavaScript

    Öffnen und Schließen laufen über HTML-Befehle am nativen Dialog-Element. Das Skript ergänzt Ziehen, Rastpunkte und die Rückkehr des Fokus.

  • Für iOS gebaut

    Die Seite dahinter bleibt, wo sie war, und die Leisten von Safari bleiben ruhig. Mit dem Tastatur-Plugin verdeckt die Tastatur keine Felder.

  • Eine Komponente, drei Darstellungen

    Sheet von unten, Seitenleiste oder Dialog in der Mitte, je Bildschirmbreite im CSS umschaltbar.

  • React, Preact, Astro und shadcn/ui

    Fertige Komponenten und sieben Blöcke, dazu der Kern für jede andere Umgebung.

  • MIT-Lizenz

    Frei nutzbar, auch in kommerziellen Projekten.

scroll-sheet

Dialog: dieses Fenster ist selbst ein scroll-sheet.

  • 2,7 kB

    So groß ist der Kern, gzip, ohne Abhängigkeiten. Zurück-Taste und iOS-Tastatur laden nur, wo ein Sheet sie braucht.

  • Bedienbar ohne JavaScript

    Öffnen und Schließen laufen über HTML-Befehle am nativen Dialog-Element. Das Skript ergänzt Ziehen, Rastpunkte und die Rückkehr des Fokus.

  • Für iOS gebaut

    Die Seite dahinter bleibt, wo sie war, und die Leisten von Safari bleiben ruhig. Mit dem Tastatur-Plugin verdeckt die Tastatur keine Felder.

  • Eine Komponente, drei Darstellungen

    Sheet von unten, Seitenleiste oder Dialog in der Mitte, je Bildschirmbreite im CSS umschaltbar.

  • React, Preact, Astro und shadcn/ui

    Fertige Komponenten und sieben Blöcke, dazu der Kern für jede andere Umgebung.

  • MIT-Lizenz

    Frei nutzbar, auch in kommerziellen Projekten.