@polymorphism-tech/morph-spec 2.4.0 → 3.0.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 +158 -26
- package/LICENSE +72 -72
- package/bin/detect-agents.js +225 -225
- package/bin/morph-spec.js +8 -0
- package/bin/render-template.js +302 -302
- package/bin/semantic-detect-agents.js +246 -246
- package/bin/validate-agents-skills.js +251 -251
- package/bin/validate-agents.js +69 -69
- package/bin/validate-phase.js +263 -263
- package/content/.azure/README.md +293 -293
- package/content/.azure/docs/azure-devops-setup.md +454 -454
- package/content/.azure/docs/branch-strategy.md +398 -398
- package/content/.azure/docs/local-development.md +515 -515
- package/content/.azure/pipelines/pipeline-variables.yml +34 -34
- package/content/.azure/pipelines/prod-pipeline.yml +319 -319
- package/content/.azure/pipelines/staging-pipeline.yml +234 -234
- package/content/.azure/pipelines/templates/build-dotnet.yml +75 -75
- package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -94
- package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -120
- package/content/.azure/pipelines/templates/infra-deploy.yml +90 -90
- package/content/.claude/commands/morph-archive.md +79 -79
- package/content/.claude/commands/morph-deploy.md +529 -0
- package/content/.claude/commands/morph-infra.md +209 -209
- package/content/.claude/commands/morph-preflight.md +227 -227
- package/content/.claude/commands/morph-troubleshoot.md +122 -122
- package/content/.claude/settings.local.json +15 -15
- package/content/.claude/skills/infra/azure-deploy-specialist.md +699 -0
- package/content/.claude/skills/level-0-meta/README.md +7 -0
- package/content/.claude/skills/{checklists → level-0-meta}/morph-checklist.md +117 -117
- package/content/.claude/skills/level-1-workflows/README.md +7 -0
- package/content/.claude/skills/{workflows → level-1-workflows}/morph-replicate.md +213 -213
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-clarify.md +131 -131
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-design.md +213 -205
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-setup.md +106 -92
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-tasks.md +164 -164
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-uiux.md +169 -138
- package/content/.claude/skills/level-2-domains/README.md +14 -0
- package/content/.claude/skills/{specialists → level-2-domains/quality}/testing-specialist.md +126 -126
- package/content/.claude/skills/level-3-technologies/README.md +7 -0
- package/content/.claude/skills/level-4-patterns/README.md +7 -0
- package/content/.claude/skills/specialists/prompt-engineer.md +189 -0
- package/content/.claude/skills/specialists/seo-growth-hacker.md +320 -0
- package/content/.morph/.morphversion +5 -5
- package/content/.morph/archive/.gitkeep +25 -25
- package/content/.morph/config/agents.json +742 -358
- package/content/.morph/config/config.template.json +33 -0
- package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
- package/content/.morph/docs/workflows/enforcement-pipeline.md +668 -0
- package/content/.morph/examples/api-nextjs/README.md +241 -241
- package/content/.morph/examples/api-nextjs/contracts.ts +307 -307
- package/content/.morph/examples/api-nextjs/spec.md +399 -399
- package/content/.morph/examples/api-nextjs/tasks.md +168 -168
- package/content/.morph/examples/micro-saas/README.md +125 -125
- package/content/.morph/examples/micro-saas/contracts.cs +358 -358
- package/content/.morph/examples/micro-saas/decisions.md +246 -246
- package/content/.morph/examples/micro-saas/spec.md +236 -236
- package/content/.morph/examples/micro-saas/tasks.md +150 -150
- package/content/.morph/examples/multi-agent/README.md +309 -309
- package/content/.morph/examples/multi-agent/contracts.cs +433 -433
- package/content/.morph/examples/multi-agent/spec.md +479 -479
- package/content/.morph/examples/multi-agent/tasks.md +185 -185
- package/content/.morph/examples/scheduled-reports/decisions.md +158 -158
- package/content/.morph/examples/scheduled-reports/proposal.md +95 -95
- package/content/.morph/examples/scheduled-reports/spec.md +267 -267
- package/content/.morph/examples/state-v3.json +188 -188
- package/content/.morph/features/.gitkeep +25 -25
- package/content/.morph/hooks/README.md +158 -0
- package/content/.morph/hooks/pre-commit-all.sh +48 -48
- package/content/.morph/hooks/pre-commit-specs.sh +49 -49
- package/content/.morph/hooks/pre-commit-tests.sh +60 -60
- package/content/.morph/hooks/task-completed.js +73 -0
- package/content/.morph/hooks/teammate-idle.js +68 -0
- package/content/.morph/project.md +160 -160
- package/content/.morph/schemas/agent.schema.json +296 -296
- package/content/.morph/schemas/tasks.schema.json +220 -220
- package/content/.morph/specs/.gitkeep +20 -20
- package/content/.morph/standards/agent-teams-workflow.md +474 -0
- package/content/.morph/standards/coding.md +377 -377
- package/content/.morph/standards/fluent-ui-setup.md +590 -590
- package/content/.morph/standards/migration-guide.md +514 -514
- package/content/.morph/standards/passkeys-auth.md +423 -423
- package/content/.morph/standards/vector-search-rag.md +536 -536
- package/content/.morph/state.json +17 -17
- package/content/.morph/templates/CONTEXT-FEATURE.md +276 -0
- package/content/.morph/templates/CONTEXT.md +170 -0
- package/content/.morph/templates/FluentDesignTheme.cs +149 -149
- package/content/.morph/templates/MudTheme.cs +281 -281
- package/content/.morph/templates/clarify-questions.md +159 -159
- package/content/.morph/templates/component.razor +239 -239
- package/content/.morph/templates/contracts/Commands.cs +74 -74
- package/content/.morph/templates/contracts/Entities.cs +25 -25
- package/content/.morph/templates/contracts/Queries.cs +74 -74
- package/content/.morph/templates/contracts/README.md +74 -74
- package/content/.morph/templates/contracts.cs +217 -217
- package/content/.morph/templates/design-system.css +226 -226
- package/content/.morph/templates/infra/.dockerignore.example +89 -89
- package/content/.morph/templates/infra/Dockerfile.example +82 -82
- package/content/.morph/templates/infra/README.md +286 -286
- package/content/.morph/templates/infra/app-insights.bicep +63 -63
- package/content/.morph/templates/infra/app-service.bicep +164 -164
- package/content/.morph/templates/infra/azure-pipelines-deploy.yml +480 -0
- package/content/.morph/templates/infra/container-app-env.bicep +49 -49
- package/content/.morph/templates/infra/container-app.bicep +156 -156
- package/content/.morph/templates/infra/deploy-checklist.md +426 -426
- package/content/.morph/templates/infra/deploy.ps1 +229 -229
- package/content/.morph/templates/infra/deploy.sh +208 -208
- package/content/.morph/templates/infra/key-vault.bicep +91 -91
- package/content/.morph/templates/infra/main.bicep +189 -189
- package/content/.morph/templates/infra/parameters.dev.json +29 -29
- package/content/.morph/templates/infra/parameters.prod.json +29 -29
- package/content/.morph/templates/infra/parameters.staging.json +29 -29
- package/content/.morph/templates/infra/sql-database.bicep +103 -103
- package/content/.morph/templates/infra/storage.bicep +106 -106
- package/content/.morph/templates/integrations/asaas-client.cs +387 -387
- package/content/.morph/templates/integrations/asaas-webhook.cs +351 -351
- package/content/.morph/templates/integrations/azure-identity-config.cs +288 -288
- package/content/.morph/templates/integrations/clerk-config.cs +258 -258
- package/content/.morph/templates/job.cs +171 -171
- package/content/.morph/templates/migration.cs +83 -83
- package/content/.morph/templates/repository.cs +141 -141
- package/content/.morph/templates/saas/subscription.cs +347 -347
- package/content/.morph/templates/saas/tenant.cs +338 -338
- package/content/.morph/templates/service.cs +139 -139
- package/content/.morph/templates/sprint-status.yaml +68 -68
- package/content/.morph/templates/story.md +143 -143
- package/content/.morph/templates/test.cs +239 -239
- package/content/.morph/templates/ui-design-system.md +286 -286
- package/content/.morph/templates/ui-flows.md +336 -336
- package/content/.morph/templates/ui-mockups.md +133 -133
- package/content/.morph/test-infra/example.bicep +59 -59
- package/content/README.md +79 -79
- package/detectors/config-detector.js +223 -223
- package/detectors/conversation-analyzer.js +163 -163
- package/detectors/index.js +84 -84
- package/detectors/standards-generator.js +275 -275
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
- package/docs/api/scripts/collapse.js +38 -38
- package/docs/api/scripts/commonNav.js +28 -28
- package/docs/api/scripts/linenumber.js +25 -25
- package/docs/api/scripts/nav.js +12 -12
- package/docs/api/scripts/polyfill.js +3 -3
- package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
- package/docs/api/scripts/prettify/lang-css.js +2 -2
- package/docs/api/scripts/prettify/prettify.js +28 -28
- package/docs/api/scripts/search.js +98 -98
- package/docs/api/styles/jsdoc.css +776 -776
- package/docs/api/styles/prettify.css +80 -80
- package/docs/examples.md +328 -328
- package/docs/templates.md +418 -418
- package/package.json +1 -1
- package/scripts/postinstall.js +132 -132
- package/src/commands/advance-phase.js +83 -0
- package/src/commands/analyze-blazor-concurrency.js +193 -193
- package/src/commands/create-story.js +351 -351
- package/src/commands/deploy.js +780 -0
- package/src/commands/detect-agents.js +34 -6
- package/src/commands/detect.js +104 -104
- package/src/commands/generate-context.js +40 -0
- package/src/commands/generate.js +149 -149
- package/src/commands/lint-fluent.js +352 -352
- package/src/commands/rollback-phase.js +185 -185
- package/src/commands/session-summary.js +291 -291
- package/src/commands/shard-spec.js +224 -224
- package/src/commands/sprint-status.js +250 -250
- package/src/commands/state.js +333 -333
- package/src/commands/sync.js +167 -167
- package/src/commands/troubleshoot.js +222 -222
- package/src/commands/validate-blazor-state.js +210 -210
- package/src/commands/validate-blazor.js +156 -156
- package/src/commands/validate-css.js +84 -84
- package/src/commands/validate-phase.js +221 -221
- package/src/lib/blazor-concurrency-analyzer.js +288 -288
- package/src/lib/blazor-state-validator.js +291 -291
- package/src/lib/blazor-validator.js +374 -374
- package/src/lib/context-generator.js +513 -0
- package/src/lib/css-validator.js +352 -352
- package/src/lib/design-system-detector.js +187 -0
- package/src/lib/design-system-generator.js +298 -298
- package/src/lib/design-system-scaffolder.js +299 -0
- package/src/lib/hook-executor.js +256 -0
- package/src/lib/learning-system.js +520 -520
- package/src/lib/mockup-generator.js +366 -366
- package/src/lib/spec-validator.js +258 -0
- package/src/lib/standards-context-injector.js +287 -0
- package/src/lib/team-orchestrator.js +322 -0
- package/src/lib/troubleshoot-grep.js +194 -194
- package/src/lib/troubleshoot-index.js +144 -144
- package/src/lib/ui-detector.js +350 -350
- package/src/lib/validation-runner.js +65 -13
- package/src/lib/validators/architecture-validator.js +387 -387
- package/src/lib/validators/design-system-validator.js +231 -0
- package/src/lib/validators/package-validator.js +360 -360
- package/src/lib/validators/ui-contrast-validator.js +422 -422
- package/src/utils/file-copier.js +9 -1
- package/src/utils/logger.js +32 -32
- package/src/utils/version-checker.js +175 -175
- /package/content/.claude/skills/{checklists → level-0-meta}/code-review.md +0 -0
- /package/content/.claude/skills/{checklists → level-0-meta}/simulation-checklist.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/ai-agents}/ai-system-architect.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/architecture}/po-pm-advisor.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/architecture}/standards-architect.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/dotnet-senior.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/ef-modeler.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/hangfire-orchestrator.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/ms-agent-expert.md +0 -0
- /package/content/.claude/skills/{stacks/dotnet-blazor.md → level-2-domains/frontend/blazor-builder.md} +0 -0
- /package/content/.claude/skills/{stacks/dotnet-nextjs.md → level-2-domains/frontend/nextjs-expert.md} +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/frontend}/ui-ux-designer.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/infrastructure}/azure-architect.md +0 -0
- /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/bicep-architect.md +0 -0
- /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/container-specialist.md +0 -0
- /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/devops-engineer.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/asaas-financial.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/azure-identity.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/clerk-auth.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/resend-email.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/quality}/code-analyzer.md +0 -0
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
// ============================================================================
|
|
2
|
-
// {{FEATURE_NAME_TITLE}} - Entity Interfaces
|
|
3
|
-
// Generated by MORPH-SPEC Framework
|
|
4
|
-
// ============================================================================
|
|
5
|
-
|
|
6
|
-
namespace {{NAMESPACE}}.Domain.Entities;
|
|
7
|
-
|
|
8
|
-
/// <summary>
|
|
9
|
-
/// Base interface for {{FEATURE_NAME_TITLE}} entity
|
|
10
|
-
/// </summary>
|
|
11
|
-
public interface I{{FEATURE_NAME_PASCAL}}Entity
|
|
12
|
-
{
|
|
13
|
-
int Id { get; }
|
|
14
|
-
DateTime CreatedAt { get; }
|
|
15
|
-
DateTime? UpdatedAt { get; }
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// TODO: Add specific entity interfaces below
|
|
19
|
-
// Example:
|
|
20
|
-
// public interface IScheduledReport : I{{FEATURE_NAME_PASCAL}}Entity
|
|
21
|
-
// {
|
|
22
|
-
// string Name { get; }
|
|
23
|
-
// ReportType Type { get; }
|
|
24
|
-
// string CronExpression { get; }
|
|
25
|
-
// }
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// {{FEATURE_NAME_TITLE}} - Entity Interfaces
|
|
3
|
+
// Generated by MORPH-SPEC Framework
|
|
4
|
+
// ============================================================================
|
|
5
|
+
|
|
6
|
+
namespace {{NAMESPACE}}.Domain.Entities;
|
|
7
|
+
|
|
8
|
+
/// <summary>
|
|
9
|
+
/// Base interface for {{FEATURE_NAME_TITLE}} entity
|
|
10
|
+
/// </summary>
|
|
11
|
+
public interface I{{FEATURE_NAME_PASCAL}}Entity
|
|
12
|
+
{
|
|
13
|
+
int Id { get; }
|
|
14
|
+
DateTime CreatedAt { get; }
|
|
15
|
+
DateTime? UpdatedAt { get; }
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// TODO: Add specific entity interfaces below
|
|
19
|
+
// Example:
|
|
20
|
+
// public interface IScheduledReport : I{{FEATURE_NAME_PASCAL}}Entity
|
|
21
|
+
// {
|
|
22
|
+
// string Name { get; }
|
|
23
|
+
// ReportType Type { get; }
|
|
24
|
+
// string CronExpression { get; }
|
|
25
|
+
// }
|
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
// ============================================================================
|
|
2
|
-
// {{FEATURE_NAME_TITLE}} - Queries (CQRS)
|
|
3
|
-
// Generated by MORPH-SPEC Framework
|
|
4
|
-
// ============================================================================
|
|
5
|
-
|
|
6
|
-
using MediatR;
|
|
7
|
-
|
|
8
|
-
namespace {{NAMESPACE}}.Application.Features.{{FEATURE_NAME_PASCAL}}.Queries;
|
|
9
|
-
|
|
10
|
-
// ============================================================================
|
|
11
|
-
// Get By Id Query
|
|
12
|
-
// ============================================================================
|
|
13
|
-
|
|
14
|
-
/// <summary>
|
|
15
|
-
/// Query to get a {{FEATURE_NAME_TITLE}} by ID
|
|
16
|
-
/// </summary>
|
|
17
|
-
public record Get{{FEATURE_NAME_PASCAL}}ByIdQuery : IRequest<{{FEATURE_NAME_PASCAL}}Dto?>
|
|
18
|
-
{
|
|
19
|
-
public required int Id { get; init; }
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// ============================================================================
|
|
23
|
-
// Get All Query (with pagination)
|
|
24
|
-
// ============================================================================
|
|
25
|
-
|
|
26
|
-
/// <summary>
|
|
27
|
-
/// Query to get all {{FEATURE_NAME_TITLE}} with pagination
|
|
28
|
-
/// </summary>
|
|
29
|
-
public record Get{{FEATURE_NAME_PASCAL}}ListQuery : IRequest<{{FEATURE_NAME_PASCAL}}ListResult>
|
|
30
|
-
{
|
|
31
|
-
public int Page { get; init; } = 1;
|
|
32
|
-
public int PageSize { get; init; } = 10;
|
|
33
|
-
public string? SearchTerm { get; init; }
|
|
34
|
-
public string? SortBy { get; init; }
|
|
35
|
-
public bool SortDescending { get; init; }
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
public record {{FEATURE_NAME_PASCAL}}ListResult
|
|
39
|
-
{
|
|
40
|
-
public required IReadOnlyList<{{FEATURE_NAME_PASCAL}}Dto> Items { get; init; }
|
|
41
|
-
public int TotalCount { get; init; }
|
|
42
|
-
public int Page { get; init; }
|
|
43
|
-
public int PageSize { get; init; }
|
|
44
|
-
public int TotalPages => (int)Math.Ceiling(TotalCount / (double)PageSize);
|
|
45
|
-
public bool HasNextPage => Page < TotalPages;
|
|
46
|
-
public bool HasPreviousPage => Page > 1;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// ============================================================================
|
|
50
|
-
// DTOs
|
|
51
|
-
// ============================================================================
|
|
52
|
-
|
|
53
|
-
/// <summary>
|
|
54
|
-
/// DTO for {{FEATURE_NAME_TITLE}}
|
|
55
|
-
/// </summary>
|
|
56
|
-
public record {{FEATURE_NAME_PASCAL}}Dto
|
|
57
|
-
{
|
|
58
|
-
public int Id { get; init; }
|
|
59
|
-
public DateTime CreatedAt { get; init; }
|
|
60
|
-
public DateTime? UpdatedAt { get; init; }
|
|
61
|
-
|
|
62
|
-
// TODO: Add mapped properties from entity
|
|
63
|
-
// public string Name { get; init; } = string.Empty;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/// <summary>
|
|
67
|
-
/// Summary DTO for lists (less data)
|
|
68
|
-
/// </summary>
|
|
69
|
-
public record {{FEATURE_NAME_PASCAL}}SummaryDto
|
|
70
|
-
{
|
|
71
|
-
public int Id { get; init; }
|
|
72
|
-
// TODO: Add only essential properties for list display
|
|
73
|
-
// public string Name { get; init; } = string.Empty;
|
|
74
|
-
}
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// {{FEATURE_NAME_TITLE}} - Queries (CQRS)
|
|
3
|
+
// Generated by MORPH-SPEC Framework
|
|
4
|
+
// ============================================================================
|
|
5
|
+
|
|
6
|
+
using MediatR;
|
|
7
|
+
|
|
8
|
+
namespace {{NAMESPACE}}.Application.Features.{{FEATURE_NAME_PASCAL}}.Queries;
|
|
9
|
+
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Get By Id Query
|
|
12
|
+
// ============================================================================
|
|
13
|
+
|
|
14
|
+
/// <summary>
|
|
15
|
+
/// Query to get a {{FEATURE_NAME_TITLE}} by ID
|
|
16
|
+
/// </summary>
|
|
17
|
+
public record Get{{FEATURE_NAME_PASCAL}}ByIdQuery : IRequest<{{FEATURE_NAME_PASCAL}}Dto?>
|
|
18
|
+
{
|
|
19
|
+
public required int Id { get; init; }
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Get All Query (with pagination)
|
|
24
|
+
// ============================================================================
|
|
25
|
+
|
|
26
|
+
/// <summary>
|
|
27
|
+
/// Query to get all {{FEATURE_NAME_TITLE}} with pagination
|
|
28
|
+
/// </summary>
|
|
29
|
+
public record Get{{FEATURE_NAME_PASCAL}}ListQuery : IRequest<{{FEATURE_NAME_PASCAL}}ListResult>
|
|
30
|
+
{
|
|
31
|
+
public int Page { get; init; } = 1;
|
|
32
|
+
public int PageSize { get; init; } = 10;
|
|
33
|
+
public string? SearchTerm { get; init; }
|
|
34
|
+
public string? SortBy { get; init; }
|
|
35
|
+
public bool SortDescending { get; init; }
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public record {{FEATURE_NAME_PASCAL}}ListResult
|
|
39
|
+
{
|
|
40
|
+
public required IReadOnlyList<{{FEATURE_NAME_PASCAL}}Dto> Items { get; init; }
|
|
41
|
+
public int TotalCount { get; init; }
|
|
42
|
+
public int Page { get; init; }
|
|
43
|
+
public int PageSize { get; init; }
|
|
44
|
+
public int TotalPages => (int)Math.Ceiling(TotalCount / (double)PageSize);
|
|
45
|
+
public bool HasNextPage => Page < TotalPages;
|
|
46
|
+
public bool HasPreviousPage => Page > 1;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// DTOs
|
|
51
|
+
// ============================================================================
|
|
52
|
+
|
|
53
|
+
/// <summary>
|
|
54
|
+
/// DTO for {{FEATURE_NAME_TITLE}}
|
|
55
|
+
/// </summary>
|
|
56
|
+
public record {{FEATURE_NAME_PASCAL}}Dto
|
|
57
|
+
{
|
|
58
|
+
public int Id { get; init; }
|
|
59
|
+
public DateTime CreatedAt { get; init; }
|
|
60
|
+
public DateTime? UpdatedAt { get; init; }
|
|
61
|
+
|
|
62
|
+
// TODO: Add mapped properties from entity
|
|
63
|
+
// public string Name { get; init; } = string.Empty;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/// <summary>
|
|
67
|
+
/// Summary DTO for lists (less data)
|
|
68
|
+
/// </summary>
|
|
69
|
+
public record {{FEATURE_NAME_PASCAL}}SummaryDto
|
|
70
|
+
{
|
|
71
|
+
public int Id { get; init; }
|
|
72
|
+
// TODO: Add only essential properties for list display
|
|
73
|
+
// public string Name { get; init; } = string.Empty;
|
|
74
|
+
}
|
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
# Contracts - {{FEATURE_NAME_TITLE}}
|
|
2
|
-
|
|
3
|
-
> Estrutura de contracts para features complexas
|
|
4
|
-
|
|
5
|
-
## Estrutura
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
contracts/
|
|
9
|
-
├── README.md # Este arquivo (índice)
|
|
10
|
-
├── Entities/ # Entidades de domínio
|
|
11
|
-
│ └── I{{FEATURE_NAME_PASCAL}}Entity.cs
|
|
12
|
-
├── Commands/ # Commands (CQRS)
|
|
13
|
-
│ └── I{{FEATURE_NAME_PASCAL}}Commands.cs
|
|
14
|
-
├── Queries/ # Queries (CQRS)
|
|
15
|
-
│ └── I{{FEATURE_NAME_PASCAL}}Queries.cs
|
|
16
|
-
├── DTOs/ # Data Transfer Objects
|
|
17
|
-
│ └── {{FEATURE_NAME_PASCAL}}Dto.cs
|
|
18
|
-
├── Events/ # Domain Events
|
|
19
|
-
│ └── {{FEATURE_NAME_PASCAL}}Events.cs
|
|
20
|
-
└── Services/ # Service Interfaces
|
|
21
|
-
└── I{{FEATURE_NAME_PASCAL}}Service.cs
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Quando usar pasta vs arquivo único
|
|
25
|
-
|
|
26
|
-
| Cenário | Usar |
|
|
27
|
-
|---------|------|
|
|
28
|
-
| < 5 interfaces/DTOs | `contracts.cs` (arquivo único) |
|
|
29
|
-
| 5-15 interfaces/DTOs | `contracts/` (pasta organizada) |
|
|
30
|
-
| > 15 interfaces/DTOs | `contracts/` + subpastas por domínio |
|
|
31
|
-
|
|
32
|
-
## Convenções
|
|
33
|
-
|
|
34
|
-
1. **Prefixo `I`** para interfaces: `IOrderService`, `IPaymentGateway`
|
|
35
|
-
2. **Sufixo `Dto`** para DTOs: `OrderDto`, `OrderCreateDto`
|
|
36
|
-
3. **Sufixo `Command`** para commands: `CreateOrderCommand`
|
|
37
|
-
4. **Sufixo `Query`** para queries: `GetOrderByIdQuery`
|
|
38
|
-
5. **Sufixo `Event`** para eventos: `OrderCreatedEvent`
|
|
39
|
-
|
|
40
|
-
## Índice de Contracts
|
|
41
|
-
|
|
42
|
-
### Entidades
|
|
43
|
-
|
|
44
|
-
| Interface | Descrição | Arquivo |
|
|
45
|
-
|-----------|-----------|---------|
|
|
46
|
-
| _A ser preenchido_ | | |
|
|
47
|
-
|
|
48
|
-
### Commands
|
|
49
|
-
|
|
50
|
-
| Command | Handler | Descrição |
|
|
51
|
-
|---------|---------|-----------|
|
|
52
|
-
| _A ser preenchido_ | | |
|
|
53
|
-
|
|
54
|
-
### Queries
|
|
55
|
-
|
|
56
|
-
| Query | Handler | Descrição |
|
|
57
|
-
|-------|---------|-----------|
|
|
58
|
-
| _A ser preenchido_ | | |
|
|
59
|
-
|
|
60
|
-
### DTOs
|
|
61
|
-
|
|
62
|
-
| DTO | Usado em | Descrição |
|
|
63
|
-
|-----|----------|-----------|
|
|
64
|
-
| _A ser preenchido_ | | |
|
|
65
|
-
|
|
66
|
-
### Services
|
|
67
|
-
|
|
68
|
-
| Interface | Implementação | Descrição |
|
|
69
|
-
|-----------|---------------|-----------|
|
|
70
|
-
| _A ser preenchido_ | | |
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
_Gerado por MORPH-SPEC Framework_
|
|
1
|
+
# Contracts - {{FEATURE_NAME_TITLE}}
|
|
2
|
+
|
|
3
|
+
> Estrutura de contracts para features complexas
|
|
4
|
+
|
|
5
|
+
## Estrutura
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
contracts/
|
|
9
|
+
├── README.md # Este arquivo (índice)
|
|
10
|
+
├── Entities/ # Entidades de domínio
|
|
11
|
+
│ └── I{{FEATURE_NAME_PASCAL}}Entity.cs
|
|
12
|
+
├── Commands/ # Commands (CQRS)
|
|
13
|
+
│ └── I{{FEATURE_NAME_PASCAL}}Commands.cs
|
|
14
|
+
├── Queries/ # Queries (CQRS)
|
|
15
|
+
│ └── I{{FEATURE_NAME_PASCAL}}Queries.cs
|
|
16
|
+
├── DTOs/ # Data Transfer Objects
|
|
17
|
+
│ └── {{FEATURE_NAME_PASCAL}}Dto.cs
|
|
18
|
+
├── Events/ # Domain Events
|
|
19
|
+
│ └── {{FEATURE_NAME_PASCAL}}Events.cs
|
|
20
|
+
└── Services/ # Service Interfaces
|
|
21
|
+
└── I{{FEATURE_NAME_PASCAL}}Service.cs
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Quando usar pasta vs arquivo único
|
|
25
|
+
|
|
26
|
+
| Cenário | Usar |
|
|
27
|
+
|---------|------|
|
|
28
|
+
| < 5 interfaces/DTOs | `contracts.cs` (arquivo único) |
|
|
29
|
+
| 5-15 interfaces/DTOs | `contracts/` (pasta organizada) |
|
|
30
|
+
| > 15 interfaces/DTOs | `contracts/` + subpastas por domínio |
|
|
31
|
+
|
|
32
|
+
## Convenções
|
|
33
|
+
|
|
34
|
+
1. **Prefixo `I`** para interfaces: `IOrderService`, `IPaymentGateway`
|
|
35
|
+
2. **Sufixo `Dto`** para DTOs: `OrderDto`, `OrderCreateDto`
|
|
36
|
+
3. **Sufixo `Command`** para commands: `CreateOrderCommand`
|
|
37
|
+
4. **Sufixo `Query`** para queries: `GetOrderByIdQuery`
|
|
38
|
+
5. **Sufixo `Event`** para eventos: `OrderCreatedEvent`
|
|
39
|
+
|
|
40
|
+
## Índice de Contracts
|
|
41
|
+
|
|
42
|
+
### Entidades
|
|
43
|
+
|
|
44
|
+
| Interface | Descrição | Arquivo |
|
|
45
|
+
|-----------|-----------|---------|
|
|
46
|
+
| _A ser preenchido_ | | |
|
|
47
|
+
|
|
48
|
+
### Commands
|
|
49
|
+
|
|
50
|
+
| Command | Handler | Descrição |
|
|
51
|
+
|---------|---------|-----------|
|
|
52
|
+
| _A ser preenchido_ | | |
|
|
53
|
+
|
|
54
|
+
### Queries
|
|
55
|
+
|
|
56
|
+
| Query | Handler | Descrição |
|
|
57
|
+
|-------|---------|-----------|
|
|
58
|
+
| _A ser preenchido_ | | |
|
|
59
|
+
|
|
60
|
+
### DTOs
|
|
61
|
+
|
|
62
|
+
| DTO | Usado em | Descrição |
|
|
63
|
+
|-----|----------|-----------|
|
|
64
|
+
| _A ser preenchido_ | | |
|
|
65
|
+
|
|
66
|
+
### Services
|
|
67
|
+
|
|
68
|
+
| Interface | Implementação | Descrição |
|
|
69
|
+
|-----------|---------------|-----------|
|
|
70
|
+
| _A ser preenchido_ | | |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
_Gerado por MORPH-SPEC Framework_
|