@polymorphism-tech/morph-spec 4.16.0 → 4.18.0
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/CLAUDE.md +36 -0
- package/README.md +2 -2
- package/bin/morph-spec.js +3 -0
- package/bin/task-manager.js +999 -962
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/agents/ai-agents/vector-search-expert.md +247 -233
- package/framework/agents/backend/ms-agent-expert.md +1 -1
- package/framework/agents/backend/neon-expert.md +379 -0
- package/framework/agents/frontend/gsap-animator.md +131 -0
- package/framework/agents/integrations/neon-auth.md +151 -0
- package/framework/agents.json +1183 -1085
- package/framework/commands/morph-preflight.md +200 -192
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +1 -1
- package/framework/rules/gsap-standards.md +13 -0
- package/framework/rules/neon-auth-standards.md +13 -0
- package/framework/rules/neon-standards.md +26 -0
- package/framework/skills/level-0-meta/mcp-registry.json +1 -1
- package/framework/skills/level-0-meta/morph-agent-teams/SKILL.md +472 -472
- package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +1 -1
- package/framework/skills/level-0-meta/morph-init/SKILL.md +12 -12
- package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +5 -5
- package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +5 -5
- package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +7 -7
- package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +24 -24
- package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +12 -12
- package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +9 -9
- package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/task-planning-patterns.md +143 -143
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +1 -1
- package/framework/standards/STANDARDS.json +197 -116
- package/framework/standards/ai-agents/production.md +1 -0
- package/framework/standards/ai-agents/setup.md +3 -2
- package/framework/standards/ai-agents/workflows.md +1 -0
- package/framework/standards/architecture/vertical-slice/vertical-slice.md +4 -4
- package/framework/standards/backend/database/postgresql/database.md +63 -83
- package/framework/standards/backend/dotnet/scalar-ui.md +172 -172
- package/framework/standards/backend/dotnet/vsa-handler-patterns.md +274 -274
- package/framework/standards/backend/integrations/asaas/asaas-api.md +2 -2
- package/framework/standards/backend/integrations/neon-auth/neon-auth.md +364 -0
- package/framework/standards/frontend/design-system/animations.md +9 -0
- package/framework/standards/frontend/gsap/gsap-core.md +463 -0
- package/framework/standards/frontend/gsap/gsap-plugins.md +294 -0
- package/framework/standards/frontend/gsap/gsap-scrolltrigger.md +318 -0
- package/framework/standards/frontend/nextjs/motion-patterns.md +1 -0
- package/framework/standards/frontend/nextjs/nextjs-patterns.md +47 -37
- package/framework/standards/infrastructure/docker/easypanel-deploy.md +4 -8
- package/framework/standards/infrastructure/neon/neon-pgrag.md +239 -0
- package/framework/standards/infrastructure/neon/neon-pgvector.md +236 -0
- package/framework/standards/infrastructure/neon/neon-semantic-kernel.md +310 -0
- package/framework/standards/infrastructure/neon/neon-setup.md +186 -0
- package/framework/standards/integration/mcp/mcp-tools.md +32 -34
- package/framework/templates/README.md +20 -20
- package/framework/templates/REGISTRY.json +54 -101
- package/framework/templates/code/dotnet/abstractions/api-endpoint.cs +7 -7
- package/framework/templates/code/dotnet/backend/repository.cs +148 -148
- package/framework/templates/code/dotnet/contracts/contracts-vsa.cs +2 -2
- package/framework/templates/code/dotnet/database/vector-entity.cs +93 -0
- package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +1 -1
- package/framework/templates/code/sql/{supabase-migration.sql → postgresql-migration.sql} +12 -21
- package/framework/templates/code/sql/{supabase-migration.template.sql → postgresql-migration.template.sql} +13 -18
- package/framework/templates/code/sql/{rls-policy.sql → postgresql-rls-policy.sql} +6 -9
- package/framework/templates/code/typescript/contracts.ts +167 -168
- package/framework/templates/context/CONTEXT.md +3 -3
- package/framework/templates/docs/proposal.md +6 -6
- package/framework/templates/docs/ui-components.md +1 -1
- package/framework/templates/feature/decisions.md +122 -121
- package/framework/templates/feature/recap.md +145 -145
- package/framework/templates/feature/tasks.md +199 -199
- package/framework/templates/frontend/nextjs/gsap-scroll-section.tsx.hbs +44 -0
- package/framework/templates/infrastructure/docker/docker-compose.template.yml +50 -67
- package/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -38
- package/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -48
- package/framework/templates/infrastructure/docker/easypanel.template.json +46 -54
- package/framework/templates/infrastructure/github/README.md +56 -56
- package/framework/templates/integrations/neon-auth-config.cs +133 -0
- package/framework/templates/integrations/semantic-kernel-neon.cs +125 -0
- package/framework/workflows/README.md +1 -1
- package/framework/workflows/docs/full-morph.md +69 -69
- package/package.json +1 -1
- package/src/commands/agents/dispatch-agents.js +19 -15
- package/src/commands/state/advance-phase.js +5 -0
- package/src/commands/tasks/task.js +3 -0
- package/src/core/state/state-manager.js +45 -1
- package/src/core/templates/template-registry.js +1 -66
- package/src/lib/detectors/index.js +4 -4
- package/src/lib/generators/architecture-scanner.js +639 -640
- package/src/lib/installers/mcp-installer.js +1 -1
- package/src/lib/tasks/task-classifier.js +15 -1
- package/src/lib/tasks/test-runner.js +5 -1
- package/src/lib/validators/content/content-validator.js +9 -10
- package/src/lib/validators/validation-runner.js +7 -5
- package/framework/agents/backend/supabase-expert.md +0 -256
- package/framework/agents/integrations/clerk-auth.md +0 -109
- package/framework/rules/clerk-standards.md +0 -13
- package/framework/rules/supabase-standards.md +0 -29
- package/framework/standards/backend/integrations/clerk/clerk-auth.md +0 -290
- package/framework/standards/infrastructure/supabase/mcp-setup.md +0 -142
- package/framework/standards/infrastructure/supabase/supabase-auth.md +0 -176
- package/framework/standards/infrastructure/supabase/supabase-custom-jwt.md +0 -206
- package/framework/standards/infrastructure/supabase/supabase-pgvector.md +0 -169
- package/framework/standards/infrastructure/supabase/supabase-rls.md +0 -184
- package/framework/standards/infrastructure/supabase/supabase-storage.md +0 -153
- package/framework/templates/integrations/clerk-config.cs +0 -217
|
@@ -50,9 +50,9 @@ framework/templates/
|
|
|
50
50
|
│ │ └── contracts.ts # TypeScript type definitions
|
|
51
51
|
│ │
|
|
52
52
|
│ └── sql/
|
|
53
|
-
│ ├──
|
|
54
|
-
│ ├──
|
|
55
|
-
│ └── rls-policy.sql # Row-level security
|
|
53
|
+
│ ├── postgresql-migration.sql # Basic migration
|
|
54
|
+
│ ├── postgresql-migration.template.sql # Enhanced migration
|
|
55
|
+
│ └── postgresql-rls-policy.sql # Row-level security
|
|
56
56
|
│
|
|
57
57
|
├── infrastructure/
|
|
58
58
|
│ ├── docker/ # Docker & EasyPanel
|
|
@@ -77,7 +77,7 @@ framework/templates/
|
|
|
77
77
|
├── integrations/ # Platform-agnostic integrations
|
|
78
78
|
│ ├── asaas-client.cs # Asaas financial API
|
|
79
79
|
│ ├── asaas-webhook.cs # Asaas webhooks
|
|
80
|
-
│ └──
|
|
80
|
+
│ └── neon-auth-config.cs # Neon Auth (Better Auth)
|
|
81
81
|
│
|
|
82
82
|
├── ui/ # Design systems
|
|
83
83
|
│ └── design-system.css # CSS tokens
|
|
@@ -102,12 +102,12 @@ framework/templates/
|
|
|
102
102
|
| **By Stack** (old v1) | Stack-specific optimizations | Duplicate templates, hard to reuse | Single-stack projects |
|
|
103
103
|
| **By Technology** (new v2) | Reusable, DRY, future-proof | Requires stack override mechanism | Multi-stack frameworks |
|
|
104
104
|
|
|
105
|
-
**Example:** A `.NET service.cs` template works for both `dotnet-nextjs` and `nextjs-
|
|
105
|
+
**Example:** A `.NET service.cs` template works for both `dotnet-nextjs` and `nextjs-neon` stacks (both use .NET backend). No need to duplicate!
|
|
106
106
|
|
|
107
107
|
**Future-proof:** When we create `vue-firebase` stack, we can reuse:
|
|
108
108
|
- `code/typescript/` templates
|
|
109
109
|
- `infrastructure/docker/` templates
|
|
110
|
-
- `integrations/` templates (
|
|
110
|
+
- `integrations/` templates (Neon Auth, etc.)
|
|
111
111
|
|
|
112
112
|
**Only create NEW templates for Vue-specific code.**
|
|
113
113
|
|
|
@@ -147,8 +147,8 @@ Created: {{DATE}}
|
|
|
147
147
|
### Conditional Logic
|
|
148
148
|
|
|
149
149
|
```handlebars
|
|
150
|
-
{{#if (eq STACK "nextjs-
|
|
151
|
-
//
|
|
150
|
+
{{#if (eq STACK "nextjs-neon")}}
|
|
151
|
+
// Neon-specific code
|
|
152
152
|
{{else}}
|
|
153
153
|
// Generic code
|
|
154
154
|
{{/if}}
|
|
@@ -230,7 +230,7 @@ Template: dotnet-backend-service
|
|
|
230
230
|
Phase: implement
|
|
231
231
|
Required: No
|
|
232
232
|
Technology: dotnet
|
|
233
|
-
Applicable Stacks: dotnet-nextjs, nextjs-
|
|
233
|
+
Applicable Stacks: dotnet-nextjs, nextjs-neon
|
|
234
234
|
|
|
235
235
|
📝 Description
|
|
236
236
|
C# service class template with dependency injection and interface pattern
|
|
@@ -330,7 +330,7 @@ infrastructure/github/
|
|
|
330
330
|
|
|
331
331
|
### Deployment Strategy Difference
|
|
332
332
|
|
|
333
|
-
**NextJS-
|
|
333
|
+
**NextJS-Neon:** Docker containers to EasyPanel
|
|
334
334
|
- `docker build` → `docker push` → EasyPanel webhook
|
|
335
335
|
- Multi-service deployment (API + Web)
|
|
336
336
|
- Registry: GitHub Container Registry (ghcr.io)
|
|
@@ -358,7 +358,7 @@ infrastructure/github/
|
|
|
358
358
|
|
|
359
359
|
### Authentication & Secrets
|
|
360
360
|
|
|
361
|
-
**Docker Registry (NextJS-
|
|
361
|
+
**Docker Registry (NextJS-Neon):**
|
|
362
362
|
```yaml
|
|
363
363
|
# GitHub Container Registry (ghcr.io)
|
|
364
364
|
- uses: docker/login-action@v3
|
|
@@ -369,12 +369,12 @@ infrastructure/github/
|
|
|
369
369
|
```
|
|
370
370
|
|
|
371
371
|
**GitHub Secrets to Configure:**
|
|
372
|
-
- NextJS-
|
|
372
|
+
- NextJS-Neon: `GITHUB_TOKEN` (auto), `EASYPANEL_API_TOKEN`
|
|
373
373
|
|
|
374
374
|
### Stack-Specific Overrides
|
|
375
375
|
|
|
376
376
|
Stack-specific workflow templates in:
|
|
377
|
-
- `stacks/nextjs-
|
|
377
|
+
- `stacks/nextjs-neon/.morph/framework/templates/infrastructure/github/workflows/`
|
|
378
378
|
|
|
379
379
|
**Resolution Order:**
|
|
380
380
|
1. Project-local: `.morph/framework/templates/infrastructure/github/workflows/ci-build.yml.hbs`
|
|
@@ -438,7 +438,7 @@ The `REGISTRY.json` file is the **single source of truth** for all template meta
|
|
|
438
438
|
"phase": "implement",
|
|
439
439
|
"required": false,
|
|
440
440
|
"technology": "dotnet",
|
|
441
|
-
"applicableStacks": ["dotnet-nextjs", "nextjs-
|
|
441
|
+
"applicableStacks": ["dotnet-nextjs", "nextjs-neon"],
|
|
442
442
|
"engine": "handlebars",
|
|
443
443
|
"placeholders": ["FEATURE_NAME", "NAMESPACE"],
|
|
444
444
|
"outputName": "{FeatureName}Service.cs",
|
|
@@ -540,7 +540,7 @@ morph-spec template render dotnet-backend-my-template output.cs '{
|
|
|
540
540
|
| Aspect | v1 (Stack-Based) | v2 (Technology-Based) |
|
|
541
541
|
|--------|------------------|----------------------|
|
|
542
542
|
| **Location** | `stacks/{stack}/.morph/framework/templates/` | `framework/templates/{technology}/` |
|
|
543
|
-
| **Organization** | By stack (dotnet-nextjs, nextjs-
|
|
543
|
+
| **Organization** | By stack (dotnet-nextjs, nextjs-neon) | By technology (dotnet, docker) |
|
|
544
544
|
| **Duplication** | High (proposal.md × 2, decisions.md × 2) | Low (shared templates in framework) |
|
|
545
545
|
| **Template Engine** | 3 engines (custom, Handlebars, mixed) | 1 engine (Handlebars with helpers) |
|
|
546
546
|
| **Pre-computed Variables** | `{{pascalCase FEATURE_NAME}}` | `{{pascalCase FEATURE_NAME}}` (helpers) |
|
|
@@ -556,7 +556,7 @@ morph-spec template render dotnet-backend-my-template output.cs '{
|
|
|
556
556
|
- stacks/dotnet-nextjs/.morph/framework/templates/service.cs
|
|
557
557
|
+ framework/templates/code/dotnet/backend/service.cs
|
|
558
558
|
|
|
559
|
-
- stacks/nextjs-
|
|
559
|
+
- stacks/nextjs-neon/.morph/framework/templates/dockerfile-web.dockerfile
|
|
560
560
|
+ framework/templates/infrastructure/docker/dockerfile-web.dockerfile
|
|
561
561
|
```
|
|
562
562
|
|
|
@@ -640,7 +640,7 @@ morph-spec template render proposal .morph/features/user-auth/proposal.md '{
|
|
|
640
640
|
|
|
641
641
|
```handlebars
|
|
642
642
|
✅ GOOD: code/dotnet/backend/service.cs
|
|
643
|
-
Works for: dotnet-nextjs, nextjs-
|
|
643
|
+
Works for: dotnet-nextjs, nextjs-neon, future-dotnet-stack
|
|
644
644
|
|
|
645
645
|
❌ BAD: code/stack-specific/service.cs
|
|
646
646
|
Locked to one stack only
|
|
@@ -649,8 +649,8 @@ morph-spec template render proposal .morph/features/user-auth/proposal.md '{
|
|
|
649
649
|
### 3. **Use Stack Conditionals for Differences**
|
|
650
650
|
|
|
651
651
|
```handlebars
|
|
652
|
-
{{#if (eq STACK "nextjs-
|
|
653
|
-
//
|
|
652
|
+
{{#if (eq STACK "nextjs-neon")}}
|
|
653
|
+
// Neon-specific implementation
|
|
654
654
|
{{else}}
|
|
655
655
|
// Generic implementation
|
|
656
656
|
{{/if}}
|
|
@@ -661,7 +661,7 @@ morph-spec template render proposal .morph/features/user-auth/proposal.md '{
|
|
|
661
661
|
```json
|
|
662
662
|
{
|
|
663
663
|
"technology": "dotnet",
|
|
664
|
-
"applicableStacks": ["dotnet-nextjs", "nextjs-
|
|
664
|
+
"applicableStacks": ["dotnet-nextjs", "nextjs-neon"],
|
|
665
665
|
"description": "Works with any .NET backend stack"
|
|
666
666
|
}
|
|
667
667
|
```
|
|
@@ -235,7 +235,7 @@
|
|
|
235
235
|
"deprecated": false,
|
|
236
236
|
"technology": "dotnet",
|
|
237
237
|
"applicableStacks": [
|
|
238
|
-
"nextjs-
|
|
238
|
+
"nextjs-neon"
|
|
239
239
|
]
|
|
240
240
|
},
|
|
241
241
|
{
|
|
@@ -257,7 +257,7 @@
|
|
|
257
257
|
"deprecated": false,
|
|
258
258
|
"technology": "dotnet",
|
|
259
259
|
"applicableStacks": [
|
|
260
|
-
"nextjs-
|
|
260
|
+
"nextjs-neon"
|
|
261
261
|
]
|
|
262
262
|
},
|
|
263
263
|
{
|
|
@@ -279,7 +279,7 @@
|
|
|
279
279
|
"deprecated": false,
|
|
280
280
|
"technology": "dotnet",
|
|
281
281
|
"applicableStacks": [
|
|
282
|
-
"nextjs-
|
|
282
|
+
"nextjs-neon"
|
|
283
283
|
]
|
|
284
284
|
},
|
|
285
285
|
{
|
|
@@ -301,7 +301,7 @@
|
|
|
301
301
|
"deprecated": false,
|
|
302
302
|
"technology": "dotnet",
|
|
303
303
|
"applicableStacks": [
|
|
304
|
-
"nextjs-
|
|
304
|
+
"nextjs-neon"
|
|
305
305
|
]
|
|
306
306
|
},
|
|
307
307
|
{
|
|
@@ -323,7 +323,7 @@
|
|
|
323
323
|
"deprecated": false,
|
|
324
324
|
"technology": "dotnet",
|
|
325
325
|
"applicableStacks": [
|
|
326
|
-
"nextjs-
|
|
326
|
+
"nextjs-neon"
|
|
327
327
|
]
|
|
328
328
|
},
|
|
329
329
|
{
|
|
@@ -344,7 +344,7 @@
|
|
|
344
344
|
"deprecated": false,
|
|
345
345
|
"technology": "dotnet",
|
|
346
346
|
"applicableStacks": [
|
|
347
|
-
"nextjs-
|
|
347
|
+
"nextjs-neon"
|
|
348
348
|
]
|
|
349
349
|
},
|
|
350
350
|
{
|
|
@@ -386,18 +386,18 @@
|
|
|
386
386
|
"deprecated": false,
|
|
387
387
|
"technology": "typescript",
|
|
388
388
|
"applicableStacks": [
|
|
389
|
-
"nextjs-
|
|
389
|
+
"nextjs-neon"
|
|
390
390
|
]
|
|
391
391
|
},
|
|
392
392
|
{
|
|
393
|
-
"id": "sql-
|
|
394
|
-
"name": "
|
|
395
|
-
"path": "code/sql/
|
|
393
|
+
"id": "sql-postgresql-migration",
|
|
394
|
+
"name": "PostgreSQL Migration",
|
|
395
|
+
"path": "code/sql/postgresql-migration.sql",
|
|
396
396
|
"location": "framework",
|
|
397
397
|
"category": "code",
|
|
398
398
|
"phase": "implement",
|
|
399
399
|
"required": false,
|
|
400
|
-
"description": "
|
|
400
|
+
"description": "PostgreSQL migration template (basic)",
|
|
401
401
|
"outputName": "{timestamp}_{feature_name}.sql",
|
|
402
402
|
"placeholders": [
|
|
403
403
|
"FEATURE_NAME"
|
|
@@ -407,18 +407,18 @@
|
|
|
407
407
|
"deprecated": false,
|
|
408
408
|
"technology": "sql",
|
|
409
409
|
"applicableStacks": [
|
|
410
|
-
"nextjs-
|
|
410
|
+
"nextjs-neon"
|
|
411
411
|
]
|
|
412
412
|
},
|
|
413
413
|
{
|
|
414
|
-
"id": "sql-
|
|
415
|
-
"name": "
|
|
416
|
-
"path": "code/sql/
|
|
414
|
+
"id": "sql-postgresql-migration-enhanced",
|
|
415
|
+
"name": "PostgreSQL Migration (Enhanced)",
|
|
416
|
+
"path": "code/sql/postgresql-migration.template.sql",
|
|
417
417
|
"location": "framework",
|
|
418
418
|
"category": "code",
|
|
419
419
|
"phase": "implement",
|
|
420
420
|
"required": false,
|
|
421
|
-
"description": "Enhanced
|
|
421
|
+
"description": "Enhanced PostgreSQL migration with RLS and indexes",
|
|
422
422
|
"outputName": "{timestamp}_{feature_name}.sql",
|
|
423
423
|
"placeholders": [
|
|
424
424
|
"FEATURE_NAME"
|
|
@@ -428,18 +428,18 @@
|
|
|
428
428
|
"deprecated": false,
|
|
429
429
|
"technology": "sql",
|
|
430
430
|
"applicableStacks": [
|
|
431
|
-
"nextjs-
|
|
431
|
+
"nextjs-neon"
|
|
432
432
|
]
|
|
433
433
|
},
|
|
434
434
|
{
|
|
435
435
|
"id": "sql-rls-policy",
|
|
436
436
|
"name": "Row-Level Security Policy",
|
|
437
|
-
"path": "code/sql/rls-policy.sql",
|
|
437
|
+
"path": "code/sql/postgresql-rls-policy.sql",
|
|
438
438
|
"location": "framework",
|
|
439
439
|
"category": "code",
|
|
440
440
|
"phase": "implement",
|
|
441
441
|
"required": false,
|
|
442
|
-
"description": "Row-level security policy template for
|
|
442
|
+
"description": "Row-level security policy template for PostgreSQL (Neon)",
|
|
443
443
|
"outputName": "{table_name}_rls_policies.sql",
|
|
444
444
|
"placeholders": [
|
|
445
445
|
"FEATURE_NAME",
|
|
@@ -450,7 +450,7 @@
|
|
|
450
450
|
"deprecated": false,
|
|
451
451
|
"technology": "sql",
|
|
452
452
|
"applicableStacks": [
|
|
453
|
-
"nextjs-
|
|
453
|
+
"nextjs-neon"
|
|
454
454
|
]
|
|
455
455
|
},
|
|
456
456
|
{
|
|
@@ -469,7 +469,7 @@
|
|
|
469
469
|
"deprecated": false,
|
|
470
470
|
"technology": "docker",
|
|
471
471
|
"applicableStacks": [
|
|
472
|
-
"nextjs-
|
|
472
|
+
"nextjs-neon"
|
|
473
473
|
]
|
|
474
474
|
},
|
|
475
475
|
{
|
|
@@ -488,7 +488,7 @@
|
|
|
488
488
|
"deprecated": false,
|
|
489
489
|
"technology": "docker",
|
|
490
490
|
"applicableStacks": [
|
|
491
|
-
"nextjs-
|
|
491
|
+
"nextjs-neon"
|
|
492
492
|
]
|
|
493
493
|
},
|
|
494
494
|
{
|
|
@@ -509,7 +509,7 @@
|
|
|
509
509
|
"deprecated": false,
|
|
510
510
|
"technology": "docker",
|
|
511
511
|
"applicableStacks": [
|
|
512
|
-
"nextjs-
|
|
512
|
+
"nextjs-neon"
|
|
513
513
|
]
|
|
514
514
|
},
|
|
515
515
|
{
|
|
@@ -530,7 +530,7 @@
|
|
|
530
530
|
"deprecated": false,
|
|
531
531
|
"technology": "docker",
|
|
532
532
|
"applicableStacks": [
|
|
533
|
-
"nextjs-
|
|
533
|
+
"nextjs-neon"
|
|
534
534
|
]
|
|
535
535
|
},
|
|
536
536
|
{
|
|
@@ -551,7 +551,7 @@
|
|
|
551
551
|
"deprecated": false,
|
|
552
552
|
"technology": "docker",
|
|
553
553
|
"applicableStacks": [
|
|
554
|
-
"nextjs-
|
|
554
|
+
"nextjs-neon"
|
|
555
555
|
]
|
|
556
556
|
},
|
|
557
557
|
{
|
|
@@ -572,7 +572,7 @@
|
|
|
572
572
|
"deprecated": false,
|
|
573
573
|
"technology": "dotnet",
|
|
574
574
|
"applicableStacks": [
|
|
575
|
-
"nextjs-
|
|
575
|
+
"nextjs-neon"
|
|
576
576
|
]
|
|
577
577
|
},
|
|
578
578
|
{
|
|
@@ -593,19 +593,19 @@
|
|
|
593
593
|
"deprecated": false,
|
|
594
594
|
"technology": "dotnet",
|
|
595
595
|
"applicableStacks": [
|
|
596
|
-
"nextjs-
|
|
596
|
+
"nextjs-neon"
|
|
597
597
|
]
|
|
598
598
|
},
|
|
599
599
|
{
|
|
600
|
-
"id": "integration-
|
|
601
|
-
"name": "
|
|
602
|
-
"path": "integrations/
|
|
600
|
+
"id": "integration-neon-auth",
|
|
601
|
+
"name": "Neon Auth Configuration",
|
|
602
|
+
"path": "integrations/neon-auth-config.cs",
|
|
603
603
|
"location": "framework",
|
|
604
604
|
"category": "integration",
|
|
605
605
|
"phase": "implement",
|
|
606
606
|
"required": false,
|
|
607
|
-
"description": "
|
|
608
|
-
"outputName": "
|
|
607
|
+
"description": "Neon Auth (Better Auth) authentication configuration for .NET",
|
|
608
|
+
"outputName": "NeonAuthConfig.cs",
|
|
609
609
|
"placeholders": [
|
|
610
610
|
"NAMESPACE"
|
|
611
611
|
],
|
|
@@ -614,7 +614,7 @@
|
|
|
614
614
|
"deprecated": false,
|
|
615
615
|
"technology": "dotnet",
|
|
616
616
|
"applicableStacks": [
|
|
617
|
-
"nextjs-
|
|
617
|
+
"nextjs-neon"
|
|
618
618
|
]
|
|
619
619
|
},
|
|
620
620
|
{
|
|
@@ -635,7 +635,7 @@
|
|
|
635
635
|
"deprecated": false,
|
|
636
636
|
"technology": "css",
|
|
637
637
|
"applicableStacks": [
|
|
638
|
-
"nextjs-
|
|
638
|
+
"nextjs-neon"
|
|
639
639
|
]
|
|
640
640
|
},
|
|
641
641
|
{
|
|
@@ -732,7 +732,7 @@
|
|
|
732
732
|
],
|
|
733
733
|
"stackSpecific": false,
|
|
734
734
|
"applicableStacks": [
|
|
735
|
-
"nextjs-
|
|
735
|
+
"nextjs-neon"
|
|
736
736
|
],
|
|
737
737
|
"engine": "handlebars",
|
|
738
738
|
"deprecated": false,
|
|
@@ -752,7 +752,7 @@
|
|
|
752
752
|
"placeholders": [],
|
|
753
753
|
"stackSpecific": false,
|
|
754
754
|
"applicableStacks": [
|
|
755
|
-
"nextjs-
|
|
755
|
+
"nextjs-neon"
|
|
756
756
|
],
|
|
757
757
|
"engine": "handlebars",
|
|
758
758
|
"deprecated": false,
|
|
@@ -772,7 +772,7 @@
|
|
|
772
772
|
"placeholders": [],
|
|
773
773
|
"stackSpecific": false,
|
|
774
774
|
"applicableStacks": [
|
|
775
|
-
"nextjs-
|
|
775
|
+
"nextjs-neon"
|
|
776
776
|
],
|
|
777
777
|
"engine": "handlebars",
|
|
778
778
|
"deprecated": false,
|
|
@@ -792,7 +792,7 @@
|
|
|
792
792
|
"placeholders": [],
|
|
793
793
|
"stackSpecific": false,
|
|
794
794
|
"applicableStacks": [
|
|
795
|
-
"nextjs-
|
|
795
|
+
"nextjs-neon"
|
|
796
796
|
],
|
|
797
797
|
"engine": "handlebars",
|
|
798
798
|
"deprecated": false,
|
|
@@ -812,29 +812,29 @@
|
|
|
812
812
|
"placeholders": [],
|
|
813
813
|
"stackSpecific": false,
|
|
814
814
|
"applicableStacks": [
|
|
815
|
-
"nextjs-
|
|
815
|
+
"nextjs-neon"
|
|
816
816
|
],
|
|
817
817
|
"engine": "handlebars",
|
|
818
818
|
"deprecated": false,
|
|
819
819
|
"isFragment": true
|
|
820
820
|
},
|
|
821
821
|
{
|
|
822
|
-
"id": "nextjs-
|
|
823
|
-
"name": "NextJS-
|
|
822
|
+
"id": "nextjs-neon-ci-build",
|
|
823
|
+
"name": "NextJS-Neon CI Build Workflow",
|
|
824
824
|
"path": "infrastructure/github/workflows/ci-build.yml.hbs",
|
|
825
|
-
"location": "stack/nextjs-
|
|
825
|
+
"location": "stack/nextjs-neon",
|
|
826
826
|
"category": "infrastructure",
|
|
827
827
|
"technology": "github-actions",
|
|
828
828
|
"phase": "build",
|
|
829
829
|
"required": true,
|
|
830
|
-
"description": "CI build workflow for NextJS-
|
|
830
|
+
"description": "CI build workflow for NextJS-Neon stack (Node.js + .NET combined)",
|
|
831
831
|
"outputName": "ci-build.yml",
|
|
832
832
|
"placeholders": [
|
|
833
833
|
"DOTNET_VERSION"
|
|
834
834
|
],
|
|
835
835
|
"stackSpecific": true,
|
|
836
836
|
"applicableStacks": [
|
|
837
|
-
"nextjs-
|
|
837
|
+
"nextjs-neon"
|
|
838
838
|
],
|
|
839
839
|
"engine": "handlebars",
|
|
840
840
|
"deprecated": false
|
|
@@ -892,7 +892,7 @@
|
|
|
892
892
|
"deprecated": false,
|
|
893
893
|
"hopType": "squad-leader",
|
|
894
894
|
"applicableStacks": [
|
|
895
|
-
"nextjs-
|
|
895
|
+
"nextjs-neon"
|
|
896
896
|
]
|
|
897
897
|
},
|
|
898
898
|
{
|
|
@@ -923,7 +923,7 @@
|
|
|
923
923
|
"deprecated": false,
|
|
924
924
|
"hopType": "squad-leader",
|
|
925
925
|
"applicableStacks": [
|
|
926
|
-
"nextjs-
|
|
926
|
+
"nextjs-neon"
|
|
927
927
|
]
|
|
928
928
|
},
|
|
929
929
|
{
|
|
@@ -1227,60 +1227,13 @@
|
|
|
1227
1227
|
"category": "feature",
|
|
1228
1228
|
"stack": "dotnet",
|
|
1229
1229
|
"description": "VSA feature entity"
|
|
1230
|
+
},
|
|
1231
|
+
{
|
|
1232
|
+
"id": "gsap-scroll-section",
|
|
1233
|
+
"path": "frontend/nextjs/gsap-scroll-section.tsx.hbs",
|
|
1234
|
+
"category": "ui",
|
|
1235
|
+
"stack": "nextjs",
|
|
1236
|
+
"description": "Scroll-animated section using GSAP ScrollTrigger with useGSAP hook and reduced-motion check"
|
|
1230
1237
|
}
|
|
1231
|
-
]
|
|
1232
|
-
"stats": {
|
|
1233
|
-
"total": 68,
|
|
1234
|
-
"framework": 59,
|
|
1235
|
-
"deprecated": 0,
|
|
1236
|
-
"byCategory": {
|
|
1237
|
-
"documentation": 4,
|
|
1238
|
-
"code": 24,
|
|
1239
|
-
"infrastructure": 18,
|
|
1240
|
-
"context": 3,
|
|
1241
|
-
"examples": 2,
|
|
1242
|
-
"integration": 4,
|
|
1243
|
-
"saas": 2,
|
|
1244
|
-
"ui": 3,
|
|
1245
|
-
"meta-prompts": 12
|
|
1246
|
-
},
|
|
1247
|
-
"byTechnology": {
|
|
1248
|
-
"dotnet": 26,
|
|
1249
|
-
"typescript": 1,
|
|
1250
|
-
"sql": 3,
|
|
1251
|
-
"docker": 5,
|
|
1252
|
-
"handlebars": 22,
|
|
1253
|
-
"css": 1,
|
|
1254
|
-
"github-actions": 9
|
|
1255
|
-
},
|
|
1256
|
-
"byPhase": {
|
|
1257
|
-
"proposal": 1,
|
|
1258
|
-
"uiux": 6,
|
|
1259
|
-
"design": 10,
|
|
1260
|
-
"tasks": 1,
|
|
1261
|
-
"implement": 34,
|
|
1262
|
-
"completed": 1,
|
|
1263
|
-
"build": 3,
|
|
1264
|
-
"deploy": 4
|
|
1265
|
-
},
|
|
1266
|
-
"required": 5,
|
|
1267
|
-
"optional": 63,
|
|
1268
|
-
"applicableToMultipleStacks": 42
|
|
1269
|
-
},
|
|
1270
|
-
"migrationNotes": {
|
|
1271
|
-
"v1ToV2": {
|
|
1272
|
-
"breaking": true,
|
|
1273
|
-
"pathChanges": "All templates moved from stacks/{stack}/.morph/templates/ to framework/templates/ organized by technology",
|
|
1274
|
-
"organizationChange": "Stack-based → Technology-based (enables future stack reusability)",
|
|
1275
|
-
"deprecated": 9,
|
|
1276
|
-
"movedToFramework": 57,
|
|
1277
|
-
"newTechnologies": [
|
|
1278
|
-
"dotnet",
|
|
1279
|
-
"typescript",
|
|
1280
|
-
"sql",
|
|
1281
|
-
"docker"
|
|
1282
|
-
],
|
|
1283
|
-
"actionRequired": "Delete stacks/{stack}/.morph/templates/ directories (Phase 6)"
|
|
1284
|
-
}
|
|
1285
|
-
}
|
|
1238
|
+
]
|
|
1286
1239
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
namespace {{pascalCase PROJECT_NAME}}.Abstractions
|
|
2
|
-
{
|
|
3
|
-
public interface IApiEndpoint
|
|
4
|
-
{
|
|
5
|
-
void MapEndpoint(
|
|
6
|
-
}
|
|
7
|
-
}
|
|
1
|
+
namespace {{pascalCase PROJECT_NAME}}.Abstractions
|
|
2
|
+
{
|
|
3
|
+
public interface IApiEndpoint
|
|
4
|
+
{
|
|
5
|
+
void MapEndpoint(IEndpointRouteBuilder app);
|
|
6
|
+
}
|
|
7
|
+
}
|