Pattern
The composable functions pattern uses:
-
Interfaces defining dependencies (data + side effects) and function contracts
-
Pure functions that receive injected dependencies
-
Mock factories for testing
-
Adapters (RSC/Hooks) that wire up real dependencies
Workflow
-
Read the example structure in example/ to understand the patterns
-
Ask the user for the feature name
-
Generate minimal boilerplate in src/features/<feature-name>/ with:
-
entity/<feature>.interfaces.ts
-
dependency and function interfaces
-
functions/<feature>.functions.ts
-
pure functions with DI
-
functions/<feature>.functions.mock.ts
-
mock factory
-
functions/<feature>.functions.test.ts
-
test file
-
Ask the user what adapter type to create:
-
RSC (React Server Components) - default
-
React Hooks - default
-
Other (API, proxy-handler, etc.) - search codebase for examples, otherwise improvise
-
Generate the adapter in adapters/<feature>.<type>.adapter.ts
Do not implement business logic - generate bare minimum boilerplate only.