@yekhan/pxkit (0.1.0)
Installation
@yekhan:registry=https://git.pumax.de/api/packages/yekhan/npm/npm install @yekhan/pxkit@0.1.0"@yekhan/pxkit": "0.1.0"About this package
pxkit
Gemeinsames Grundstock-Paket für alle Pumax-Produkte an der zentralen Supabase-Auth-Instanz (pxfin, pxtime, pxbook, künftig weitere). Bündelt:
- UI-Kit (
ui/index.tsx+ui/tokens.css) — schlanke Basis-Komponenten (Stack,Card,Button,Field,Tableetc.) und das zugehörige CSS-Token-System (.px-*-Klassen, CSS-Custom-Properties). - Supabase-Client-Helfer (
supabase/client.ts,server.ts,service.ts,middleware.ts) — Browser-/Server-/Service-Role-Client sowie eine parametrisierbare Session-Middleware. - Passwort-Policy (
auth/passwort.ts) — einheitliche Mindestanforderung (12 Zeichen, Zahl, Klein-/Großbuchstabe, Sonderzeichen). - Modul-Gate-Kern (
module/hasModule.ts,module/pathMatcher.ts) — Aufruf der geteilten Postgres-Funktionhas_module()gegentenant_modules, plus generischer Pfad-Matcher.
Bewusst NICHT enthalten (bleibt in jedem Produkt-Repo, siehe Analyse in
tools/pxtime/status.md "Analyse: Was gehört ins Foundation-Package?"):
produktspezifische Modul-Wrapper (hasRechnungModule etc.), Routen-
Pfadlisten (RECHNUNG_PFADE etc.), Auth-Mails mit Produkt-Branding
(Login-Alarm etc.), sowie alle DB-seitigen RLS-/Berechtigungsfunktionen
(is_org_member, has_write_role, record_shares, ...) — das ist
geteiltes Datenbankschema, kein npm-Paket-Thema.
Herkunft
Extrahiert 2026-08-31 aus tools/pxfin/app als erster Schritt der
Modul-Aufspaltung (siehe tools/pxtime/CLAUDE.md "Zielarchitektur").
pxfin selbst nutzt zu diesem Zeitpunkt noch nicht dieses Paket,
sondern weiterhin seine eigenen Kopien — die Umstellung passiert erst
beim eigentlichen pxtime/pxbook-Pilot-Split, um den laufenden
(eingefrorenen) Monolithen währenddessen nicht anzufassen.
Kein Build-Schritt nötig
Das Paket wird als TypeScript-Quellcode veröffentlicht (kein tsc-Build,
kein dist/). Next.js transpiliert node_modules-Pakete standardmäßig
nicht — jedes konsumierende Produkt muss deshalb in seiner
next.config.js/next.config.mjs eintragen:
const nextConfig = {
transpilePackages: ["@yekhan/pxkit"],
};
Installation (in einem Produkt-Repo)
.npmrc.examplein diesem Ordner nach.npmrcim Produkt-Repo kopieren,NODE_AUTH_TOKENals Umgebungsvariable setzen (Token-Erzeugung siehe Kommentar in.npmrc.example).npm install @yekhan/pxkit- CSS-Tokens einmal global einbinden, z.B. in
app/layout.tsx:import "@yekhan/pxkit/ui.css"; - Komponenten/Helfer importieren:
import { Card, Button, hasModule, passwortPruefen } from "@yekhan/pxkit";
Veröffentlichen (nach einer Änderung hier)
npm version patch # oder minor/major
npm publish
Braucht ein .npmrc mit write:package-Scope-Token (siehe
.npmrc.example) — Publish erfolgt gegen die private Gitea-npm-Registry
unter https://git.pumax.de/api/packages/yekhan/npm/, nicht gegen die
öffentliche npm-Registry.
Dependencies
Development Dependencies
| ID | Version |
|---|---|
| @supabase/ssr | ^0.5.2 |
| @supabase/supabase-js | ^2.45.4 |
| @types/node | ^22.5.0 |
| @types/react | 19.2.18 |
| next | 16.3.2 |
| react | 19.2.8 |
| typescript | ^5.6.3 |
Peer Dependencies
| ID | Version |
|---|---|
| @supabase/ssr | >=0.5 |
| @supabase/supabase-js | >=2 |
| next | >=14 |
| react | >=18 |