@jskit-ai/agent-docs 0.1.149 → 0.1.150
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/guide/agent/app-setup/existing-application-migration.md +8 -6
- package/guide/agent/app-setup/initial-scaffolding.md +9 -7
- package/guide/agent/app-setup/quickstart.md +9 -6
- package/guide/agent/framework/application-operations.md +91 -0
- package/guide/agent/framework/crud-operations.md +83 -0
- package/guide/agent/framework/material-3.md +112 -0
- package/guide/agent/framework/ui-operations.md +78 -0
- package/guide/agent/index.md +13 -3
- package/package.json +1 -1
- package/patterns/feature-package/example/booking-engine/package.json +1 -1
- package/patterns/minimal-foundation/example/AGENTS.md +8 -8
- package/patterns/minimal-foundation/example/package.json +4 -5
- package/patterns/shell-foundation/example/AGENTS.md +8 -8
- package/patterns/shell-foundation/example/package.json +5 -6
- package/patterns/shell-foundation/example/packages/main/package.json +1 -1
- package/reference/autogen/PATTERN_INDEX.md +61 -61
- package/skills/jskit/SKILL.md +8 -5
- package/skills/jskit/references/app-operations.md +12 -11
- package/skills/jskit/references/crud-operations.md +10 -6
- package/skills/jskit/references/existing-application-migration.md +9 -12
- package/skills/jskit/references/material-3.md +2 -0
- package/skills/jskit/references/pattern-index.md +61 -61
- package/skills/jskit/references/patterns/app/minimal-foundation/PATTERN.md +105 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/.nvmrc +1 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/AGENTS.md +17 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/Procfile +2 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/app.json +14 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/bin/develop.js +71 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/bin/server.js +8 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/config/public.js +40 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/config/server.js +1 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/config/surfaceAccessPolicies.js +3 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/eslint.config.mjs +19 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/favicon.svg +7 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/gitignore +9 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/index.html +13 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/jsconfig.json +8 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +62 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/packages/main/package.json +42 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/packages/main/src/shared/index.js +10 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/packages/main/src/shared/schemas/index.js +22 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/playwright.config.mjs +31 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/server/lib/runtimeEnv.js +45 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/server/lib/surfaceRuntime.js +10 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/server.js +195 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/src/App.vue +13 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/src/main.js +85 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/src/pages/home/index.vue +48 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/src/pages/home.vue +13 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/src/views/NotFound.vue +13 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/tests/client/smoke.vitest.js +7 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/tests/e2e/base-shell.spec.ts +23 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/tests/server/smoke.test.js +16 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/vite.config.mjs +80 -0
- package/skills/jskit/references/patterns/app/shell-foundation/PATTERN.md +111 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/.nvmrc +1 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/AGENTS.md +17 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/Procfile +2 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/app.json +14 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/bin/develop.js +71 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/bin/server.js +8 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/config/public.js +40 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/config/server.js +1 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/config/surfaceAccessPolicies.js +3 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/eslint.config.mjs +19 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/favicon.svg +7 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/gitignore +9 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/index.html +13 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/jsconfig.json +8 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +64 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/package.json +56 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/src/client/index.js +9 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/src/client/providers/MainClientProvider.js +18 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/src/shared/index.js +10 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/src/shared/schemas/index.js +22 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/playwright.config.mjs +31 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/server/lib/runtimeEnv.js +45 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/server/lib/surfaceRuntime.js +10 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/server.js +195 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/App.vue +11 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/components/ShellLayout.vue +12 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/components/menus/MenuLinkItem.vue +30 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/components/menus/SurfaceAwareMenuLinkItem.vue +42 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/components/menus/TabLinkItem.vue +42 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/error.js +19 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/main.js +85 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home/index.vue +116 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home/settings/general/index.vue +40 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home/settings/index.vue +7 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home/settings.vue +109 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home.vue +20 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/placement.js +56 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/placementTopology.js +149 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/views/NotFound.vue +13 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/tests/client/smoke.vitest.js +7 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/tests/e2e/adaptive-shell.spec.ts +10 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/tests/e2e/base-shell.spec.ts +23 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/tests/server/smoke.test.js +16 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/vite.config.mjs +80 -0
- package/skills/jskit/references/patterns/assistant/assistant-surface/PATTERN.md +77 -0
- package/skills/jskit/references/patterns/assistant/assistant-surface/example/config/public.js +19 -0
- package/skills/jskit/references/patterns/assistant/assistant-surface/example/config/server.js +9 -0
- package/skills/jskit/references/patterns/assistant/assistant-surface/example/src/pages/admin/assistant/index.vue +7 -0
- package/skills/jskit/references/patterns/assistant/assistant-surface/example/src/pages/admin/settings/assistant/index.vue +7 -0
- package/skills/jskit/references/patterns/assistant/assistant-surface/example/src/placement.js +38 -0
- package/skills/jskit/references/patterns/auth/auth-surface/PATTERN.md +90 -0
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/pages/auth/login.vue +17 -0
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/pages/auth/reset-password.vue +17 -0
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/pages/auth/signout.vue +17 -0
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/runtime/authGuardRuntime.js +7 -0
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/runtime/authHttpClient.js +1 -0
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/runtime/useSignOut.js +1 -0
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/views/auth/LoginView.vue +7 -0
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/views/auth/ResetPasswordView.vue +7 -0
- package/skills/jskit/references/patterns/auth/auth-surface/example/src/views/auth/SignOutView.vue +7 -0
- package/skills/jskit/references/patterns/auth/auth-surface/example/tools/preview-identity +5 -0
- package/skills/jskit/references/patterns/auth/supabase-auth/PATTERN.md +67 -0
- package/skills/jskit/references/patterns/auth/supabase-auth/example/.env.example +4 -0
- package/skills/jskit/references/patterns/auth/supabase-auth/example/config/server.js +11 -0
- package/skills/jskit/references/patterns/auth/supabase-auth/example/package.json +7 -0
- package/skills/jskit/references/patterns/console/console-surface/PATTERN.md +58 -0
- package/skills/jskit/references/patterns/console/console-surface/example/src/pages/console/index.vue +62 -0
- package/skills/jskit/references/patterns/console/console-surface/example/src/pages/console/settings/index.vue +17 -0
- package/skills/jskit/references/patterns/console/console-surface/example/src/pages/console/settings.vue +95 -0
- package/skills/jskit/references/patterns/console/console-surface/example/src/pages/console.vue +20 -0
- package/skills/jskit/references/patterns/crud/crud-screen-set/PATTERN.md +88 -0
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookEditPage.vue +54 -0
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookFormFields.vue +52 -0
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookListPage.vue +54 -0
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookNewPage.vue +45 -0
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookViewPage.vue +50 -0
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/formFields.js +31 -0
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/listExtensions.js +9 -0
- package/skills/jskit/references/patterns/crud/json-api-resource-package/PATTERN.md +160 -0
- package/skills/jskit/references/patterns/crud/json-api-resource-package/example/migrations/20260815000000_books.cjs +22 -0
- package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/package.json +41 -0
- package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/src/server/BooksFeature.js +13 -0
- package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/src/shared/bookResource.js +83 -0
- package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/src/shared/index.js +1 -0
- package/skills/jskit/references/patterns/crud/resource-contract/PATTERN.md +102 -0
- package/skills/jskit/references/patterns/crud/resource-contract/example/bookResource.js +87 -0
- package/skills/jskit/references/patterns/database/mysql-application/PATTERN.md +80 -0
- package/skills/jskit/references/patterns/database/mysql-application/example/.env.example +5 -0
- package/skills/jskit/references/patterns/database/mysql-application/example/.github/workflows/verify.yml +39 -0
- package/skills/jskit/references/patterns/database/mysql-application/example/knexfile.js +11 -0
- package/skills/jskit/references/patterns/database/mysql-application/example/package.json +13 -0
- package/skills/jskit/references/patterns/database/mysql-application/example/scripts/prepare-database.js +3 -0
- package/skills/jskit/references/patterns/database/postgres-application/PATTERN.md +80 -0
- package/skills/jskit/references/patterns/database/postgres-application/example/.env.example +5 -0
- package/skills/jskit/references/patterns/database/postgres-application/example/.github/workflows/verify.yml +38 -0
- package/skills/jskit/references/patterns/database/postgres-application/example/knexfile.js +11 -0
- package/skills/jskit/references/patterns/database/postgres-application/example/package.json +13 -0
- package/skills/jskit/references/patterns/database/postgres-application/example/scripts/prepare-database.js +3 -0
- package/skills/jskit/references/patterns/mobile/android-application/PATTERN.md +71 -0
- package/skills/jskit/references/patterns/mobile/android-application/example/capacitor.config.json +10 -0
- package/skills/jskit/references/patterns/realtime/realtime-application/PATTERN.md +69 -0
- package/skills/jskit/references/patterns/realtime/realtime-application/example/.env.example +1 -0
- package/skills/jskit/references/patterns/realtime/realtime-application/example/package.json +8 -0
- package/skills/jskit/references/patterns/realtime/realtime-application/example/src/placement.js +17 -0
- package/skills/jskit/references/patterns/server/feature-package/PATTERN.md +108 -0
- package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/package.json +48 -0
- package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/BookingEngineProvider.js +33 -0
- package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/actions.js +26 -0
- package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/src/server/inputSchemas.js +19 -0
- package/skills/jskit/references/patterns/server/feature-package/example/variations/AvailabilityEngineProvider.js +31 -0
- package/skills/jskit/references/patterns/server/feature-package/example/variations/InvoiceRollupProvider.js +36 -0
- package/skills/jskit/references/patterns/server/feature-package/example/variations/customKnexRepository.js +34 -0
- package/skills/jskit/references/patterns/server/feature-package/example/variations/orchestratorService.js +23 -0
- package/skills/jskit/references/patterns/shell/application-shell/PATTERN.md +66 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/expected-existing/src/App.vue +13 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/expected-existing/src/pages/home/index.vue +48 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/expected-existing/src/pages/home.vue +13 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/src/App.vue +11 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/src/components/ShellLayout.vue +13 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/src/components/menus/MenuLinkItem.vue +30 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/src/components/menus/SurfaceAwareMenuLinkItem.vue +42 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/src/components/menus/TabLinkItem.vue +42 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/src/error.js +19 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/src/pages/home/index.vue +106 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/src/pages/home/settings/general/index.vue +40 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/src/pages/home/settings/index.vue +7 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/src/pages/home/settings.vue +109 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/src/pages/home.vue +20 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/src/placement.js +56 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/src/placementTopology.js +149 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/tests/e2e/adaptive-shell.spec.ts +10 -0
- package/skills/jskit/references/patterns/ui/page-and-placement/PATTERN.md +76 -0
- package/skills/jskit/references/patterns/ui/page-and-placement/example/packages/main/src/client/providers/MainClientProvider.js +14 -0
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/components/SyncStatusElement.vue +16 -0
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/pages/home/reports/activity.vue +8 -0
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/pages/home/reports/index.vue +7 -0
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/pages/home/reports/overview.vue +8 -0
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/pages/home/reports.vue +33 -0
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/placement.js +52 -0
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/placementTopology.js +29 -0
- package/skills/jskit/references/patterns/users/account-settings/PATTERN.md +61 -0
- package/skills/jskit/references/patterns/users/account-settings/example/src/components/account/settings/AccountSettingsNotificationsSection.vue +81 -0
- package/skills/jskit/references/patterns/users/account-settings/example/src/components/account/settings/AccountSettingsPreferencesSection.vue +151 -0
- package/skills/jskit/references/patterns/users/account-settings/example/src/components/account/settings/AccountSettingsProfileSection.vue +120 -0
- package/skills/jskit/references/patterns/users/account-settings/example/src/pages/account/index.vue +17 -0
- package/skills/jskit/references/patterns/users/user-administration-server/PATTERN.md +64 -0
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/package.json +42 -0
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/src/server/UsersFeature.js +13 -0
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/src/shared/index.js +1 -0
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/src/shared/userResource.js +69 -0
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/package.json +43 -0
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/src/server/UsersWorkspaceFeature.js +22 -0
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/src/shared/index.js +1 -0
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/src/shared/userResource.js +56 -0
- package/skills/jskit/references/patterns/workspaces/workspace-server/PATTERN.md +60 -0
- package/skills/jskit/references/patterns/workspaces/workspace-server/example/config/roles.js +27 -0
- package/skills/jskit/references/patterns/workspaces/workspace-server/example/packages/main/src/server/email/workspaceInviteEmail.js +23 -0
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/PATTERN.md +63 -0
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/packages/main/src/client/components/AccountPendingInvitesCue.vue +106 -0
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/packages/main/src/client/components/AccountSettingsInvitesSection.vue +7 -0
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/components/WorkspaceNotFoundCard.vue +53 -0
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/composables/useWorkspaceNotFoundState.js +41 -0
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/pages/admin/members/index.vue +7 -0
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/pages/admin/workspace/settings/index.vue +23 -0
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/pages/admin/workspace/settings.vue +95 -0
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/pages/invite/[token].vue +7 -0
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/surfaces/admin/index.vue +85 -0
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/surfaces/admin/root.vue +20 -0
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/surfaces/app/index.vue +46 -0
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/surfaces/app/root.vue +20 -0
- package/skills/jskit/references/ui-operations.md +5 -3
- package/templates/app/AGENTS.md +8 -8
|
@@ -7,7 +7,7 @@ Patterns are ordinary package-owned Markdown and example files. Read the matchin
|
|
|
7
7
|
|
|
8
8
|
Do not create or consult receipts recording that a pattern was used. Current source and verification are the evidence.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
This documentation artifact contains a version-matched copy of every listed pattern and example. Runtime packages remain separate dependencies and should be installed only when the application selects them.
|
|
11
11
|
|
|
12
12
|
## Minimal JSKIT application foundation
|
|
13
13
|
|
|
@@ -15,9 +15,9 @@ A concrete Fastify, Vue, and JSKIT application foundation for products that do n
|
|
|
15
15
|
|
|
16
16
|
- Id: `app/minimal-foundation`
|
|
17
17
|
- Keywords: `app`, `fastify`, `foundation`, `minimal`, `server`, `vite`, `vue`
|
|
18
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
19
|
-
- Read:
|
|
20
|
-
- Examples:
|
|
18
|
+
- Owner: `@jskit-ai/agent-docs@0.1.150`
|
|
19
|
+
- Read: [PATTERN.md](patterns/app/minimal-foundation/PATTERN.md)
|
|
20
|
+
- Examples: [example/](patterns/app/minimal-foundation/example/)
|
|
21
21
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`
|
|
22
22
|
|
|
23
23
|
## Adaptive-shell JSKIT application foundation
|
|
@@ -26,9 +26,9 @@ A concrete JSKIT web application foundation with responsive shell navigation, se
|
|
|
26
26
|
|
|
27
27
|
- Id: `app/shell-foundation`
|
|
28
28
|
- Keywords: `app`, `foundation`, `material`, `navigation`, `placements`, `shell`, `vite`, `vue`
|
|
29
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
30
|
-
- Read:
|
|
31
|
-
- Examples:
|
|
29
|
+
- Owner: `@jskit-ai/agent-docs@0.1.150`
|
|
30
|
+
- Read: [PATTERN.md](patterns/app/shell-foundation/PATTERN.md)
|
|
31
|
+
- Examples: [example/](patterns/app/shell-foundation/example/)
|
|
32
32
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
33
33
|
|
|
34
34
|
## Assistant surface and settings
|
|
@@ -37,9 +37,9 @@ Configure an assistant runtime for one application surface and expose its chat a
|
|
|
37
37
|
|
|
38
38
|
- Id: `assistant/assistant-surface`
|
|
39
39
|
- Keywords: `ai`, `assistant`, `chat`, `config`, `environment`, `page`, `placement`, `settings`, `surface`
|
|
40
|
-
- Owner: `@jskit-ai/assistant-runtime@0.1.
|
|
41
|
-
- Read:
|
|
42
|
-
- Examples:
|
|
40
|
+
- Owner: `@jskit-ai/assistant-runtime@0.1.149`
|
|
41
|
+
- Read: [PATTERN.md](patterns/assistant/assistant-surface/PATTERN.md)
|
|
42
|
+
- Examples: [example/](patterns/assistant/assistant-surface/example/)
|
|
43
43
|
- Requires: `@jskit-ai/assistant-runtime`, `@jskit-ai/shell-web`
|
|
44
44
|
|
|
45
45
|
## Authentication surface
|
|
@@ -48,9 +48,9 @@ Compose JSKIT authentication routes, views, profile controls, and public surface
|
|
|
48
48
|
|
|
49
49
|
- Id: `auth/auth-surface`
|
|
50
50
|
- Keywords: `account`, `auth`, `login`, `logout`, `password`, `placement`, `profile`, `reset`, `surface`
|
|
51
|
-
- Owner: `@jskit-ai/auth-web@0.1.
|
|
52
|
-
- Read:
|
|
53
|
-
- Examples:
|
|
51
|
+
- Owner: `@jskit-ai/auth-web@0.1.178`
|
|
52
|
+
- Read: [PATTERN.md](patterns/auth/auth-surface/PATTERN.md)
|
|
53
|
+
- Examples: [example/](patterns/auth/auth-surface/example/)
|
|
54
54
|
- Requires: `@jskit-ai/auth-core`, `@jskit-ai/auth-web`, `@jskit-ai/shell-web`
|
|
55
55
|
|
|
56
56
|
## Supabase authentication
|
|
@@ -59,9 +59,9 @@ Add Supabase authentication through normal npm composition, explicit environment
|
|
|
59
59
|
|
|
60
60
|
- Id: `auth/supabase-auth`
|
|
61
61
|
- Keywords: `auth`, `authentication`, `oauth`, `sessions`, `supabase`
|
|
62
|
-
- Owner: `@jskit-ai/auth-provider-supabase-core@0.1.
|
|
63
|
-
- Read:
|
|
64
|
-
- Examples:
|
|
62
|
+
- Owner: `@jskit-ai/auth-provider-supabase-core@0.1.175`
|
|
63
|
+
- Read: [PATTERN.md](patterns/auth/supabase-auth/PATTERN.md)
|
|
64
|
+
- Examples: [example/](patterns/auth/supabase-auth/example/)
|
|
65
65
|
- Requires: `@jskit-ai/auth-provider-supabase-core`
|
|
66
66
|
|
|
67
67
|
## Owner console surface
|
|
@@ -70,9 +70,9 @@ Add a protected administration surface, settings shell, and semantic navigation
|
|
|
70
70
|
|
|
71
71
|
- Id: `console/console-surface`
|
|
72
72
|
- Keywords: `admin`, `console`, `navigation`, `owner`, `placement`, `settings`, `surface`
|
|
73
|
-
- Owner: `@jskit-ai/console-web@0.1.
|
|
74
|
-
- Read:
|
|
75
|
-
- Examples:
|
|
73
|
+
- Owner: `@jskit-ai/console-web@0.1.146`
|
|
74
|
+
- Read: [PATTERN.md](patterns/console/console-surface/PATTERN.md)
|
|
75
|
+
- Examples: [example/](patterns/console/console-surface/example/)
|
|
76
76
|
- Requires: `@jskit-ai/console-core`, `@jskit-ai/console-web`, `@jskit-ai/shell-web`
|
|
77
77
|
|
|
78
78
|
## CRUD list, view, create, and edit screens
|
|
@@ -81,9 +81,9 @@ Build a routed CRUD user interface as thin application pages over JSKIT's shared
|
|
|
81
81
|
|
|
82
82
|
- Id: `crud/crud-screen-set`
|
|
83
83
|
- Keywords: `actions`, `add`, `crud`, `delete`, `edit`, `filters`, `list`, `material`, `routes`, `view`, `vue`
|
|
84
|
-
- Owner: `@jskit-ai/http-web@0.1.
|
|
85
|
-
- Read:
|
|
86
|
-
- Examples:
|
|
84
|
+
- Owner: `@jskit-ai/http-web@0.1.23`
|
|
85
|
+
- Read: [PATTERN.md](patterns/crud/crud-screen-set/PATTERN.md)
|
|
86
|
+
- Examples: [example/](patterns/crud/crud-screen-set/example/)
|
|
87
87
|
- Requires: `@jskit-ai/http-web`, `@jskit-ai/resource-crud-core`
|
|
88
88
|
|
|
89
89
|
## JSON API CRUD resource package
|
|
@@ -92,9 +92,9 @@ Build a complete application-owned CRUD server package from a migration, resourc
|
|
|
92
92
|
|
|
93
93
|
- Id: `crud/json-api-resource-package`
|
|
94
94
|
- Keywords: `actions`, `crud`, `database`, `json-api`, `migration`, `permissions`, `provider`, `repository`, `routes`, `service`
|
|
95
|
-
- Owner: `@jskit-ai/crud-core@0.1.
|
|
96
|
-
- Read:
|
|
97
|
-
- Examples:
|
|
95
|
+
- Owner: `@jskit-ai/crud-core@0.1.189`
|
|
96
|
+
- Read: [PATTERN.md](patterns/crud/json-api-resource-package/PATTERN.md)
|
|
97
|
+
- Examples: [example/](patterns/crud/json-api-resource-package/example/)
|
|
98
98
|
- Requires: `@jskit-ai/crud-core`, `@jskit-ai/resource-crud-core`
|
|
99
99
|
|
|
100
100
|
## Owner-scoped CRUD resource contract
|
|
@@ -103,9 +103,9 @@ Define an authenticated application resource whose records belong to the current
|
|
|
103
103
|
|
|
104
104
|
- Id: `crud/resource-contract`
|
|
105
105
|
- Keywords: `authenticated`, `crud`, `database`, `owner-scoped`, `resource`, `user`
|
|
106
|
-
- Owner: `@jskit-ai/resource-crud-core@0.1.
|
|
107
|
-
- Read:
|
|
108
|
-
- Examples:
|
|
106
|
+
- Owner: `@jskit-ai/resource-crud-core@0.1.120`
|
|
107
|
+
- Read: [PATTERN.md](patterns/crud/resource-contract/PATTERN.md)
|
|
108
|
+
- Examples: [example/](patterns/crud/resource-contract/example/)
|
|
109
109
|
- Requires: `@jskit-ai/resource-crud-core`
|
|
110
110
|
|
|
111
111
|
## MySQL application database
|
|
@@ -114,9 +114,9 @@ Configure a JSKIT application for MySQL with a fixed driver, ordinary environmen
|
|
|
114
114
|
|
|
115
115
|
- Id: `database/mysql-application`
|
|
116
116
|
- Keywords: `database`, `knex`, `mariadb`, `migrations`, `mysql`, `mysql2`
|
|
117
|
-
- Owner: `@jskit-ai/database-runtime-mysql@0.1.
|
|
118
|
-
- Read:
|
|
119
|
-
- Examples:
|
|
117
|
+
- Owner: `@jskit-ai/database-runtime-mysql@0.1.176`
|
|
118
|
+
- Read: [PATTERN.md](patterns/database/mysql-application/PATTERN.md)
|
|
119
|
+
- Examples: [example/](patterns/database/mysql-application/example/)
|
|
120
120
|
- Requires: `@jskit-ai/database-runtime-mysql`
|
|
121
121
|
|
|
122
122
|
## PostgreSQL application database
|
|
@@ -125,9 +125,9 @@ Configure a JSKIT application for PostgreSQL with a fixed driver, ordinary envir
|
|
|
125
125
|
|
|
126
126
|
- Id: `database/postgres-application`
|
|
127
127
|
- Keywords: `database`, `knex`, `migrations`, `pg`, `postgres`, `postgresql`
|
|
128
|
-
- Owner: `@jskit-ai/database-runtime-postgres@0.1.
|
|
129
|
-
- Read:
|
|
130
|
-
- Examples:
|
|
128
|
+
- Owner: `@jskit-ai/database-runtime-postgres@0.1.175`
|
|
129
|
+
- Read: [PATTERN.md](patterns/database/postgres-application/PATTERN.md)
|
|
130
|
+
- Examples: [example/](patterns/database/postgres-application/example/)
|
|
131
131
|
- Requires: `@jskit-ai/database-runtime-postgres`
|
|
132
132
|
|
|
133
133
|
## Capacitor Android application
|
|
@@ -136,9 +136,9 @@ Wrap a JSKIT web application in a Capacitor Android shell using native Capacitor
|
|
|
136
136
|
|
|
137
137
|
- Id: `mobile/android-application`
|
|
138
138
|
- Keywords: `android`, `capacitor`, `device`, `mobile`, `native`, `shell`, `webview`
|
|
139
|
-
- Owner: `@jskit-ai/mobile-capacitor@0.1.
|
|
140
|
-
- Read:
|
|
141
|
-
- Examples:
|
|
139
|
+
- Owner: `@jskit-ai/mobile-capacitor@0.1.113`
|
|
140
|
+
- Read: [PATTERN.md](patterns/mobile/android-application/PATTERN.md)
|
|
141
|
+
- Examples: [example/](patterns/mobile/android-application/example/)
|
|
142
142
|
- Requires: `@capacitor/android`, `@capacitor/app`, `@capacitor/cli`, `@jskit-ai/mobile-capacitor`
|
|
143
143
|
|
|
144
144
|
## Realtime application
|
|
@@ -147,9 +147,9 @@ Add JSKIT realtime events with an optional Redis backplane and an explicit shell
|
|
|
147
147
|
|
|
148
148
|
- Id: `realtime/realtime-application`
|
|
149
149
|
- Keywords: `realtime`, `redis`, `socket.io`, `sockets`, `status`, `websocket`
|
|
150
|
-
- Owner: `@jskit-ai/realtime@0.1.
|
|
151
|
-
- Read:
|
|
152
|
-
- Examples:
|
|
150
|
+
- Owner: `@jskit-ai/realtime@0.1.175`
|
|
151
|
+
- Read: [PATTERN.md](patterns/realtime/realtime-application/PATTERN.md)
|
|
152
|
+
- Examples: [example/](patterns/realtime/realtime-application/example/)
|
|
153
153
|
- Requires: `@jskit-ai/realtime`, `@jskit-ai/shell-web`
|
|
154
154
|
|
|
155
155
|
## App-local server feature package
|
|
@@ -158,9 +158,9 @@ Define a server feature through explicit capabilities and first-class actions, a
|
|
|
158
158
|
|
|
159
159
|
- Id: `server/feature-package`
|
|
160
160
|
- Keywords: `actions`, `feature`, `json-rest`, `knex`, `orchestration`, `package`, `provider`, `repository`, `routes`, `server`
|
|
161
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
162
|
-
- Read:
|
|
163
|
-
- Examples:
|
|
161
|
+
- Owner: `@jskit-ai/agent-docs@0.1.150`
|
|
162
|
+
- Read: [PATTERN.md](patterns/server/feature-package/PATTERN.md)
|
|
163
|
+
- Examples: [example/](patterns/server/feature-package/example/)
|
|
164
164
|
- Requires: `@jskit-ai/kernel`
|
|
165
165
|
|
|
166
166
|
## Responsive application shell
|
|
@@ -169,9 +169,9 @@ Compose the JSKIT responsive shell, semantic placements, settings navigation, an
|
|
|
169
169
|
|
|
170
170
|
- Id: `shell/application-shell`
|
|
171
171
|
- Keywords: `adaptive`, `app`, `layout`, `navigation`, `placement`, `responsive`, `settings`, `shell`
|
|
172
|
-
- Owner: `@jskit-ai/shell-web@0.1.
|
|
173
|
-
- Read:
|
|
174
|
-
- Examples:
|
|
172
|
+
- Owner: `@jskit-ai/shell-web@0.1.182`
|
|
173
|
+
- Read: [PATTERN.md](patterns/shell/application-shell/PATTERN.md)
|
|
174
|
+
- Examples: [example/](patterns/shell/application-shell/example/)
|
|
175
175
|
- Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
176
176
|
|
|
177
177
|
## Routed page, section navigation, and placed element
|
|
@@ -180,9 +180,9 @@ Add product routes and shell extensions through file routing, semantic placement
|
|
|
180
180
|
|
|
181
181
|
- Id: `ui/page-and-placement`
|
|
182
182
|
- Keywords: `component`, `navigation`, `outlet`, `page`, `placement`, `routes`, `section`, `shell`, `subpages`, `vue`
|
|
183
|
-
- Owner: `@jskit-ai/shell-web@0.1.
|
|
184
|
-
- Read:
|
|
185
|
-
- Examples:
|
|
183
|
+
- Owner: `@jskit-ai/shell-web@0.1.182`
|
|
184
|
+
- Read: [PATTERN.md](patterns/ui/page-and-placement/PATTERN.md)
|
|
185
|
+
- Examples: [example/](patterns/ui/page-and-placement/example/)
|
|
186
186
|
- Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
187
187
|
|
|
188
188
|
## Account settings surface
|
|
@@ -191,9 +191,9 @@ Compose an account settings route and profile, preference, and notification sect
|
|
|
191
191
|
|
|
192
192
|
- Id: `users/account-settings`
|
|
193
193
|
- Keywords: `account`, `notifications`, `preferences`, `profile`, `settings`, `user`, `vue`
|
|
194
|
-
- Owner: `@jskit-ai/users-web@0.1.
|
|
195
|
-
- Read:
|
|
196
|
-
- Examples:
|
|
194
|
+
- Owner: `@jskit-ai/users-web@0.1.196`
|
|
195
|
+
- Read: [PATTERN.md](patterns/users/account-settings/PATTERN.md)
|
|
196
|
+
- Examples: [example/](patterns/users/account-settings/example/)
|
|
197
197
|
- Requires: `@jskit-ai/shell-web`, `@jskit-ai/users-core`, `@jskit-ai/users-web`
|
|
198
198
|
|
|
199
199
|
## User administration server package
|
|
@@ -202,9 +202,9 @@ Expose user administration and workspace-scoped member operations through app-ow
|
|
|
202
202
|
|
|
203
203
|
- Id: `users/user-administration-server`
|
|
204
204
|
- Keywords: `account`, `admin`, `member`, `repository`, `resource`, `routes`, `service`, `user`, `workspace`
|
|
205
|
-
- Owner: `@jskit-ai/users-core@0.1.
|
|
206
|
-
- Read:
|
|
207
|
-
- Examples:
|
|
205
|
+
- Owner: `@jskit-ai/users-core@0.1.191`
|
|
206
|
+
- Read: [PATTERN.md](patterns/users/user-administration-server/PATTERN.md)
|
|
207
|
+
- Examples: [example/](patterns/users/user-administration-server/example/)
|
|
208
208
|
- Requires: `@jskit-ai/crud-core`, `@jskit-ai/users-core`
|
|
209
209
|
|
|
210
210
|
## Workspace tenancy server composition
|
|
@@ -213,9 +213,9 @@ Configure roles, workspace access policy, invitations, and app-owned invitation
|
|
|
213
213
|
|
|
214
214
|
- Id: `workspaces/workspace-server`
|
|
215
215
|
- Keywords: `access`, `invite`, `membership`, `multitenancy`, `policy`, `role`, `tenancy`, `workspace`
|
|
216
|
-
- Owner: `@jskit-ai/workspaces-core@0.1.
|
|
217
|
-
- Read:
|
|
218
|
-
- Examples:
|
|
216
|
+
- Owner: `@jskit-ai/workspaces-core@0.1.156`
|
|
217
|
+
- Read: [PATTERN.md](patterns/workspaces/workspace-server/PATTERN.md)
|
|
218
|
+
- Examples: [example/](patterns/workspaces/workspace-server/example/)
|
|
219
219
|
- Requires: `@jskit-ai/users-core`, `@jskit-ai/workspaces-core`
|
|
220
220
|
|
|
221
221
|
## Workspace application and administration surfaces
|
|
@@ -224,7 +224,7 @@ Compose workspace selection, invitation, member administration, settings, and re
|
|
|
224
224
|
|
|
225
225
|
- Id: `workspaces/workspace-surfaces`
|
|
226
226
|
- Keywords: `admin`, `invite`, `member`, `navigation`, `settings`, `surface`, `switcher`, `workspace`
|
|
227
|
-
- Owner: `@jskit-ai/workspaces-web@0.1.
|
|
228
|
-
- Read:
|
|
229
|
-
- Examples:
|
|
227
|
+
- Owner: `@jskit-ai/workspaces-web@0.1.157`
|
|
228
|
+
- Read: [PATTERN.md](patterns/workspaces/workspace-surfaces/PATTERN.md)
|
|
229
|
+
- Examples: [example/](patterns/workspaces/workspace-surfaces/example/)
|
|
230
230
|
- Requires: `@jskit-ai/shell-web`, `@jskit-ai/workspaces-core`, `@jskit-ai/workspaces-web`
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: app/minimal-foundation
|
|
3
|
+
title: Minimal JSKIT application foundation
|
|
4
|
+
summary: A concrete Fastify, Vue, and JSKIT application foundation for products that do not yet need the full adaptive shell.
|
|
5
|
+
keywords: app, fastify, foundation, minimal, server, vite, vue
|
|
6
|
+
requires: @jskit-ai/http-runtime, @jskit-ai/kernel
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Minimal JSKIT application foundation
|
|
10
|
+
|
|
11
|
+
## Use when
|
|
12
|
+
|
|
13
|
+
Use this pattern when establishing a new JSKIT web application in an existing
|
|
14
|
+
project repository and the product does not yet need the full adaptive shell,
|
|
15
|
+
settings navigation, or placement topology. It provides a working server,
|
|
16
|
+
client bootstrap, app-local provider package, one public surface, linting, unit
|
|
17
|
+
tests, browser tests, and the normal build entrypoints.
|
|
18
|
+
|
|
19
|
+
The example is a concrete application named `reading-room`. Copy the useful
|
|
20
|
+
files into the project root, rename the application in normal source and
|
|
21
|
+
package metadata, and then edit the product-facing page. The files become
|
|
22
|
+
ordinary application source immediately.
|
|
23
|
+
|
|
24
|
+
## Do not use when
|
|
25
|
+
|
|
26
|
+
Do not use this pattern when the application already has an established
|
|
27
|
+
server/client foundation. Do not replace a working app merely to make it
|
|
28
|
+
resemble the example. Prefer the shell foundation when responsive navigation,
|
|
29
|
+
settings, or placement contributions are already clear requirements.
|
|
30
|
+
|
|
31
|
+
## Product decisions
|
|
32
|
+
|
|
33
|
+
Decide the application name, first useful route, public versus authenticated
|
|
34
|
+
surface access, and whether the product needs the adaptive shell. These are
|
|
35
|
+
product decisions for the user and agent; this pattern does not ask a
|
|
36
|
+
questionnaire or infer tenancy, authentication, or database requirements.
|
|
37
|
+
|
|
38
|
+
## Invariants
|
|
39
|
+
|
|
40
|
+
- Preserve `.git` and all unrelated project and agent context.
|
|
41
|
+
- Refuse or resolve real destination-file collisions before copying.
|
|
42
|
+
- Keep `packages/main` limited to app composition and lightweight glue.
|
|
43
|
+
- Declare `packages/*` as an npm workspace and depend on app-local packages by
|
|
44
|
+
their exact package versions, never through `file:` paths.
|
|
45
|
+
- Use package public APIs; do not deep-import package internals.
|
|
46
|
+
- Keep one server entry, one client bootstrap, and explicit surface access.
|
|
47
|
+
- Keep one app-owned `npm run develop` entry that runs the API on loopback and
|
|
48
|
+
Vite on the host-supplied preview port; do not require a host to infer or
|
|
49
|
+
supervise framework-specific processes.
|
|
50
|
+
- Keep Vite's default `resolve.preserveSymlinks: false` so linked application
|
|
51
|
+
packages resolve to mutable `/packages/` source during development.
|
|
52
|
+
- If the application adds a production service worker, never cache Vite
|
|
53
|
+
development paths. Cache JavaScript and CSS only through content-hashed
|
|
54
|
+
`/assets/` URLs.
|
|
55
|
+
- Treat copied files as app-owned source. Do not add provenance, ownership
|
|
56
|
+
markers, receipts, ledgers, or operation-history state.
|
|
57
|
+
- Keep browser dependencies aligned with the execution environment that will
|
|
58
|
+
run the tests. Vibe64 supplies its exact managed Playwright version.
|
|
59
|
+
|
|
60
|
+
## Framework APIs
|
|
61
|
+
|
|
62
|
+
The example composes `@jskit-ai/kernel` for provider/runtime composition and
|
|
63
|
+
`@jskit-ai/http-runtime` for the web runtime. `packages/main` demonstrates the
|
|
64
|
+
app-local provider boundary. Vite, Vue Router, Pinia, Vuetify, Fastify, and Vue
|
|
65
|
+
Query remain normal application dependencies.
|
|
66
|
+
|
|
67
|
+
## Example files
|
|
68
|
+
|
|
69
|
+
`example/` is a complete concrete application tree. Copy only after inspecting
|
|
70
|
+
collisions. Rename `example/gitignore` to `.gitignore` in the application;
|
|
71
|
+
the neutral filename ensures npm publishes the reference asset. Managed preview
|
|
72
|
+
identity belongs to the authentication surface pattern, not the neutral
|
|
73
|
+
foundation.
|
|
74
|
+
|
|
75
|
+
Important starting points are:
|
|
76
|
+
|
|
77
|
+
- `example/package.json`
|
|
78
|
+
- `example/server.js`, `example/bin/server.js`, and `example/bin/develop.js`
|
|
79
|
+
- `example/src/main.js` and `example/src/App.vue`
|
|
80
|
+
- `example/config/public.js`
|
|
81
|
+
- `example/packages/main/`
|
|
82
|
+
- `example/tests/`
|
|
83
|
+
|
|
84
|
+
## Variation points
|
|
85
|
+
|
|
86
|
+
Rename the package and title, replace the home page with the first real
|
|
87
|
+
product surface, add capabilities through their owning packages, and change
|
|
88
|
+
surface access deliberately. Add authentication, database, CRUD, shell, or
|
|
89
|
+
mobile patterns only when chosen. Do not pre-emptively include them.
|
|
90
|
+
|
|
91
|
+
## Verification
|
|
92
|
+
|
|
93
|
+
After adapting the example, install the declared packages once and run
|
|
94
|
+
`npm run develop` for the live application. Then run the application's lint,
|
|
95
|
+
server tests, client tests, production build, and focused browser smoke.
|
|
96
|
+
Confirm `/api/health` and the first product route.
|
|
97
|
+
|
|
98
|
+
## Avoid
|
|
99
|
+
|
|
100
|
+
- Do not run a scaffold questionnaire.
|
|
101
|
+
- Do not create a temporary app and copy its result over the project.
|
|
102
|
+
- Do not force-overwrite an existing repository.
|
|
103
|
+
- Do not keep `reading-room` names that no longer describe the product.
|
|
104
|
+
- Do not add a hidden file recording that this pattern was copied.
|
|
105
|
+
- Do not turn the example into a field interpolation language.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
26
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# App Agent Instructions
|
|
2
|
+
|
|
3
|
+
Use current project context, JSKIT public APIs, and the official framework
|
|
4
|
+
documentation as the source of truth for application work.
|
|
5
|
+
|
|
6
|
+
Framework references:
|
|
7
|
+
|
|
8
|
+
- `https://mobily-enterprises.github.io/jskit-ai/guide/`
|
|
9
|
+
- `https://mobily-enterprises.github.io/jskit-ai/patterns/`
|
|
10
|
+
|
|
11
|
+
Before implementation, read the narrow relevant source pattern completely. If
|
|
12
|
+
its owner package is installed, prefer that version-matched package-owned copy.
|
|
13
|
+
Do not install an unrelated runtime package only to read documentation.
|
|
14
|
+
|
|
15
|
+
Copied pattern source is ordinary application source. Do not add generator
|
|
16
|
+
provenance, receipts, completion ledgers, or tooling-operation history. Keep
|
|
17
|
+
changes scoped to the user request and verify runtime behavior directly.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { startServer } from "../server.js";
|
|
3
|
+
|
|
4
|
+
const LOOPBACK_HOST = "127.0.0.1";
|
|
5
|
+
|
|
6
|
+
function requiredPort(value, fallback = 3000) {
|
|
7
|
+
const normalized = String(value || "").trim();
|
|
8
|
+
const parsed = Number.parseInt(normalized || String(fallback), 10);
|
|
9
|
+
if (!Number.isInteger(parsed) || parsed < 1 || parsed > 65_535) {
|
|
10
|
+
throw new Error(`Invalid development port: ${normalized || "(empty)"}.`);
|
|
11
|
+
}
|
|
12
|
+
return parsed;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function waitForChild(child) {
|
|
16
|
+
return new Promise((resolve, reject) => {
|
|
17
|
+
child.once("error", reject);
|
|
18
|
+
child.once("exit", (code, signal) => resolve({ code, signal }));
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const previewHost = String(process.env.HOST || "").trim() || "0.0.0.0";
|
|
23
|
+
const previewPort = requiredPort(process.env.PORT);
|
|
24
|
+
let apiServer = null;
|
|
25
|
+
let viteProcess = null;
|
|
26
|
+
let requestedSignal = "";
|
|
27
|
+
|
|
28
|
+
function requestShutdown(signal) {
|
|
29
|
+
requestedSignal = signal;
|
|
30
|
+
if (viteProcess && !viteProcess.killed) {
|
|
31
|
+
viteProcess.kill(signal);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
process.once("SIGINT", () => requestShutdown("SIGINT"));
|
|
36
|
+
process.once("SIGTERM", () => requestShutdown("SIGTERM"));
|
|
37
|
+
|
|
38
|
+
try {
|
|
39
|
+
apiServer = await startServer({ host: LOOPBACK_HOST, port: 0 });
|
|
40
|
+
const apiPort = requiredPort(apiServer.server.address()?.port);
|
|
41
|
+
const npmCommand = process.platform === "win32" ? "npm.cmd" : "npm";
|
|
42
|
+
viteProcess = spawn(
|
|
43
|
+
npmCommand,
|
|
44
|
+
["run", "dev", "--", "--host", previewHost, "--port", String(previewPort), "--strictPort"],
|
|
45
|
+
{
|
|
46
|
+
cwd: process.cwd(),
|
|
47
|
+
env: {
|
|
48
|
+
...process.env,
|
|
49
|
+
HOST: previewHost,
|
|
50
|
+
PORT: String(previewPort),
|
|
51
|
+
VITE_API_PROXY_TARGET: `http://${LOOPBACK_HOST}:${apiPort}`,
|
|
52
|
+
VITE_DEV_PORT: String(previewPort)
|
|
53
|
+
},
|
|
54
|
+
stdio: "inherit"
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
const result = await waitForChild(viteProcess);
|
|
59
|
+
if (!requestedSignal && result.code !== 0) {
|
|
60
|
+
throw new Error(
|
|
61
|
+
`Vite development server stopped unexpectedly (${result.signal || `exit ${result.code ?? "unknown"}`}).`
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
} catch (error) {
|
|
65
|
+
console.error("Failed to start the development application:", error);
|
|
66
|
+
process.exitCode = 1;
|
|
67
|
+
} finally {
|
|
68
|
+
if (apiServer) {
|
|
69
|
+
await apiServer.close().catch(() => {});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { surfaceAccessPolicies } from "./surfaceAccessPolicies.js";
|
|
2
|
+
|
|
3
|
+
export const config = {};
|
|
4
|
+
|
|
5
|
+
config.surfaceModeAll = "all";
|
|
6
|
+
config.surfaceDefaultId = "home";
|
|
7
|
+
config.webRootAllowed = "no";
|
|
8
|
+
config.surfaceAccessPolicies = surfaceAccessPolicies;
|
|
9
|
+
config.mobile = {
|
|
10
|
+
enabled: false,
|
|
11
|
+
strategy: "",
|
|
12
|
+
appId: "",
|
|
13
|
+
appName: "",
|
|
14
|
+
assetMode: "bundled",
|
|
15
|
+
devServerUrl: "",
|
|
16
|
+
apiBaseUrl: "",
|
|
17
|
+
auth: {
|
|
18
|
+
callbackPath: "/auth/login",
|
|
19
|
+
customScheme: "",
|
|
20
|
+
appLinkDomains: []
|
|
21
|
+
},
|
|
22
|
+
android: {
|
|
23
|
+
packageName: "",
|
|
24
|
+
minSdk: 26,
|
|
25
|
+
targetSdk: 35,
|
|
26
|
+
versionCode: 1,
|
|
27
|
+
versionName: "1.0.0"
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
config.surfaceDefinitions = {};
|
|
31
|
+
config.surfaceDefinitions.home = {
|
|
32
|
+
id: "home",
|
|
33
|
+
label: "Home",
|
|
34
|
+
pagesRoot: "home",
|
|
35
|
+
enabled: true,
|
|
36
|
+
requiresAuth: false,
|
|
37
|
+
requiresWorkspace: false,
|
|
38
|
+
accessPolicyId: "public",
|
|
39
|
+
origin: ""
|
|
40
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const config = {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { baseConfig, nodeConfig, vueConfig, webConfig } from "@jskit-ai/config-eslint/server";
|
|
2
|
+
|
|
3
|
+
export default [
|
|
4
|
+
{
|
|
5
|
+
ignores: ["dist/**", "node_modules/**", "coverage/**", "test-results/**", ".jskit/**"]
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
files: ["src/pages/**/*.vue"],
|
|
9
|
+
languageOptions: {
|
|
10
|
+
globals: {
|
|
11
|
+
definePage: "readonly"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
...baseConfig,
|
|
16
|
+
...vueConfig,
|
|
17
|
+
...webConfig,
|
|
18
|
+
...nodeConfig
|
|
19
|
+
];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
7
|
+
<title>Reading Room</title>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div id="app"></div>
|
|
11
|
+
<script type="module" src="/src/main.js"></script>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|