diff --git a/internal/webserver/static/pwa/icon-583x583.png b/internal/webserver/static/pwa/icon-583x583.png
new file mode 100644
index 0000000..7091f5f
Binary files /dev/null and b/internal/webserver/static/pwa/icon-583x583.png differ
diff --git a/internal/webserver/static/pwa/manifest.json b/internal/webserver/static/pwa/manifest.json
new file mode 100644
index 0000000..67c20d5
--- /dev/null
+++ b/internal/webserver/static/pwa/manifest.json
@@ -0,0 +1,13 @@
+{
+ "name": "Offline Twitter - A privacy-focused client for Twitter",
+ "short_name": "Offline Twitter",
+ "start_url": ".",
+ "display": "standalone",
+ "icons": [
+ {
+ "src": "/static/pwa/icon-583x583.png",
+ "sizes": "583x583",
+ "type": "image/png"
+ }
+ ]
+}
diff --git a/internal/webserver/static/pwa/service-worker.js b/internal/webserver/static/pwa/service-worker.js
new file mode 100644
index 0000000..d2cc41e
--- /dev/null
+++ b/internal/webserver/static/pwa/service-worker.js
@@ -0,0 +1,12 @@
+self.addEventListener('install', function(event) {
+ // Skip caching step during installation
+});
+
+self.addEventListener('activate', function(event) {
+ // Do nothing special during activation
+});
+
+self.addEventListener('fetch', function(event) {
+ // Bypass the service worker for network requests
+ event.respondWith(fetch(event.request));
+});
diff --git a/internal/webserver/tpl/includes/author_info.tpl b/internal/webserver/tpl/includes/author_info.tpl
index bae0b98..b3c22a8 100644
--- a/internal/webserver/tpl/includes/author_info.tpl
+++ b/internal/webserver/tpl/includes/author_info.tpl
@@ -15,7 +15,7 @@
{{.DisplayName}}
{{if .IsPrivate}}
-

+
{{end}}
diff --git a/internal/webserver/tpl/includes/base.tpl b/internal/webserver/tpl/includes/base.tpl
index 5c01b04..e447ecd 100644
--- a/internal/webserver/tpl/includes/base.tpl
+++ b/internal/webserver/tpl/includes/base.tpl
@@ -7,13 +7,26 @@
+
+
+
+
diff --git a/internal/webserver/tpl/includes/nav_sidebar.tpl b/internal/webserver/tpl/includes/nav_sidebar.tpl
index d35d1a4..f7797d7 100644
--- a/internal/webserver/tpl/includes/nav_sidebar.tpl
+++ b/internal/webserver/tpl/includes/nav_sidebar.tpl
@@ -3,71 +3,71 @@
{{template "author-info" active_user}}
-

+
-
-
+
Home
-
-
+
Explore
-
-
+
Notifications
{{if (not (eq (active_user).Handle "[nobody]"))}}
-
-
+
Messages
{{end}}
-
-
+
Lists
-
-
+
Bookmarks
-
-
+
Communities
-
-
+
Verified
{{if (not (eq (active_user).Handle "[nobody]"))}}
-
-
+
Profile
{{end}}
-
-
+
More
diff --git a/internal/webserver/tpl/includes/user_header.tpl b/internal/webserver/tpl/includes/user_header.tpl
index 1c6e26b..323bbef 100644
--- a/internal/webserver/tpl/includes/user_header.tpl
+++ b/internal/webserver/tpl/includes/user_header.tpl
@@ -18,18 +18,18 @@
{{if .Location}}
-

+
{{.Location}}
{{end}}
{{if .Website}}
{{end}}
-

+
{{.JoinDate.Time.Format "Jan 2, 2006"}}
@@ -47,10 +47,10 @@
diff --git a/internal/webserver/tpl/tweet_page_includes/chat_list_entry.tpl b/internal/webserver/tpl/tweet_page_includes/chat_list_entry.tpl
index 467d77e..3772e37 100644
--- a/internal/webserver/tpl/tweet_page_includes/chat_list_entry.tpl
+++ b/internal/webserver/tpl/tweet_page_includes/chat_list_entry.tpl
@@ -13,7 +13,7 @@
{{end}}
{{else}}
-

+
{{$room.Name}}
{{end}}
diff --git a/internal/webserver/tpl/tweet_page_includes/chat_view.tpl b/internal/webserver/tpl/tweet_page_includes/chat_view.tpl
index de1b6b8..36f0154 100644
--- a/internal/webserver/tpl/tweet_page_includes/chat_view.tpl
+++ b/internal/webserver/tpl/tweet_page_includes/chat_view.tpl
@@ -18,7 +18,7 @@
{{if (ne $message.InReplyToID 0)}}
-

+
Replying to
diff --git a/internal/webserver/tpl/tweet_page_includes/single_tweet.tpl b/internal/webserver/tpl/tweet_page_includes/single_tweet.tpl
index 8bb240d..ee9a22f 100644
--- a/internal/webserver/tpl/tweet_page_includes/single_tweet.tpl
+++ b/internal/webserver/tpl/tweet_page_includes/single_tweet.tpl
@@ -14,7 +14,7 @@
{{$retweet := (retweet .RetweetID)}}
{{$retweet_user := (user $retweet.RetweetedByID)}}