diff --git a/.env.example b/.env.example
index b0d4ac0..4e1119c 100644
--- a/.env.example
+++ b/.env.example
@@ -3,6 +3,7 @@ BASE_URL=https://tomodachi-share.trafficlunar.net
NEXTAUTH_URL=https://tomodachi-share.trafficlunar.net # This should be the same as BASE_URL
AUTH_SECRET=XXXXXXXXXXXXXXXX
+AUTH_TRUST_HOST=true
AUTH_DISCORD_ID=XXXXXXXXXXXXXXXX
AUTH_DISCORD_SECRET=XXXXXXXXXXXXXXXX
diff --git a/public/missing.svg b/public/missing.svg
index dcc266c..b2edb48 100644
--- a/public/missing.svg
+++ b/public/missing.svg
@@ -1,23 +1 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts
new file mode 100644
index 0000000..31c1d52
--- /dev/null
+++ b/src/app/sitemap.ts
@@ -0,0 +1,77 @@
+import { prisma } from "@/lib/prisma";
+import type { MetadataRoute } from "next";
+
+type SitemapRoute = MetadataRoute.Sitemap[0];
+
+export default async function sitemap(): Promise {
+ const baseUrl = process.env.BASE_URL;
+ if (!baseUrl) {
+ console.error("BASE_URL environment variable missing");
+ return [];
+ }
+
+ const miis = await prisma.mii.findMany({
+ select: {
+ id: true,
+ createdAt: true,
+ },
+ });
+
+ const users = await prisma.user.findMany({
+ select: {
+ id: true,
+ updatedAt: true,
+ },
+ });
+
+ const dynamicRoutes: MetadataRoute.Sitemap = [
+ ...miis.map(
+ (mii) =>
+ ({
+ url: `${baseUrl}/mii/${mii.id}`,
+ lastModified: mii.createdAt,
+ changeFrequency: "weekly",
+ priority: 0.7,
+ } as SitemapRoute)
+ ),
+ ...users.map(
+ (user) =>
+ ({
+ url: `${baseUrl}/profile/${user.id}`,
+ lastModified: user.updatedAt,
+ changeFrequency: "weekly",
+ priority: 0.7,
+ } as SitemapRoute)
+ ),
+ ];
+
+ const lastModified = new Date();
+
+ return [
+ {
+ url: baseUrl,
+ lastModified,
+ changeFrequency: "always",
+ priority: 1,
+ },
+ {
+ url: `${baseUrl}/login`,
+ lastModified,
+ changeFrequency: "monthly",
+ priority: 0.6,
+ },
+ {
+ url: `${baseUrl}/privacy`,
+ lastModified,
+ changeFrequency: "yearly",
+ priority: 0.4,
+ },
+ {
+ url: `${baseUrl}/terms-of-service`,
+ lastModified,
+ changeFrequency: "yearly",
+ priority: 0.4,
+ },
+ ...dynamicRoutes,
+ ];
+}