From 9c62dff15ee4082f2181fef3ec44dea7b51829d4 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Wed, 1 Oct 2025 08:12:50 -0700 Subject: [PATCH] Make a nice splash page --- static/flotilla.png | Bin 0 -> 31032 bytes static/logo.png | Bin 0 -> 20524 bytes templates/index.html | 182 ++++++++++++++++++++++++++++++++++++++++++- zooid/instance.go | 5 ++ 4 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 static/flotilla.png create mode 100644 static/logo.png diff --git a/static/flotilla.png b/static/flotilla.png new file mode 100644 index 0000000000000000000000000000000000000000..79448344bea5e337a58a7f0eeea481903376292d GIT binary patch literal 31032 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 S4M!08cl@Zyk(@)0xBd?>58-tH literal 0 HcmV?d00001 diff --git a/static/logo.png b/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..13affd0541af13312c3c212123fa2b7d4dd0948a GIT binary patch literal 20524 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 literal 0 HcmV?d00001 diff --git a/templates/index.html b/templates/index.html index 45b983b..e571dc7 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1 +1,181 @@ -hi + + + + + + Zooid Relay + + + + +
+

Zooid Relay

+

Connect to this relay using your favorite Nostr app.

+ + + Flotilla + Open Flotilla + + +
+
WebSocket relay endpoint
+
+ wss://... + +
+
+
+ +
Copied to clipboard!
+ + + + diff --git a/zooid/instance.go b/zooid/instance.go index b24fa61..2003c82 100644 --- a/zooid/instance.go +++ b/zooid/instance.go @@ -87,6 +87,9 @@ func MakeInstance(filename string) (*Instance, error) { instance.Relay.RejectConnection = instance.RejectConnection instance.Relay.PreventBroadcast = instance.PreventBroadcast + // Todo: when there's a new version of khatru + // instance.Relay.StartExpirationManager() + // HTTP request handling router := instance.Relay.Router() @@ -95,6 +98,8 @@ func MakeInstance(filename string) (*Instance, error) { http.ServeFile(w, r, "templates/index.html") }) + router.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static")))) + // Initialize stuff if err := instance.Events.Init(); err != nil {