ProjectsParts Services
Naming Conventions
This document describes the naming conventions used across the CROP-parts-services codebase.
Naming Conventions
This document describes the naming conventions used across the CROP-parts-services codebase.
File Naming
| Type | Pattern | Examples |
|---|---|---|
| Routes | kebab-case.ts | admin-index.ts, cart-sync.ts, ctr-analytics.ts |
| Services | kebab-case-service.ts | cache-invalidation-service.ts, dis-service.ts |
| Config | kebab-case.ts | elasticsearch.ts, mongodb.ts |
| Transformer configs | kebab-case.config.ts | briggs-stratton.config.ts, hotsy.config.ts |
| Types | kebab-case.ts | search.ts, part.ts |
| Tests | *.test.ts | search.test.ts, transformers.test.ts |
Environment Variables
Naming Pattern: UPPER_SNAKE_CASE
Connection Variables (Full Name Prefix)
Used for connection credentials and URLs:
MONGODB_URI- MongoDB connection stringMONGODB_DB_NAME- Database nameELASTICSEARCH_URL- Elasticsearch cluster URLELASTICSEARCH_USERNAME- Basic auth usernameELASTICSEARCH_PASSWORD- Basic auth passwordELASTICSEARCH_API_KEY- API key authentication
Feature/Config Variables (Short Prefix)
Used for feature flags and configuration:
ES_REQUEST_TIMEOUT_MS- Request timeoutES_QUERY_TIMEOUT- Query timeoutES_PIT_ENABLED- Point-in-time paginationES_LOG_QUERIES- Query loggingCTR_TRACKING_ENABLED- Click-through trackingCTR_BATCH_SIZE- Batch size for CTR events
Convention Rationale: Connection credentials use full prefix (ELASTICSEARCH_*) for clarity in secrets management. Runtime config uses short prefix (ES_*) for brevity.
Type/Interface Naming
| Type | Pattern | Examples |
|---|---|---|
| Types | PascalCase | IndexedPart, SearchDocument, Manufacturer |
| Schemas | PascalCaseSchema | SearchQuerySchema, PartSchema |
| Enums | PascalCaseEnum | PriceBucketEnum, CatalogLevelEnum |
| Inferred types | PascalCase | type Part = z.infer<typeof PartSchema> |
Function Naming
All functions use camelCase:
transformDoc()- Transform documentbuildSearchQuery()- Build ES querynormalizePartNumber()- Normalize part numberasManufacturer()- Get manufacturer info
Manufacturer Codes
Three-Letter Codes (Uppercase)
Used internally and in SKUs:
NHL- New HollandHOT- HotsyBNS- Briggs & StrattonVNT- VentracMCH- McHaleKUH- Kuhn
MongoDB Collection Names
Pattern: parts_{code} (lowercase)
parts_nhl- New Holland partsparts_hot- Hotsy partsparts_bns- Briggs & Stratton parts
Registry Keys (TRANSFORMER_CONFIGS)
Historical naming - matches source data collection names:
HOTSY- Archive collectionMcHale- Archive collection'Briggs and Stratton'- Archive collection
Query Aliases
Configured in manufacturers.ts for flexible search:
hot,hsy,hotsy→HOTnh,nhl,newholland→NHL
Elasticsearch Index/Alias Naming
Index Pattern
parts_v{YYYYMMDDHHMMSS} - Versioned with timestamp
parts_v20260120093000- Created Jan 20, 2026 at 09:30
Alias Pattern
parts_current suffix required:
parts_current- Main aliasparts_current_read- Read-only aliasparts_current_write- Write alias
Database Collections
Pattern: snake_case
autocomplete_ctr_eventspayment_intentsuser_cartswebhook_events
Constants
Pattern: UPPER_SNAKE_CASE
DEFAULT_PAGE_SIZEMAX_RESULTS_WINDOWSEARCH_SOURCE_FIELDS