588f47affa
docs(plans): delete six stale 2026-04-06 plan docs (superseded by 2026-05-04-plan-{1..6})
2026-05-05 09:34:44 +02:00
8dac1929dc
docs(adr): add ADRs 006-009 for vertical refactor
2026-05-05 09:34:33 +02:00
e5b1ea720e
docs(adr): update 002/003/005 with vertical-refactor notes; supersede 004
2026-05-05 09:34:03 +02:00
a4d6fa0cb5
docs(guides): rewrite testing-strategy for vertical features (per-feature DI, colocated tests, Playwright)
2026-05-05 09:33:23 +02:00
49d74adc35
docs(guides): rewrite adding-a-feature for vertical canonical pattern
2026-05-05 09:33:02 +02:00
590543fb65
docs(architecture): rewrite dependency-flow for vertical features + boundary rules
2026-05-05 09:32:25 +02:00
f6e86cf55e
docs(architecture): rewrite overview for vertical feature architecture
2026-05-05 09:32:10 +02:00
d4969d2fb5
docs(architecture): copy refactor design spec into in-tree reference
2026-05-05 09:31:41 +02:00
520749c4e3
build: add root test:e2e task aggregating per-app Playwright suites
2026-05-05 09:29:37 +02:00
a7b9890db5
test(web-tanstack): add Playwright scaffold + skipped home spec
2026-05-05 09:26:19 +02:00
106e5c2737
test(web-next): add Playwright config + smoke specs (home, about, blog 404)
2026-05-05 09:25:42 +02:00
22bee5362f
feat(eslint-config): add boundaries plugin enforcing app→feature→core graph
...
- Install eslint-plugin-boundaries@^4.2.2 to enforce three-tag boundary model
- Configure element types: app, core-composition (core-api/core-cms), core, feature, tooling
- Enforce unidirectional dependency graph: apps→features→core, core-composition→features
- Add eslint.config.js to all 17 packages and apps (required for ESLint 9 flat config)
- Fix pre-existing linting issues to achieve clean lint pass
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-05 09:21:01 +02:00
acae859773
chore: delete legacy packages (api, api-client, cms-client, cms-core, core, ui)
2026-05-05 09:13:08 +02:00
f17f24e8f9
build(cms): drop legacy @repo/cms-core dep (now uses @repo/core-cms only)
2026-05-05 09:11:46 +02:00
346e77ed0c
build(storybook): migrate from @repo/ui to @repo/core-ui
2026-05-05 09:11:23 +02:00
a7d37d8a0f
feat(core-ui): migrate atoms/molecules/templates from packages/ui
2026-05-05 09:10:45 +02:00
1f0a6e73bf
docs(plan): add Plan 6 (cleanup + enforcement + e2e + docs)
...
20 tasks in 5 phases: A) migrate ui→core-ui, repoint apps/cms+storybook,
delete 6 legacy packages; B) eslint-plugin-boundaries with three-tag
model + composition exceptions; C) Playwright in both apps with smoke
specs + root test:e2e task; D) full doc rewrite (overview, dependency
flow, guides, root+per-package AGENTS.md, 4 new ADRs, 4 updated/
superseded ADRs, delete 6 stale plans); E) all-green final check.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-05 09:09:41 +02:00
f1da728482
feat(web-tanstack): consume marketingPages.siteSettings + navigation.header via tRPC client
2026-05-05 09:02:50 +02:00
a9e64569eb
build(web-tanstack): swap deps + use TanstackTrpcProvider against shared backend
2026-05-05 09:01:47 +02:00
1308fe4644
fix: enable overrideAccess=true for public Payload repository reads
...
All public pages (site settings, header, pages, articles) now bypass
Payload's access control checks when reading, as they should be publicly
accessible without authentication. This fixes 403 Forbidden errors on
homepage and article rendering.
2026-05-05 08:59:18 +02:00
7809f21151
feat(web-next): render /blog/[slug] article detail via blog.articleBySlug
2026-05-05 08:55:41 +02:00
293d855d06
feat(web-next): render /about marketing page via marketingPages.pageBySlug
2026-05-05 08:54:41 +02:00
5f0a66581a
feat(web-next): render homepage with siteSettings + header + article list
2026-05-05 08:54:20 +02:00
8403bfee7f
feat(web-next): wire tRPC route handler against core-api + new TrpcProvider
2026-05-05 08:54:04 +02:00
bd1a348340
feat(web-next): add server bindAllProduction() aggregator with idempotent guard
2026-05-05 08:53:03 +02:00
9d5f4fca33
build(web-next): swap deps to core-* + feature packages, transpile new workspaces
2026-05-05 08:52:37 +02:00
5620fae116
feat(navigation): add bindProductionNavigation(config) DI helper
2026-05-05 08:50:47 +02:00
02aee1ec23
feat(marketing-pages): add bindProductionMarketingPages(config) DI helper
2026-05-05 08:50:30 +02:00
ef42abb3e1
feat(auth): add bindProductionAuth(config) helper (no-op pending payload-users repo)
2026-05-05 08:50:08 +02:00
f981266fd5
feat(blog): add bindProductionBlog(config) DI helper for app boot
2026-05-05 08:49:55 +02:00
cdd7513032
docs(plan-5): add superjson transformer to httpBatchLink in both providers
...
Server uses superjson via core-shared/trpc/init's initTRPC config.
Client httpBatchLink must match or complex types (Date, Map, Set)
silently break on the wire. Caught during execution.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-05 08:48:49 +02:00
b14db95cfb
feat(core-trpc): add Next.js + TanStack provider components
2026-05-05 08:47:07 +02:00
8d80361785
feat(core-trpc): add typed React tRPC client + getQueryClient
2026-05-05 08:46:24 +02:00
a3b72f5a7f
docs(plan): add Plan 5 (app + UI integration)
...
17 tasks: populate core-trpc with React client + per-framework providers;
add bindProduction(config) helpers to each payload-backed feature;
swap web-next deps from @repo/api/api-client/ui to core-* + features;
wire tRPC route handler with idempotent bindAllProduction(); render
example pages (home with nav + site name + article list, /about,
/blog/[slug]); parallel-prove framework portability in web-tanstack.
First plan that produces browser-rendered output.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-05 08:43:04 +02:00
fbaac002a3
feat(core-cms): regenerate types — now includes Pages, SiteSettings, Header
2026-05-05 08:38:21 +02:00
1ad5b801f7
feat(core-api): compose marketingPages + navigation routers into appRouter
2026-05-05 08:36:29 +02:00
158e2bab5a
feat(core-cms): compose pages + siteSettings + header into payload config
2026-05-05 08:35:54 +02:00
014dbc81ec
feat(navigation): add controller + tRPC router + header global + barrel
2026-05-05 08:34:37 +02:00
19f32ec94d
feat(navigation): add Header entity + use-case + mock/payload repos + DI container
2026-05-05 08:34:14 +02:00
f71025b14a
feat(navigation): scaffold empty package with feature tag + path aliases
2026-05-05 08:33:44 +02:00
36e7515717
feat(marketing-pages): add ui/query + barrel + feature test
2026-05-05 08:32:08 +02:00
7b64415020
feat(marketing-pages): add tRPC router with pageBySlug + siteSettings
2026-05-05 08:31:49 +02:00
a44142b875
feat(marketing-pages): add pages collection + siteSettings global
2026-05-05 08:31:37 +02:00
23e7885fc4
feat(marketing-pages): add pages controller (getBySlug + getSiteSettings)
2026-05-05 08:31:24 +02:00
5ffffe4905
feat(marketing-pages): add Payload-backed pages + site-settings repos (constructor-injected config)
2026-05-05 08:31:12 +02:00
ff6fec7eab
fix(tsconfig): set rootDir explicitly in feature packages
...
TypeScript emits an informational diagnostic when source files span
multiple top-level dirs (src/ + tests/) without explicit rootDir.
Setting rootDir="." satisfies the recommendation and matches the
include pattern. Updates blog, auth, marketing-pages — and Plan 4
doc so navigation (still pending) starts correct.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-05 08:30:19 +02:00
875bae3fde
feat(marketing-pages): add per-feature InversifyJS container
2026-05-05 08:28:50 +02:00
e383c9ef3f
feat(marketing-pages): add Mock pages + site-settings repositories
2026-05-05 08:28:32 +02:00
903c1e23ac
feat(marketing-pages): add getSiteSettingsUseCase (test red until DI lands)
2026-05-05 08:28:19 +02:00
141e007d22
feat(marketing-pages): add getPageBySlugUseCase (test red until DI lands)
2026-05-05 08:28:12 +02:00