Reorganize public folder to better handle static assets, no-cache index

zikaeroh created

Change summary

frontend/public/favicon/android-chrome-192x192.png |  0 
frontend/public/favicon/android-chrome-512x512.png |  0 
frontend/public/favicon/apple-touch-icon.png       |  0 
frontend/public/favicon/browserconfig.xml          |  2 
frontend/public/favicon/favicon-16x16.png          |  0 
frontend/public/favicon/favicon-32x32.png          |  0 
frontend/public/favicon/favicon.ico                |  0 
frontend/public/favicon/mstile-150x150.png         |  0 
frontend/public/favicon/safari-pinned-tab.svg      |  0 
frontend/public/index.html                         | 15 +++++----
frontend/public/logo192.png                        |  0 
frontend/public/logo512.png                        |  0 
frontend/public/manifest.json                      |  9 +++--
main.go                                            | 25 ++++++++++++---
14 files changed, 33 insertions(+), 18 deletions(-)

Detailed changes

frontend/public/browserconfig.xml → frontend/public/favicon/browserconfig.xml 🔗

@@ -2,7 +2,7 @@
 <browserconfig>
     <msapplication>
         <tile>
-            <square150x150logo src="/mstile-150x150.png"/>
+            <square150x150logo src="/favicon/mstile-150x150.png"/>
             <TileColor>#00aba9</TileColor>
         </tile>
     </msapplication>

frontend/public/index.html 🔗

@@ -3,15 +3,16 @@
     <head>
         <meta charset="utf-8" />
         <meta name="viewport" content="width=device-width, initial-scale=1" />
-        <meta name="theme-color" content="#000000" />
-        <meta name="description" content="Codenames, on the web." />
+        <meta name="description" content="Codenames, in the browser." />
 
-        <link rel="apple-touch-icon" sizes="180x180" href="%PUBLIC_URL%/apple-touch-icon.png" />
-        <link rel="icon" type="image/png" sizes="32x32" href="%PUBLIC_URL%/favicon-32x32.png" />
-        <link rel="icon" type="image/png" sizes="16x16" href="%PUBLIC_URL%/favicon-16x16.png" />
-        <link rel="manifest" href="%PUBLIC_URL%/site.webmanifest" />
-        <link rel="mask-icon" href="%PUBLIC_URL%/safari-pinned-tab.svg" color="#5bbad5" />
+        <link rel="apple-touch-icon" sizes="180x180" href="%PUBLIC_URL%/favicon/apple-touch-icon.png" />
+        <link rel="icon" type="image/png" sizes="32x32" href="%PUBLIC_URL%/favicon/favicon-32x32.png" />
+        <link rel="icon" type="image/png" sizes="16x16" href="%PUBLIC_URL%/favicon/favicon-16x16.png" />
+        <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
+        <link rel="mask-icon" href="%PUBLIC_URL%/favicon/safari-pinned-tab.svg" color="#5bbad5" />
+        <link rel="shortcut icon" href="%PUBLIC_URL%/favicon/favicon.ico" />
         <meta name="msapplication-TileColor" content="#00aba9" />
+        <meta name="msapplication-config" content="%PUBLIC_URL%/favicon/browserconfig.xml" />
         <meta name="theme-color" content="#ffffff" />
 
         <title>Codies</title>

frontend/public/site.webmanifest → frontend/public/manifest.json 🔗

@@ -1,18 +1,19 @@
 {
-    "name": "",
-    "short_name": "",
+    "short_name": "Codies",
+    "name": "Codies",
     "icons": [
         {
-            "src": "/android-chrome-192x192.png",
+            "src": "/favicon/android-chrome-192x192.png",
             "sizes": "192x192",
             "type": "image/png"
         },
         {
-            "src": "/android-chrome-512x512.png",
+            "src": "/favicon/android-chrome-512x512.png",
             "sizes": "512x512",
             "type": "image/png"
         }
     ],
+    "start_url": ".",
     "theme_color": "#ffffff",
     "background_color": "#ffffff",
     "display": "standalone"

main.go 🔗

@@ -58,12 +58,7 @@ func main() {
 	r := chi.NewMux()
 	r.Use(middleware.Heartbeat("/ping"))
 	r.Use(middleware.Recoverer)
-
-	r.Group(func(r chi.Router) {
-		r.Use(middleware.Compress(5))
-		fs := http.Dir("./frontend/build")
-		r.NotFound(http.FileServer(fs).ServeHTTP)
-	})
+	r.NotFound(staticRouter().ServeHTTP)
 
 	r.Group(func(r chi.Router) {
 		r.Use(middleware.NoCache)
@@ -204,6 +199,24 @@ func main() {
 	log.Fatal(g.Wait())
 }
 
+func staticRouter() http.Handler {
+	fs := http.Dir("./frontend/build")
+	fsh := http.FileServer(fs)
+
+	r := chi.NewMux()
+	r.Use(middleware.Compress(5))
+
+	r.Handle("/static/*", fsh)
+	r.Handle("/favicon/*", fsh)
+
+	r.Group(func(r chi.Router) {
+		r.Use(middleware.NoCache)
+		r.Handle("/*", fsh)
+	})
+
+	return r
+}
+
 func httpErr(w http.ResponseWriter, code int) {
 	http.Error(w, http.StatusText(code), code)
 }