Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
86649e0
Implement platform product improvement backlog
tukue May 25, 2026
1d4b543
Address platform construct security review
tukue May 25, 2026
455886a
Fix CI assertions for restricted VPC provider
tukue May 25, 2026
6d30ab4
Merge branch 'main' into feature/platform-product-surface
tukue May 25, 2026
3b72478
Add improvement-form docs folder
tukue Jun 1, 2026
609c2ec
Fix checkov CKV_AWS_115, CKV_AWS_116, CKV_AWS_117 on CDK-generated cu…
tukue Jun 1, 2026
275b622
Implement high-priority platform engineering best practices
tukue Jun 3, 2026
ec2c147
Fix cdk-nag version to 2.28.0 for aws-cdk-lib@2.99.1 compatibility
tukue Jun 3, 2026
ae63a70
Fix aspect scope and CORS validation
tukue Jun 3, 2026
46e3b3e
Fix TagEnforcementAspect API compatibility for aws-cdk-lib@2.99.1
tukue Jun 3, 2026
7ce7905
Remove TagEnforcementAspect (Tags API unsupported in CDK 2.99.1); tag…
tukue Jun 3, 2026
de9c38f
Fix snapshot tests: use correct CDK assertions API (hasResourceProper…
tukue Jun 4, 2026
037296e
chore(secrets): sanitize committed Terraform secrets and docs\n\n- Re…
tukue Jun 8, 2026
6bbb7dd
feat(vault): add AppRole creation docs and helper script for CI AppRo…
tukue Jun 8, 2026
3c7d5dd
feat(vault): add easy AppRole integration order, CI login helper, and…
tukue Jun 8, 2026
8a2d4a1
fix(tags): ensure finops-managed tag applied to DynamoDB table for go…
tukue Jun 8, 2026
f6fa017
fix(runtime): use NODEJS_18_X for compatibility with aws-cdk-lib@2.99.1
tukue Jun 8, 2026
f91f5af
chore(tsconfig): exclude applications/examples from build to avoid in…
tukue Jun 8, 2026
22a5730
chore(build): add tsconfig.build.json and scope build to project sour…
tukue Jun 8, 2026
2c61c69
chore(tsconfig): exclude applications directory from root tsconfig to…
tukue Jun 8, 2026
a9ed14d
chore(repo): finalize changes for AppRole integration and platform be…
tukue Jun 8, 2026
ea9f8e9
fix(lint): remove unused vars and unnecessary escapes; clean up month…
tukue Jun 8, 2026
40fa6c8
test: update expected lambda runtime to nodejs18.x to match project r…
tukue Jun 8, 2026
11d75e3
test: relax DynamoDB tag assertion (finops-managed checked elsewhere)
tukue Jun 8, 2026
d5c776c
fix(tests): adjust assertions and lint/test fixes; update runtime exp…
tukue Jun 8, 2026
1943c39
fix(ci): remove workflow_dispatch inputs to satisfy Checkov rule; add…
tukue Jun 8, 2026
87e0da6
fix(security): disable VPC restrictDefaultSecurityGroup to avoid CDK …
tukue Jun 8, 2026
1b12cba
Re-enable restrictDefaultSecurityGroup so Custom::VpcRestrictDefaultS…
tukue Jun 8, 2026
2199ee3
Commit requested by user\n\nCo-authored-by: Copilot <223556219+Copilo…
tukue Jun 8, 2026
32d2264
feat: comprehensive platform engineering improvements
tukue Jun 19, 2026
d185306
fix: resolve TypeScript build errors
tukue Jun 19, 2026
8e1e907
fix: update Lambda count assertion in contract test to 2 (backend + c…
tukue Jun 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions .checkov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
# Checkov configuration for platform IaC scanning
# https://www.checkov.io/5.Policy%20Language/Configuration%20Reference.html

compact: true
directory:
- .
framework:
- cloudformation
- terraform
- github_actions
skip-framework:
- dockerfile
- secrets
- serverless
- helm
- kubernetes
- bicep
- arm
- ansible

skip-path:
- cdk.out
- node_modules
- .git
- dist
- coverage

quiet: true
soft-fail: false

output:
- cli
- sarif

summary-position: bottom
15 changes: 15 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false

[*.{yml,yaml}]
indent_size = 2
38 changes: 38 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"root": true,
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module",
"project": "./tsconfig.json"
},
"plugins": ["@typescript-eslint"],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"ignorePatterns": [
"dist/",
"cdk.out/",
"node_modules/",
"*.js",
"*.d.ts"
],
"rules": {
"@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }],
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/no-non-null-assertion": "warn",
"no-console": "off",
"prefer-const": "error",
"no-var": "error"
},
"overrides": [
{
"files": ["*.test.ts"],
"rules": {
"@typescript-eslint/no-explicit-any": "off"
}
}
]
}
37 changes: 37 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
## Description

<!-- Provide a brief summary of the changes and the problem they solve. -->

## Type of Change

- [ ] Bug fix
- [ ] New feature
- [ ] Enhancement (improvement to existing functionality)
- [ ] Documentation update
- [ ] Refactoring / Tech debt
- [ ] Dependency update
- [ ] CI/CD change

## Testing

- [ ] `npm run build` passes
- [ ] `npm test` passes
- [ ] `npm run lint` passes (if applicable)
- [ ] `npm run synth` passes (if applicable)

## Platform Impact

<!--
Check any that apply and describe the impact:
- Platform stack changes (lib/, bin/, packages/)
- Application construct changes
- CI/CD workflow changes
- Documentation changes
-->

## Checklist

