diff --git a/island.html b/island.html
new file mode 100644
index 0000000..bdf91a7
--- /dev/null
+++ b/island.html
@@ -0,0 +1,11 @@
+
+
+ ProcGen Island
+
+
+
+
+
+
diff --git a/island.ts b/island.ts
new file mode 100644
index 0000000..43e0f6d
--- /dev/null
+++ b/island.ts
@@ -0,0 +1,25 @@
+const BLOWUP = 4;
+const WIDTH = 240;
+const HEIGHT = 135;
+
+export function IslandApplet() {
+ const canvas = Object.assign(document.createElement("canvas"), {
+ width: WIDTH * BLOWUP,
+ height: HEIGHT * BLOWUP,
+ } satisfies Partial);
+
+ const cx = canvas.getContext("2d");
+ if (!cx) {
+ throw new Error("2D rendering context not supported");
+ }
+ cx.scale(BLOWUP, BLOWUP);
+
+ cx.fillStyle = "red";
+ cx.fillRect(0, 0, WIDTH, HEIGHT);
+ cx.fillStyle = "blue";
+ cx.fillRect(1, 1, WIDTH - 2, HEIGHT - 2);
+
+ return [canvas];
+}
+
+(globalThis as any).IslandApplet = IslandApplet;