chore(seo): add meta tags and web manifest
+ 93
- 0
@@ -83,11 +83,82 @@ async function main(): Promise<AppServer> {
       prismjs: "Prism",
     },
     baseHeadTags: [
+      {
+        kind: "link",
+        rel: "manifest",
+        href: "/manifest.json",
+      },
+      {
+        kind: "meta",
+        name: "shortcut icon",
+        content: "/public/favicon.ico",
+      },
+      {
+        kind: "meta",
+        name: "viewport",
+        content:
+          "minimum-scale=1, initial-scale=1, width=device-width, shrink-to-fit=no, user-scalable=no, viewport-fit=cover",
+      },
+      {
+        kind: "meta",
+        name: "mobile-web-app-capable",
+        content: "yes",
+      },
+      {
+        kind: "meta",
+        name: "apple-mobile-web-app-capable",
+        content: "yes",
+      },
+      {
+        kind: "meta",
+        name: "apple-mobile-web-app-status-bar-style",
+        content: "default",
+      },
+      {
+        kind: "meta",
+        name: "format-detection",
+        content: "telephone=no",
+      },
+      {
+        kind: "meta",
+        name: "apple-mobile-web-app-title",
+        content: Const.APP_NAME,
+      },
+      {
+        kind: "meta",
+        name: "og:type",
+        content: "website",
+      },
       {
         kind: "meta",
         name: "og:site_name",
         content: Const.APP_NAME,
       },
+      {
+        kind: "meta",
+        name: "og:title",
+        content: Const.APP_NAME,
+      },
+      {
+        kind: "meta",
+        name: "og:image",
+        content: `${Env.DEPLOYMENT_SCHEME}://${Env.DEPLOYMENT_DOMAIN}/public/assets/social-icon.png`,
+      },
+      {
+        kind: "meta",
+        name: "twitter:card",
+        content: "summary",
+      },
+      {
+        kind: "meta",
+        name: "twitter:title",
+        content: Const.APP_NAME,
+      },
+      {
+        kind: "meta",
+        name: "twitter:image",
+        content: `${Env.DEPLOYMENT_SCHEME}://${Env.DEPLOYMENT_DOMAIN}/public/assets/social-icon-192.png`,
+      },
     ],
     baseScriptTags: [
       // add ES Module shim as long as browsers (firefox) not all supports it

new file
public/manifest.json
@@ -0,0 +1,22 @@
+{
+  "name": "GitFOSS",
+  "short_name": "GitFOSS",
+  "start_url": "/",
+  "icons": [
+    {
+      "src": "/public/assets/social-icon-192.png",
+      "sizes": "192x192",
+      "type": "image/png",
+      "purpose": "any maskable"
+    },
+    {
+      "src": "/public/assets/social-icon.png",
+      "sizes": "512x512",
+      "type": "image/png"
+    }
+  ],
+  "display": "standalone",
+  "orientation": "portrait",
+  "theme_color": "#1B8F97",
+  "background_color": "#111111"
+}