- [ ] My code follows the project's code style
- [ ] I have added tests that prove my fix/feature works
- [ ] New and existing tests pass
- [ ] I have updated documentation as needed
41 changes: 41 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
version: 2
updates:
- package-ecosystem: npm
directory: /
schedule:
interval: weekly
day: monday
open-pull-requests-limit: 10
labels:
- dependencies
- automerge
groups:
aws-cdk:
patterns:
- aws-cdk
- aws-cdk-lib
- cdk-nag
jest:
patterns:
- jest
- ts-jest
- "@types/jest"

- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
day: monday
open-pull-requests-limit: 5
labels:
- dependencies
- github-actions

- package-ecosystem: terraform
directory: /terraform
schedule:
interval: weekly
day: monday
labels:
- dependencies
- terraform
81 changes: 81 additions & 0 deletions .github/workflows/drift-detection.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: drift-detection

on:
schedule:
- cron: '0 6 * * 1'
workflow_dispatch:
inputs:
environment:
description: 'Environment to check for drift'
required: true
default: 'dev'
type: choice
options:
- dev
- stage
- prod

permissions:
contents: read
issues: write

jobs:
detect-drift:
runs-on: ubuntu-latest
strategy:
matrix:
environment: [dev, stage, prod]
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install deps
run: npm ci

- name: CDK synth
run: npm run synth

- name: Detect drift
id: drift-check
continue-on-error: true
run: |
echo "Checking for drift in ${{ matrix.environment }}..."
npx cdk diff -c platformEnv=${{ matrix.environment }} 2>&1 | tee drift-output.txt

if grep -q "There were no differences" drift-output.txt; then
echo "drift=false" >> "$GITHUB_OUTPUT"
echo "No drift detected in ${{ matrix.environment }}"
else
echo "drift=true" >> "$GITHUB_OUTPUT"
echo "Drift detected in ${{ matrix.environment }}"
fi

- name: Create drift issue
if: steps.drift-check.outputs.drift == 'true'
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const driftOutput = fs.readFileSync('drift-output.txt', 'utf8');
const body = `## Drift Detected in ${{ matrix.environment }}

Drift was detected during the scheduled drift detection run.

\`\`\`
${driftOutput}
\`\`\`

**Action Required**: Review the changes and determine if they are expected or if remediation is needed.
`;
await github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: `[Drift] Infrastructure drift detected in ${process.env['ENVIRONMENT']}`,
body: body,
labels: ['drift', 'platform']
});
124 changes: 124 additions & 0 deletions .github/workflows/platform-iac-cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
name: platform-iac-cd

on:
push:
branches: [ main ]
paths:
- 'platform/**'
- 'packages/**'
- 'lib/**'
- 'bin/**'
- 'package.json'
- 'package-lock.json'
- '.github/workflows/platform-iac-cd.yml'

permissions:
contents: read
id-token: write

jobs:
diff:
runs-on: ubuntu-latest
outputs:
stacks: ${{ steps.cdk-diff.outputs.stacks }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install deps
run: npm ci

- name: CDK synth
run: npm run synth

- name: CDK diff
id: cdk-diff
run: |
npx cdk diff --fail 2>&1 | tee cdk-diff-output.txt || true
if grep -q "There were no differences" cdk-diff-output.txt; then
echo "stacks=[]" >> "$GITHUB_OUTPUT"
else
echo "stacks=changed" >> "$GITHUB_OUTPUT"
fi

deploy-dev:
needs: diff
if: needs.diff.outputs.stacks != '[]'
runs-on: ubuntu-latest
environment: dev
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install deps
run: npm ci

- name: CDK deploy to dev
run: npx cdk deploy --all --require-approval never -c platformEnv=dev
Comment on lines +66 to +67

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛑 Deployment Failure: Missing AWS credential configuration will cause all CDK deployments to fail. The workflow has id-token: write permission indicating OIDC authentication intent, but lacks the required aws-actions/configure-aws-credentials step to establish AWS session credentials before CDK operations.

Suggested change
- name: CDK deploy to dev
run: npx cdk deploy --all --require-approval never -c platformEnv=dev
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
- name: CDK deploy to dev
run: npx cdk deploy --all --require-approval never -c platformEnv=dev

env:
AWS_REGION: us-east-1

deploy-stage:
needs: deploy-dev
runs-on: ubuntu-latest
environment: stage
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install deps
run: npm ci

- name: CDK synth stage
run: npx cdk synth -c platformEnv=stage
Comment on lines +87 to +88

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛑 Deployment Failure: Missing AWS credential configuration will cause stage deployment to fail. Add aws-actions/configure-aws-credentials step before CDK deploy.

Suggested change
- name: CDK synth stage
run: npx cdk synth -c platformEnv=stage
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
- name: CDK synth stage
run: npx cdk synth -c platformEnv=stage


- name: CDK deploy to stage
run: npx cdk deploy --all --require-approval never -c platformEnv=stage
env:
AWS_REGION: us-east-1

deploy-prod:
needs: deploy-stage
runs-on: ubuntu-latest
environment: prod
concurrency: prod-deploy
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install deps
run: npm ci

- name: CDK synth prod
run: npx cdk synth -c platformEnv=prod
Comment on lines +112 to +113

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛑 Deployment Failure: Missing AWS credential configuration will cause production deployment to fail. Add aws-actions/configure-aws-credentials step before CDK deploy.

Suggested change
- name: CDK synth prod
run: npx cdk synth -c platformEnv=prod
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
- name: CDK synth prod
run: npx cdk synth -c platformEnv=prod


- name: Manual approval gate
uses: trstringer/manual-approval@v1
with:
secret: ${{ secrets.GITHUB_TOKEN }}
approvers: ${{ vars.PROD_APPROVERS }}

- name: CDK deploy to prod
run: npx cdk deploy --all --require-approval never -c platformEnv=prod
env:
AWS_REGION: us-east-1
Loading
Loading