diff --git a/typescript/static-site-basic/README.md b/typescript/static-site-basic/README.md
new file mode 100644
index 0000000000..b6536409da
--- /dev/null
+++ b/typescript/static-site-basic/README.md
@@ -0,0 +1,28 @@
+# Static site
+
+##
+
+
+
+> **This is an experimental example. It may not build out of the box**
+>
+> This example is built on Construct Libraries marked "Experimental" and may not be updated for latest breaking changes.
+>
+> If build is unsuccessful, please create an [issue](https://github.com/aws-samples/aws-cdk-examples/issues/new) so that we may debug the problem
+
+---
+
+
+
+This example creates the infrastructure for hosting a static site, which uses an S3 bucket for storing the content. The site contents (located in the 'site-contents' sub-directory) are deployed to the bucket. As this is a basic example, it is not intended for production workloads. It does not use a CloudFront distribution or SSL.
+
+## Prep
+
+## Deploy
+
+```shell
+$ npm install -g aws-cdk
+$ npm install
+$ npm run build
+$ cdk deploy -c static-content-prefix=web/static
+```
diff --git a/typescript/static-site-basic/cdk.json b/typescript/static-site-basic/cdk.json
new file mode 100644
index 0000000000..a46c823a5e
--- /dev/null
+++ b/typescript/static-site-basic/cdk.json
@@ -0,0 +1,3 @@
+{
+ "app": "ts-node index.ts"
+}
diff --git a/typescript/static-site-basic/index.ts b/typescript/static-site-basic/index.ts
new file mode 100644
index 0000000000..d93711c7f6
--- /dev/null
+++ b/typescript/static-site-basic/index.ts
@@ -0,0 +1,34 @@
+#!/usr/bin/env node
+import * as cdk from "aws-cdk-lib";
+import { StaticSiteBasic } from "./static-site-basic";
+
+/**
+ * This stack allows the user to specify a prefix path for static content in their
+ * website hosting bucket.
+ * Use 'cdk synth -c static-content-prefix=web/static '
+ * Or add the following to cdk.json:
+ * {
+ * "context": {
+ * "static-content-prefix": "web/static",
+ * }
+ * }
+ **/
+class MyStaticSiteBasicStack extends cdk.Stack {
+ constructor(parent: cdk.App, name: string, props: cdk.StackProps) {
+ super(parent, name, props);
+
+ new StaticSiteBasic(this, "StaticSiteBasic", {
+ staticContentPrefix: this.node.tryGetContext("static-content-prefix"),
+ });
+ }
+}
+
+const app = new cdk.App();
+
+new MyStaticSiteBasicStack(app, "MyStaticSite", {
+ env: {
+ account: app.node.tryGetContext("accountId"),
+ },
+});
+
+app.synth();
diff --git a/typescript/static-site-basic/package.json b/typescript/static-site-basic/package.json
new file mode 100644
index 0000000000..6aef547485
--- /dev/null
+++ b/typescript/static-site-basic/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "static-site-basic",
+ "version": "1.0.0",
+ "description": "Infrastructure for hosting an HTTP website in S3",
+ "scripts": {
+ "build": "tsc",
+ "watch": "tsc -w",
+ "cdk": "cdk"
+ },
+ "author": {
+ "name": "Amazon Web Services",
+ "url": "https://aws.amazon.com",
+ "organization": true
+ },
+ "license": "Apache-2.0",
+ "devDependencies": {
+ "@types/node": "^10.17.0",
+ "aws-cdk": "*",
+ "typescript": "~5.1.6"
+ },
+ "dependencies": {
+ "aws-cdk-lib": "^2.0.0",
+ "constructs": "^10.0.0",
+ "ts-node": "^10.9.2"
+ }
+}
diff --git a/typescript/static-site-basic/site-contents/error.html b/typescript/static-site-basic/site-contents/error.html
new file mode 100644
index 0000000000..0240c8288b
--- /dev/null
+++ b/typescript/static-site-basic/site-contents/error.html
@@ -0,0 +1,6 @@
+
+