diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml
index c722938..db7fcb7 100644
--- a/.github/workflows/actions.yml
+++ b/.github/workflows/actions.yml
@@ -20,7 +20,7 @@ jobs:
node-version: 18.x
- run: cd js && npm ci && npm run build
- run: echo "VITE_GIT_SHA=$(git rev-parse --short HEAD)" >> app/.env
- - run: cd app && npm ci && ./node_modules/.bin/tsc && npm run prettier-check && ./node_modules/.bin/vite build
+ - run: cd app && npm ci && npm run check && npm run build
- run: cd serverless/aws && npm ci && npx tsc && npm run biome-check && npm run build-zip && cp dist/lambda_function.zip ../../app/dist && npm run build-cloudformation-stack && cp dist/cloudformation-stack.yaml ../../app/dist
- run: cd serverless/cloudflare && cp wrangler.toml.example wrangler.toml && npm ci && npx tsc && npm run biome-check && npm run build && cp dist/index.js ../../app/dist
- run: cd spec/v3 && cp *.pmtiles ../../app/dist
diff --git a/app/.gitignore b/app/.gitignore
index 7ceb59f..a547bf3 100644
--- a/app/.gitignore
+++ b/app/.gitignore
@@ -22,4 +22,3 @@ dist-ssr
*.njsproj
*.sln
*.sw?
-.env
diff --git a/app/.prettierrc.json b/app/.prettierrc.json
deleted file mode 100644
index 0967ef4..0000000
--- a/app/.prettierrc.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/app/README.md b/app/README.md
index 5613fc8..dc20308 100644
--- a/app/README.md
+++ b/app/README.md
@@ -1,4 +1,22 @@
-# Install
+## Usage
-* First go to the `/js` directory in the root of the PMTiles repository and `npm install`
-* `npm run dev` to start the app on port 3000
\ No newline at end of file
+```bash
+$ npm install
+```
+
+## Available Scripts
+
+In the project directory, you can run:
+
+### `npm run dev`
+
+Runs the app in the development mode.
+Open [http://localhost:5173](http://localhost:5173) to view it in the browser.
+
+### `npm run build`
+
+Builds the app for production to the `dist` folder.
+It correctly bundles Solid in production mode and optimizes the build for the best performance.
+
+The build is minified and the filenames include the hashes.
+Your app is ready to be deployed!
\ No newline at end of file
diff --git a/app/archive/index.html b/app/archive/index.html
new file mode 100644
index 0000000..f5f2dfc
--- /dev/null
+++ b/app/archive/index.html
@@ -0,0 +1,17 @@
+
+
+
| {key} | ++ {typeof value === "boolean" + ? JSON.stringify(value) + : value.toString()} + | +
| tileid | -z | -x | -y | -offset | -length | -type | -
|---|
| {key} | -- {typeof value === "boolean" ? JSON.stringify(value) : value} - | -
| tileID | +z | +x | +y | +offset | +length | +runlength | +
|---|---|---|---|---|---|---|
| {e.tileId} | +{tileIdToZxy(e.tileId)[0]} | +{tileIdToZxy(e.tileId)[1]} | +{tileIdToZxy(e.tileId)[2]} | +
+ |
+ {e.length} | +
+ |
+
| Layout (bytes) | +offset | +length | +
|---|---|---|
| Root Dir | +{h().rootDirectoryOffset} | +{formatBytes(h().rootDirectoryLength)} | +
| Metadata | +{h().jsonMetadataOffset} | +{formatBytes(h().jsonMetadataLength)} | +
| Leaf Dirs | +{h().leafDirectoryOffset} | +{formatBytes(h().leafDirectoryLength || 0)} | +
| Tile Data | +{h().tileDataOffset} | +{formatBytes(h().tileDataLength || 0)} | +