No description
  • TypeScript 48.6%
  • Vue 30.8%
  • CSS 18%
  • JavaScript 2.1%
  • Makefile 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Korneel Eeckhout cdf672dd05
Some checks failed
ci / typecheck (push) Successful in 35s
ci / lint (push) Successful in 39s
ci / format (push) Successful in 41s
ci / release (push) Failing after 9s
Merge pull request 'PUI-43 feat(cms): give the tree its own contract section and schema definitions' (#116) from feature/PUI-43-tree-contract-section-and-schema-definitions into main
Reviewed-on: #116
2026-09-22 21:29:28 +00:00
.forgejo/workflows ci: pin Bun to avoid GitHub API rate limits 2026-09-15 11:47:33 +02:00
docs feat(cms): give the tree its own contract section and schema definitions 2026-09-22 22:46:50 +02:00
examples chore(examples): search and filter the Pages tree by dimming 2026-09-22 16:51:05 +02:00
packages/ui Merge branch 'main' into feature/PUI-43-tree-contract-section-and-schema-definitions 2026-09-22 21:28:38 +00:00
scripts chore(workspace): remove the astro playground and tooling 2026-08-30 10:16:32 +02:00
storybook test(storybook): anchor the TreeIndex Filters play on the level cue 2026-09-22 22:36:43 +02:00
.dockerignore chore(deploy): add Dockerfiles for Dokploy static deploys 2026-09-11 13:52:51 +02:00
.editorconfig feat(examples): add CMS playgrounds 2026-08-05 08:58:48 +02:00
.gitignore chore(tracker): track work in Windshift 2026-09-21 15:51:27 +02:00
.node-version chore: update versions 2026-08-07 13:14:16 +02:00
.prettierignore chore(workspace): remove the astro playground and tooling 2026-08-30 10:16:32 +02:00
.prettierrc.mjs chore(workspace): remove the astro playground and tooling 2026-08-30 10:16:32 +02:00
AGENTS.md chore(workspace): remove the astro playground and tooling 2026-08-30 10:16:32 +02:00
bun.lock feat(rich-text): RichText form field on Tiptap 2026-09-19 23:21:26 +02:00
CLAUDE.md refactor(examples): use the package tab composable and failure helper 2026-09-15 15:15:34 +02:00
CONTEXT.md chore(CONTEXT.md): format 2026-09-22 15:09:39 +02:00
Dockerfile.example-vue chore(deploy): add Dockerfiles for Dokploy static deploys 2026-09-11 13:52:51 +02:00
Dockerfile.storybook chore(deploy): add Dockerfiles for Dokploy static deploys 2026-09-11 13:52:51 +02:00
eslint.config.ts chore(workspace): remove the astro playground and tooling 2026-08-30 10:16:32 +02:00
LICENSE init 2026-07-04 21:34:26 +02:00
Makefile chore(workspace): remove the astro playground and tooling 2026-08-30 10:16:32 +02:00
package.json chore(workspace): remove the astro playground and tooling 2026-08-30 10:16:32 +02:00
README.md feat(cms): add composable CMS components and Vue playground 2026-09-11 14:15:36 +02:00
release.config.js fix(release): write the version directly instead of shelling out to npm 2026-08-24 23:25:49 +02:00
tsconfig.typecheck.json refactor(ui)!: rewrite the shared controllers as Vue composables 2026-08-30 10:41:33 +02:00
ws.toml chore(tracker): track work in Windshift 2026-09-21 15:51:27 +02:00

pienter-ui

Bun workspace containing the @pienter/ui component library and the consumer apps used to develop it.

Path Package What it is
packages/ui @pienter/ui The published library — components, styles, icons, utilities.
examples/vue @pienter/example-vue Vue CMS playground.
storybook @pienter/catalog Storybook component catalog.

The consumers depend on the library with "@pienter/ui": "workspace:*", which bun links as a symlink into packages/ui. Library edits are picked up with no re-install, and imports resolve through the real exports map rather than an alias.

Getting started

Install once from the repo root — there are no per-app lockfiles:

bun install

Then run a surface:

bun run dev:vue        # http://127.0.0.1:5173
bun run dev:storybook  # http://127.0.0.1:6006

Parallel worktrees

Worktrees live at .claude/worktrees/<name>. One command makes a new one usable — it claims dev-server ports of its own, copies the local Claude settings over, and installs:

git worktree add .claude/worktrees/<name> -b <branch>
cd .claude/worktrees/<name>
make worktree-setup

The ports are derived from the worktree's directory name and written once into a git-ignored .env that the Makefile includes, so every worktree — and the primary checkout, which keeps the ports above — can serve at the same time. Setup prints the URLs; .env holds them afterwards.

Start the servers through make inside a worktree:

make example-vue-dev
make storybook-dev

bun run dev:* is fine in the primary checkout, but in a worktree it would serve on the defaults above: bun reads .env into its own runtime and not into package.json scripts, so only the Makefile puts the worktree's ports into the environment.

Checks

make ci runs exactly what CI runs:

bun run lint          # ESLint flat config, lint-only
bun run typecheck     # vue-tsc over the library
bun run format:check  # Prettier

Documentation

  • CMS architecture and usage — component APIs, ordinary Vue pages, and the backend contract, with sections for design feedback.
  • packages/ui/README.md — library usage and installation.
  • packages/ui/CONVENTIONS.md — component authoring conventions.
  • CONTEXT.md — domain glossary.
  • docs/adr/ — architectural decisions.
  • examples/CMS_PLAYGROUND.md — playground scope decisions.