Initial scaffold: monorepo structure, CDK stacks, CI/CD, domain model
Phase 0 of proposal-system: complete project setup including:
- CDK infrastructure (3 stacks: foundation, compute, frontend)
- .NET 8 solution with Clean Architecture (Domain, Application, Infrastructure, Api)
- EF Core data model (PostgreSQL) with all entities
- Python Lambda placeholders (pdf-extract, pdf-generate, library-ingest)
- React 19 web frontend scaffold (Vite + MUI)
- React Native mobile placeholder
- Shared TypeScript API contracts
- GitHub Actions CI/CD (ci.yaml + deploy.yaml)
- OIDC deploy role (githubdeploy-proposal-system)
- Dependabot configuration
- Cognito User Pool with Google OAuth, PKCE clients, groups
2026-05-16 18:40:46 -04:00
|
|
|
|
import * as cdk from 'aws-cdk-lib';
|
|
|
|
|
|
import { FoundationStack } from '../lib/foundation-stack';
|
|
|
|
|
|
import { ComputeStack } from '../lib/compute-stack';
|
|
|
|
|
|
import { FrontendStack } from '../lib/frontend-stack';
|
2026-06-12 18:04:53 -04:00
|
|
|
|
import { resolveConfig } from '../lib/config';
|
Initial scaffold: monorepo structure, CDK stacks, CI/CD, domain model
Phase 0 of proposal-system: complete project setup including:
- CDK infrastructure (3 stacks: foundation, compute, frontend)
- .NET 8 solution with Clean Architecture (Domain, Application, Infrastructure, Api)
- EF Core data model (PostgreSQL) with all entities
- Python Lambda placeholders (pdf-extract, pdf-generate, library-ingest)
- React 19 web frontend scaffold (Vite + MUI)
- React Native mobile placeholder
- Shared TypeScript API contracts
- GitHub Actions CI/CD (ci.yaml + deploy.yaml)
- OIDC deploy role (githubdeploy-proposal-system)
- Dependabot configuration
- Cognito User Pool with Google OAuth, PKCE clients, groups
2026-05-16 18:40:46 -04:00
|
|
|
|
|
|
|
|
|
|
const app = new cdk.App();
|
|
|
|
|
|
|
2026-07-15 14:44:35 -04:00
|
|
|
|
// Multi-env (PR2): `-c env=staging` (default prod). prod targets seahaven-prod
|
|
|
|
|
|
// (011934824531) with no stack-name suffix; staging is suffixed and currently hard-disabled
|
|
|
|
|
|
// (see resolveConfig — mgmt account is frozen).
|
2026-06-12 18:04:53 -04:00
|
|
|
|
const config = resolveConfig(app);
|
|
|
|
|
|
const { env, stackSuffix } = config;
|
Initial scaffold: monorepo structure, CDK stacks, CI/CD, domain model
Phase 0 of proposal-system: complete project setup including:
- CDK infrastructure (3 stacks: foundation, compute, frontend)
- .NET 8 solution with Clean Architecture (Domain, Application, Infrastructure, Api)
- EF Core data model (PostgreSQL) with all entities
- Python Lambda placeholders (pdf-extract, pdf-generate, library-ingest)
- React 19 web frontend scaffold (Vite + MUI)
- React Native mobile placeholder
- Shared TypeScript API contracts
- GitHub Actions CI/CD (ci.yaml + deploy.yaml)
- OIDC deploy role (githubdeploy-proposal-system)
- Dependabot configuration
- Cognito User Pool with Google OAuth, PKCE clients, groups
2026-05-16 18:40:46 -04:00
|
|
|
|
|
2026-07-15 14:44:35 -04:00
|
|
|
|
// Pipeline-only deploy signal (WARN, not block). Prod deploys must go through the cd-cdk
|
|
|
|
|
|
// pipeline (GitHub Actions sets CI/GITHUB_ACTIONS). A local synth/deploy to prod is a
|
|
|
|
|
|
// drift risk + "no manual prod deploys" violation. True enforcement is an org-baseline SCP
|
|
|
|
|
|
// (tracked follow-up); this is the cheap in-repo backstop.
|
|
|
|
|
|
if (config.envName === 'prod' && !process.env.CI && !process.env.GITHUB_ACTIONS) {
|
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
|
|
|
|
console.warn(
|
|
|
|
|
|
'\n⚠️ Running the PROD CDK app outside CI. Prod deploys must go through the cd-cdk ' +
|
|
|
|
|
|
'pipeline (deploy.yaml, workflow_dispatch). Do NOT `cdk deploy` to prod locally.\n',
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-06-12 18:04:53 -04:00
|
|
|
|
const foundation = new FoundationStack(app, `proposal-system-foundation${stackSuffix}`, {
|
|
|
|
|
|
stackName: `proposal-system-foundation${stackSuffix}`,
|
Initial scaffold: monorepo structure, CDK stacks, CI/CD, domain model
Phase 0 of proposal-system: complete project setup including:
- CDK infrastructure (3 stacks: foundation, compute, frontend)
- .NET 8 solution with Clean Architecture (Domain, Application, Infrastructure, Api)
- EF Core data model (PostgreSQL) with all entities
- Python Lambda placeholders (pdf-extract, pdf-generate, library-ingest)
- React 19 web frontend scaffold (Vite + MUI)
- React Native mobile placeholder
- Shared TypeScript API contracts
- GitHub Actions CI/CD (ci.yaml + deploy.yaml)
- OIDC deploy role (githubdeploy-proposal-system)
- Dependabot configuration
- Cognito User Pool with Google OAuth, PKCE clients, groups
2026-05-16 18:40:46 -04:00
|
|
|
|
env,
|
2026-06-12 18:04:53 -04:00
|
|
|
|
config,
|
Initial scaffold: monorepo structure, CDK stacks, CI/CD, domain model
Phase 0 of proposal-system: complete project setup including:
- CDK infrastructure (3 stacks: foundation, compute, frontend)
- .NET 8 solution with Clean Architecture (Domain, Application, Infrastructure, Api)
- EF Core data model (PostgreSQL) with all entities
- Python Lambda placeholders (pdf-extract, pdf-generate, library-ingest)
- React 19 web frontend scaffold (Vite + MUI)
- React Native mobile placeholder
- Shared TypeScript API contracts
- GitHub Actions CI/CD (ci.yaml + deploy.yaml)
- OIDC deploy role (githubdeploy-proposal-system)
- Dependabot configuration
- Cognito User Pool with Google OAuth, PKCE clients, groups
2026-05-16 18:40:46 -04:00
|
|
|
|
description: 'Proposal System - VPC, RDS, S3, SQS, Cognito',
|
|
|
|
|
|
});
|
|
|
|
|
|
|
2026-06-12 18:04:53 -04:00
|
|
|
|
const compute = new ComputeStack(app, `proposal-system-compute${stackSuffix}`, {
|
|
|
|
|
|
stackName: `proposal-system-compute${stackSuffix}`,
|
Initial scaffold: monorepo structure, CDK stacks, CI/CD, domain model
Phase 0 of proposal-system: complete project setup including:
- CDK infrastructure (3 stacks: foundation, compute, frontend)
- .NET 8 solution with Clean Architecture (Domain, Application, Infrastructure, Api)
- EF Core data model (PostgreSQL) with all entities
- Python Lambda placeholders (pdf-extract, pdf-generate, library-ingest)
- React 19 web frontend scaffold (Vite + MUI)
- React Native mobile placeholder
- Shared TypeScript API contracts
- GitHub Actions CI/CD (ci.yaml + deploy.yaml)
- OIDC deploy role (githubdeploy-proposal-system)
- Dependabot configuration
- Cognito User Pool with Google OAuth, PKCE clients, groups
2026-05-16 18:40:46 -04:00
|
|
|
|
env,
|
2026-06-12 18:04:53 -04:00
|
|
|
|
config,
|
Initial scaffold: monorepo structure, CDK stacks, CI/CD, domain model
Phase 0 of proposal-system: complete project setup including:
- CDK infrastructure (3 stacks: foundation, compute, frontend)
- .NET 8 solution with Clean Architecture (Domain, Application, Infrastructure, Api)
- EF Core data model (PostgreSQL) with all entities
- Python Lambda placeholders (pdf-extract, pdf-generate, library-ingest)
- React 19 web frontend scaffold (Vite + MUI)
- React Native mobile placeholder
- Shared TypeScript API contracts
- GitHub Actions CI/CD (ci.yaml + deploy.yaml)
- OIDC deploy role (githubdeploy-proposal-system)
- Dependabot configuration
- Cognito User Pool with Google OAuth, PKCE clients, groups
2026-05-16 18:40:46 -04:00
|
|
|
|
description: 'Proposal System - API Lambda, Python Lambdas, Bedrock KB',
|
|
|
|
|
|
vpc: foundation.vpc,
|
|
|
|
|
|
lambdaSecurityGroup: foundation.lambdaSecurityGroup,
|
|
|
|
|
|
dbSecret: foundation.dbSecret,
|
2026-06-12 18:44:42 -04:00
|
|
|
|
dbCluster: foundation.dbCluster,
|
Initial scaffold: monorepo structure, CDK stacks, CI/CD, domain model
Phase 0 of proposal-system: complete project setup including:
- CDK infrastructure (3 stacks: foundation, compute, frontend)
- .NET 8 solution with Clean Architecture (Domain, Application, Infrastructure, Api)
- EF Core data model (PostgreSQL) with all entities
- Python Lambda placeholders (pdf-extract, pdf-generate, library-ingest)
- React 19 web frontend scaffold (Vite + MUI)
- React Native mobile placeholder
- Shared TypeScript API contracts
- GitHub Actions CI/CD (ci.yaml + deploy.yaml)
- OIDC deploy role (githubdeploy-proposal-system)
- Dependabot configuration
- Cognito User Pool with Google OAuth, PKCE clients, groups
2026-05-16 18:40:46 -04:00
|
|
|
|
uploadsBucket: foundation.uploadsBucket,
|
|
|
|
|
|
generatedBucket: foundation.generatedBucket,
|
|
|
|
|
|
libraryBucket: foundation.libraryBucket,
|
|
|
|
|
|
jobsQueue: foundation.jobsQueue,
|
|
|
|
|
|
userPool: foundation.userPool,
|
2026-05-20 19:07:49 -04:00
|
|
|
|
alarmTopic: foundation.alarmTopic,
|
2026-05-20 18:51:31 -04:00
|
|
|
|
webClientId: foundation.webClientId,
|
|
|
|
|
|
mobileClientId: foundation.mobileClientId,
|
Initial scaffold: monorepo structure, CDK stacks, CI/CD, domain model
Phase 0 of proposal-system: complete project setup including:
- CDK infrastructure (3 stacks: foundation, compute, frontend)
- .NET 8 solution with Clean Architecture (Domain, Application, Infrastructure, Api)
- EF Core data model (PostgreSQL) with all entities
- Python Lambda placeholders (pdf-extract, pdf-generate, library-ingest)
- React 19 web frontend scaffold (Vite + MUI)
- React Native mobile placeholder
- Shared TypeScript API contracts
- GitHub Actions CI/CD (ci.yaml + deploy.yaml)
- OIDC deploy role (githubdeploy-proposal-system)
- Dependabot configuration
- Cognito User Pool with Google OAuth, PKCE clients, groups
2026-05-16 18:40:46 -04:00
|
|
|
|
});
|
|
|
|
|
|
|
2026-06-12 18:04:53 -04:00
|
|
|
|
new FrontendStack(app, `proposal-system-frontend${stackSuffix}`, {
|
|
|
|
|
|
stackName: `proposal-system-frontend${stackSuffix}`,
|
Initial scaffold: monorepo structure, CDK stacks, CI/CD, domain model
Phase 0 of proposal-system: complete project setup including:
- CDK infrastructure (3 stacks: foundation, compute, frontend)
- .NET 8 solution with Clean Architecture (Domain, Application, Infrastructure, Api)
- EF Core data model (PostgreSQL) with all entities
- Python Lambda placeholders (pdf-extract, pdf-generate, library-ingest)
- React 19 web frontend scaffold (Vite + MUI)
- React Native mobile placeholder
- Shared TypeScript API contracts
- GitHub Actions CI/CD (ci.yaml + deploy.yaml)
- OIDC deploy role (githubdeploy-proposal-system)
- Dependabot configuration
- Cognito User Pool with Google OAuth, PKCE clients, groups
2026-05-16 18:40:46 -04:00
|
|
|
|
env,
|
2026-06-12 18:04:53 -04:00
|
|
|
|
config,
|
Initial scaffold: monorepo structure, CDK stacks, CI/CD, domain model
Phase 0 of proposal-system: complete project setup including:
- CDK infrastructure (3 stacks: foundation, compute, frontend)
- .NET 8 solution with Clean Architecture (Domain, Application, Infrastructure, Api)
- EF Core data model (PostgreSQL) with all entities
- Python Lambda placeholders (pdf-extract, pdf-generate, library-ingest)
- React 19 web frontend scaffold (Vite + MUI)
- React Native mobile placeholder
- Shared TypeScript API contracts
- GitHub Actions CI/CD (ci.yaml + deploy.yaml)
- OIDC deploy role (githubdeploy-proposal-system)
- Dependabot configuration
- Cognito User Pool with Google OAuth, PKCE clients, groups
2026-05-16 18:40:46 -04:00
|
|
|
|
description: 'Proposal System - CloudFront + S3 web hosting',
|
|
|
|
|
|
});
|
2026-06-12 18:04:53 -04:00
|
|
|
|
|
|
|
|
|
|
void compute;
|