engineering-handbook/naming-conventions.md
Adam Moussa 0333e7f8f5 Add engineering handbook
Conventions covering naming, git workflow, commit messages, pull
requests, code review, GitHub standards, AWS infrastructure, SAM
project layout, and secrets management. Commit messages section
adapted from RomuloOliveira/commit-messages-guide (CC-BY-4.0).
2026-05-02 16:42:44 -04:00

39 lines
1.2 KiB
Markdown

# Naming Conventions
## The Rule
kebab-case for everything. No exceptions.
No `snake_case`, `PascalCase`, or mixed styles anywhere.
## Where It Applies
| Resource | Example |
|---|---|
| Repository names | `expense-approval-bot`, `door-unlock-api` |
| CloudFormation stack names | `expense-approval-bot` (must match repo name) |
| Lambda function names | `expense-approval-bot-process-receipt` |
| DynamoDB table names | `expense-approval-bot-receipts` |
| S3 bucket names | `expense-approval-bot-uploads` |
| Secrets Manager secrets | `expense-approval-bot/slack-signing` |
| Feature branches | `feature/add-receipt-parser` |
## CDK Gotcha
CDK generates PascalCase stack names by default. Always set an explicit `stackName` (TypeScript) or `stack_name` (Python) in your stack definition to enforce kebab-case.
```typescript
new MyStack(app, 'MyStack', {
stackName: 'my-stack',
});
```
## Examples
| Bad | Good | Why |
|---|---|---|
| `ExpenseApprovalBot` | `expense-approval-bot` | PascalCase |
| `expense_approval_bot` | `expense-approval-bot` | snake_case |
| `expenseApprovalBot` | `expense-approval-bot` | camelCase |
| `Expense-Approval-Bot` | `expense-approval-bot` | Mixed case |
| `feature/AddParser` | `feature/add-parser` | PascalCase in branch |