aurora-project-structure
Provides structured information about the Aurora/NestJS project folder hierarchy, explaining the purpose and responsibility of each directory and key files. Trigger: When user asks about project structure, folder organization, "where is X", or navigating the codebase.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
When to Use
- User asks "where is..." or "where should I put..."
- User needs to understand the project organization
- User asks about naming conventions
- User needs to navigate between layers (API, Application, Domain, Infrastructure)
- User is new to Aurora/NestJS CQRS architecture
Critical Patterns
Layer Responsibilities
| Layer | Path | Responsibility | Can Modify? |
|---|---|---|---|
| API | @api/[package]/[module]/ |
Entry points (REST/GraphQL), DTOs, Resolvers, Handlers | Normally handler (generated) |
| Application | @app/[package]/[module]/application/ |
Use cases, Commands, Queries, Events, Sagas | Exceptionally (generated) |
| Domain | @app/[package]/[module]/domain/ |
Aggregates, Value Objects, Repository interfaces | Exceptionally (generated) |
| Infrastructure | @app/[package]/[module]/infrastructure/ |
Repository implementations, ORM models | Exceptionally (generated) |
File Generation Marker
All generated files include this header - NEVER modify these files directly:
/**
* @aurora-generated
* @source cliter/[package]/[module].aurora.yaml
*/
Project Structure
cliter/ # Aurora YAML Definitions
├── [package]/
│ ├── [module].aurora.yaml # Module definition (source of truth)
│ └── [module]-lock.json # Generation lock file
postman/ # Postman files
├── [package]/
│ └── [package].[module].postman.json # Postman file collection v2.1
│
src/
├── @api/[package]/ # API Layer - Entry points
│ ├── [module]/
│ │ ├── controllers/ # REST Controllers (generated)
│ │ ├── dto/ # Data Transfer Objects (generated)
│ │ ├── graphql/ # GraphQL schema definitions (generated)
│ │ ├── handlers/ # API handlers - bridge to application layer (generated)
│ │ ├── resolvers/ # GraphQL Resolvers (generated)
│ │ ├── seeder/ # Data seeders for e2e tests
│ │ └── index.ts # Barrel exports
│ ├── [package].module.ts # NestJS module declaration
│ └── [package].seeder.ts # Package-level seeder
│
├── @app/[package]/ # Application + Domain Layer
│ ├── [module]/
│ │ ├── application/ # CQRS Use Cases
│ │ │ ├── count/ # Count query handlers
│ │ │ ├── create/ # Create command handlers
│ │ │ ├── delete/ # Delete command handlers
│ │ │ ├── events/ # Domain events and handlers
│ │ │ ├── find/ # Find query handlers
│ │ │ ├── get/ # Get (list) query handlers
│ │ │ ├── max/ # Max aggregation handlers
│ │ │ ├── min/ # Min aggregation handlers
│ │ │ ├── paginate/ # Pagination query handlers
│ │ │ ├── raw-sql/ # Raw SQL query handlers
│ │ │ ├── sagas/ # CQRS Sagas for side effects
│ │ │ ├── sum/ # Sum aggregation handlers
│ │ │ ├── update/ # Update command handlers
│ │ │ └── upsert/ # Upsert command handlers
│ │ ├── domain/ # Domain Layer
│ │ │ ├── [module].aggregate.ts # Aggregate Root (generated)
│ │ │ ├── [module].mapper.ts # Entity <-> DTO mapper (generated)
│ │ │ ├── [module].repository.ts # Repository interface (generated)
│ │ │ ├── [module].response.ts # Response type (generated)
│ │ │ ├── types/ # Enums and types from module (generated)
│ │ │ └── value-objects/ # Value Objects (generated)
│ │ └── infrastructure/ # Infrastructure Layer
│ │ ├── mock/ # Mock repository for testing
│ │ │ ├── mock-[module].data.ts
│ │ │ ├── mock-[module].repository.ts
│ │ │ └── mock-[module].seeder.ts
│ │ └── sequelize/ # Sequelize ORM implementation
│ │ ├── sequelize-[module].model.ts
│ │ └── sequelize-[module].repository.ts
│ ├── [package].seed.ts # Package seed configuration
│ ├── [package].types.ts # Package type definitions
│ ├── index.ts # Barrel exports
│ └── public-api.ts # Public API exports
│
├── @aurora/ # Framework Core (DO NOT MODIFY)
│ ├── decorators/ # Custom decorators
│ ├── modules/ # Core modules (CQRS, GraphQL, etc.)
│ ├── services/ # Core services (Bootstrap, Logger)
│ ├── core.module.ts # Core module configuration
│ └── shared.module.ts # Shared module exports
│
├── @config/ # Configuration modules
│ └── mailer/ # Email configuration
│
├── assets/ # Static assets
├── i18n/ # Internationalization files
│
├── app.module.ts # Root application module
├── app.controller.ts # Root controller
├── app.service.ts # Root service
├── main.ts # Application entry point
├── repl.ts # REPL mode entry point
│
test/
├── acceptance/ # E2E acceptance tests
│ └── [package]/
│ └── [module].e2e-spec.ts # Module e2e tests
└── jest-e2e.json # E2E Jest configuration
CQRS File Naming Convention
Commands (Write operations)
[package]-create-[module].command.ts # Create single
[package]-create-[modules].command.ts # Create multiple
[package]-update-[module]-by-id.command.ts # Update by ID
[package]-update-[modules].command.ts # Update multiple
[package]-delete-[module]-by-id.command.ts # Delete by ID
[package]-delete-[modules].command.ts # Delete multiple
[package]-upsert-[module].command.ts # Upsert single
Queries (Read operations)
[package]-find-[module].query.ts # Find single by criteria
[package]-find-[module]-by-id.query.ts # Find by ID
[package]-get-[modules].query.ts # Get all/list
[package]-paginate-[modules].query.ts # Paginated list
[package]-count-[module].query.ts # Count
[package]-sum-[module].query.ts # Sum aggregation
[package]-max-[module].query.ts # Max aggregation
[package]-min-[module].query.ts # Min aggregation
[package]-raw-sql-[modules].query.ts # Raw SQL query
Events
[package]-created-[module].event.ts # Created event
[package]-updated-[module].event.ts # Updated event
[package]-deleted-[module].event.ts # Deleted event
Decision Tree: Where to Put Code?
Need to add a new field/entity?
→ Modify cliter/[package]/[module].aurora.yaml
→ Run Aurora CLI to regenerate
Need custom business logic?
→ Add to command/query handler execute() method
→ Create custom service in services/ folder
Need new API endpoint?
→ Modify YAML and regenerate
→ Or create custom controller (rare)
Need to validate data?
→ Add validation in command handler
→ Or create custom validator service
Need to react to domain events?
→ Create event handler in events/ folder
→ Or use sagas for complex workflows
Need database-specific logic?
→ AVOID if possible
→ Use repository interface methods
Quick Navigation Commands
# Find all files for a module
find src -name "*unit*" -type f
# Find all command handlers
find src -name "*command-handler.ts" -type f
# Find all query handlers
find src -name "*query-handler.ts" -type f
# Find YAML definitions
ls cliter/*/
# Find generated files by source
grep -r "@source cliter" src/
Resources
-
YAML Definitions: See
cliter/[package]/[module].aurora.yamlfor module source -
Framework Core: See
src/@aurora/for reusable decorators and modules -
Tests: See
test/acceptance/[package]/for e2e test examples
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!