Commit Graph

135 Commits

Author SHA1 Message Date
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
63801bf3dc feat(marketing-pages): add IPagesRepository + ISiteSettingsRepository interfaces 2026-05-05 08:28:03 +02:00
3ff4afe04b feat(marketing-pages): add Page + SiteSettings entities + errors 2026-05-05 08:27:53 +02:00
9e8adb67c0 feat(marketing-pages): scaffold empty package with feature tag + path aliases 2026-05-05 08:27:34 +02:00
09f45afab1 docs(plan): add Plan 4 (marketing-pages + navigation features)
17 tasks: marketing-pages with Pages collection + SiteSettings global +
read use-cases + tRPC router; navigation with Header global + read
use-case + tRPC router. Composes both into core-cms (now 4 collections,
2 globals) and core-api (now 4 namespaces). All Plan 2/3 lessons baked in.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 08:24:33 +02:00
afe7a15104 feat(core-cms): regenerate types — now includes Articles, Users, Media 2026-05-05 08:18:46 +02:00
aed8c9a6ad feat(core-api): compose @repo/auth/api into appRouter under 'auth' namespace 2026-05-05 08:16:25 +02:00
8667232c22 feat(blog): restore author relationship → users + featuredImage upload → media 2026-05-05 08:14:07 +02:00
125ec53f2a feat(core-cms): compose users + media into payload config alongside articles 2026-05-05 08:13:10 +02:00
50b687c43e feat(media): scaffold feature package with media collection only 2026-05-05 08:11:50 +02:00
3770764ac5 test(auth): add feature test for sign-up → sign-in → sign-out flow 2026-05-05 07:58:53 +02:00
9b59c73457 feat(auth): wire root barrel + ui/query stub 2026-05-05 07:58:38 +02:00
30b49ca19b feat(auth): add tRPC router with signIn + signUp + signOut 2026-05-05 07:58:20 +02:00
2e445b9c5b feat(auth): add users collection with role + displayName fields 2026-05-05 07:57:16 +02:00
29dea75a62 feat(auth): add sign-in/sign-up/sign-out controllers with Zod validation 2026-05-05 07:19:19 +02:00
2ad6b21f17 feat(auth): add per-feature InversifyJS container with constructor-injected service 2026-05-05 00:40:09 +02:00
b8cfe0e1f2 feat(auth): add MockAuthenticationService with constructor-injected users repo 2026-05-05 00:39:48 +02:00
1becc23843 feat(auth): add MockUsersRepository with seed users 2026-05-05 00:39:46 +02:00
786f3c3420 feat(auth): add signOutUseCase (test red until DI lands) 2026-05-05 00:39:31 +02:00
c989df41d5 feat(auth): add signUpUseCase (test red until DI lands) 2026-05-05 00:39:22 +02:00
bc430ea5a0 feat(auth): add signInUseCase (test red until DI lands) 2026-05-05 00:39:11 +02:00
95e80ef62c feat(auth): add IUsersRepository + IAuthenticationService interfaces 2026-05-05 00:39:01 +02:00
ceffd05063 feat(auth): add User, Cookie, Session entities + errors + config 2026-05-05 00:38:49 +02:00
54dc9d33d5 feat(auth): scaffold empty package with feature tag + path aliases 2026-05-05 00:37:13 +02:00
42ef78bcfd docs(plan): add Plan 3 (Auth + Media + restore blog relations)
17 tasks: full auth feature canonical migration (entities, services,
use-cases, DI with constructor-injected service, controllers, users
collection, tRPC router); skeleton media feature (collection only);
restore blog's author→users relation and featuredImage→media upload.
Bakes in all Plan-2 lessons (vitest alias, no rootDir, relative imports
in src, no @repo/core-cms in feature deps).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 00:35:51 +02:00
e217652a87 fix(blog): remove rootDir constraint to allow tests/**/* inclusion in typecheck 2026-05-05 00:27:25 +02:00
3e6f632c4b test(blog): add feature-level test exercising router → controller → use-case → repo 2026-05-04 22:37:18 +02:00
ed4d204a7e docs(plan-2): document relative-imports-in-source rule for feature packages
Discovered during execution: when downstream packages like @repo/core-api
typecheck and follow imports into a feature, they don't have the feature's
@/ alias and fail with TS2307. Source files use relative imports;
@/ is reserved for test files within the feature's own context.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 22:36:10 +02:00
87f43924be feat(blog): wire root barrel (entity types + ui query helpers) 2026-05-04 22:35:01 +02:00
82ef7c9ef6 feat(blog): add ui/query.ts (framework-agnostic React Query option builders) 2026-05-04 22:34:53 +02:00
1ae1702786 feat(core-api): compose @repo/blog/api into appRouter under 'blog' namespace 2026-05-04 22:34:43 +02:00
fde58f2d3d feat(blog): add tRPC router with articleBySlug + listArticles + createArticle 2026-05-04 22:32:53 +02:00
81fe4aa3b2 docs(plan-2): document constructor-injection pattern for payload repos
Revises Task 2.8's note: spec example used `import config from
'@repo/core-cms'` which creates a workspace dependency cycle (blog deps
on core-cms; core-cms deps on blog/cms). Constructor injection breaks the
cycle at the package graph. Apply to all payload-backed feature repos.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 22:32:01 +02:00
a92341fb74 feat(core-cms): compose @repo/blog/cms into payload config 2026-05-04 22:29:50 +02:00
1d59698ebe feat(blog): add articles collection (simplified — no cross-feature refs) 2026-05-04 22:27:03 +02:00
f041ae5473 feat(blog): add articles controller with Zod validation 2026-05-04 22:25:10 +02:00
b250cdff80 feat(blog): add PayloadArticlesRepository with doc-to-entity mapping 2026-05-04 22:23:31 +02:00
1da0c06085 docs(plan-2): fix vitest.config.ts to include @/ alias
Vitest doesn't read tsconfig paths automatically; the alias must be
declared in vitest.config.ts via resolve.alias. Discovered during
execution and fixed in the live blog package; updating the source
plan so future feature plans (auth, media, etc.) start correct.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 22:22:05 +02:00
c00283506c feat(blog): add per-feature InversifyJS container (symbols, module, container) 2026-05-04 22:14:56 +02:00
41d7883e7a feat(blog): add MockArticlesRepository for tests 2026-05-04 22:14:14 +02:00
86228f2d3e feat(blog): add createArticleUseCase (test red until DI + mock repo exist) 2026-05-04 22:13:31 +02:00
b0dab254d1 feat(blog): add getArticlesUseCase (test red until DI + mock repo exist) 2026-05-04 22:13:00 +02:00
ab11f42e8d feat(blog): add IArticlesRepository interface 2026-05-04 22:11:17 +02:00
692ee58365 feat(blog): add Article entity with rich-text content + domain errors 2026-05-04 22:11:08 +02:00
161c858f32 feat(blog): scaffold empty package with feature tag + path aliases 2026-05-04 22:09:58 +02:00
74cb9bd29a docs(plan): add Plan 2 (Blog feature canonical migration)
17 tasks migrating the existing content/articles domain into a new
@repo/blog package with full canonical layer shape. Per-feature
InversifyJS container, payload-articles repository using getPayload +
core-cms config, simplified schema (author as text, no featuredImage)
with TODOs to restore in Plan 3 when auth + media features are migrated.
Wires blog/cms into core-cms and blog/api into core-api.

Plan 2 of 6 — total revised from original 4 during execution to keep
each plan digestible (Plan 1 in-flight numbering preserved).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 22:07:00 +02:00
76dbe71a75 feat(core-cms): generate initial (empty) Payload types
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 21:56:44 +02:00