diff --git a/website/astro.config.mjs b/website/astro.config.mjs
index 39e6271..c670e7f 100644
--- a/website/astro.config.mjs
+++ b/website/astro.config.mjs
@@ -1,11 +1,15 @@
import { defineConfig } from 'astro/config'
+import sitemap from '@astrojs/sitemap';
+
// https://astro.build/config
export default defineConfig({
+ site: 'https://openfreemap.org',
vite: {
css: {
transformer: 'lightningcss',
},
},
+ integrations: [sitemap()],
})
diff --git a/website/package.json b/website/package.json
index a3b4d34..2bf7176 100644
--- a/website/package.json
+++ b/website/package.json
@@ -10,6 +10,7 @@
"astro": "astro"
},
"dependencies": {
+ "@astrojs/sitemap": "^3.2.1",
"astro": "^5.4.0",
"lightningcss": "^1.29.1"
},
diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml
index 208095e..2f6ced3 100644
--- a/website/pnpm-lock.yaml
+++ b/website/pnpm-lock.yaml
@@ -8,6 +8,9 @@ importers:
.:
dependencies:
+ '@astrojs/sitemap':
+ specifier: ^3.2.1
+ version: 3.2.1
astro:
specifier: ^5.4.0
version: 5.4.0(lightningcss@1.29.1)(rollup@4.34.8)(typescript@5.6.2)
@@ -30,6 +33,9 @@ packages:
resolution: {integrity: sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==}
engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0}
+ '@astrojs/sitemap@3.2.1':
+ resolution: {integrity: sha512-uxMfO8f7pALq0ADL6Lk68UV6dNYjJ2xGUzyjjVj60JLBs5a6smtlkBYv3tQ0DzoqwS7c9n4FUx5lgv0yPo/fgA==}
+
'@astrojs/telemetry@3.2.0':
resolution: {integrity: sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==}
engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0}
@@ -461,6 +467,12 @@ packages:
'@types/nlcst@2.0.3':
resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
+ '@types/node@17.0.45':
+ resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
+
+ '@types/sax@1.2.7':
+ resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==}
+
'@types/unist@3.0.3':
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
@@ -491,6 +503,9 @@ packages:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
+ arg@5.0.2:
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+
argparse@1.0.10:
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
@@ -1212,6 +1227,9 @@ packages:
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
+ sax@1.4.1:
+ resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
+
semver@7.7.1:
resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
engines: {node: '>=10'}
@@ -1230,6 +1248,11 @@ packages:
sisteransi@1.0.5:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
+ sitemap@8.0.0:
+ resolution: {integrity: sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==}
+ engines: {node: '>=14.0.0', npm: '>=6.0.0'}
+ hasBin: true
+
smol-toml@1.3.1:
resolution: {integrity: sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==}
engines: {node: '>= 18'}
@@ -1244,6 +1267,9 @@ packages:
sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+ stream-replace-string@2.0.0:
+ resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==}
+
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -1552,6 +1578,12 @@ snapshots:
dependencies:
prismjs: 1.29.0
+ '@astrojs/sitemap@3.2.1':
+ dependencies:
+ sitemap: 8.0.0
+ stream-replace-string: 2.0.0
+ zod: 3.24.2
+
'@astrojs/telemetry@3.2.0':
dependencies:
ci-info: 4.1.0
@@ -1858,6 +1890,12 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
+ '@types/node@17.0.45': {}
+
+ '@types/sax@1.2.7':
+ dependencies:
+ '@types/node': 17.0.45
+
'@types/unist@3.0.3': {}
'@ungap/structured-clone@1.3.0': {}
@@ -1879,6 +1917,8 @@ snapshots:
normalize-path: 3.0.0
picomatch: 2.3.1
+ arg@5.0.2: {}
+
argparse@1.0.10:
dependencies:
sprintf-js: 1.0.3
@@ -2942,6 +2982,8 @@ snapshots:
'@rollup/rollup-win32-x64-msvc': 4.34.8
fsevents: 2.3.3
+ sax@1.4.1: {}
+
semver@7.7.1: {}
sharp@0.33.5:
@@ -2989,6 +3031,13 @@ snapshots:
sisteransi@1.0.5: {}
+ sitemap@8.0.0:
+ dependencies:
+ '@types/node': 17.0.45
+ '@types/sax': 1.2.7
+ arg: 5.0.2
+ sax: 1.4.1
+
smol-toml@1.3.1: {}
source-map-js@1.2.1: {}
@@ -2997,6 +3046,8 @@ snapshots:
sprintf-js@1.0.3: {}
+ stream-replace-string@2.0.0: {}
+
string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
diff --git a/website/public/robots.txt b/website/public/robots.txt
new file mode 100644
index 0000000..bb55f95
--- /dev/null
+++ b/website/public/robots.txt
@@ -0,0 +1,4 @@
+User-agent: *
+Allow: /
+
+Sitemap: https://openfreemap.org/sitemap-index.xml
diff --git a/website/src/layouts/Layout.astro b/website/src/layouts/Layout.astro
index 678fd5a..596fd3d 100644
--- a/website/src/layouts/Layout.astro
+++ b/website/src/layouts/Layout.astro
@@ -25,6 +25,7 @@ import '../styles/_style.css'
+