diff --git a/lib/aprs_web/live/map_live/callsign_view.ex b/lib/aprs_web/live/map_live/callsign_view.ex
index 3c8b5fc..241d2e6 100644
--- a/lib/aprs_web/live/map_live/callsign_view.ex
+++ b/lib/aprs_web/live/map_live/callsign_view.ex
@@ -595,7 +595,8 @@ defmodule AprsWeb.MapLive.CallsignView do
+ <.link
+ navigate={~p"/#{String.downcase(@callsign)}"}
+ class="text-blue-600 hover:text-blue-800 underline"
+ >
+ ← View {@callsign} on Map
+
+
+
+ <.table id="callsign-packets" rows={@all_packets}>
+ <:col :let={packet} label="Time">
+
+
No packets found for {@callsign}
+
+ Packets will appear here as they are received live or if there are stored packets for this callsign.
+
+
+ <% end %>
+
+
+
+ Live packets: {length(@live_packets)} |
+ Stored packets: {length(@packets)} |
+ Total: {length(@all_packets)}/100
+
+
+<% end %>
diff --git a/lib/aprs_web/live/packets_live/index.html.heex b/lib/aprs_web/live/packets_live/index.html.heex
index 0b7cb15..688ecfe 100644
--- a/lib/aprs_web/live/packets_live/index.html.heex
+++ b/lib/aprs_web/live/packets_live/index.html.heex
@@ -3,9 +3,23 @@
<.table id="packets" rows={@packets}>
- <:col :let={packet} label="sender">{packet.sender}
+ <:col :let={packet} label="sender">
+ <.link
+ navigate={~p"/packets/#{packet.base_callsign}"}
+ class="text-blue-600 hover:text-blue-800 underline"
+ >
+ {packet.sender}
+
+
<:col :let={packet} label="ssid">{packet.ssid}
- <:col :let={packet} label="base_callsign">{packet.base_callsign}
+ <:col :let={packet} label="base_callsign">
+ <.link
+ navigate={~p"/packets/#{packet.base_callsign}"}
+ class="text-blue-600 hover:text-blue-800 underline"
+ >
+ {packet.base_callsign}
+
+
<:col :let={packet} label="data_type">{packet.data_type}
<:col :let={packet} label="destination">{packet.destination}
<:col :let={packet} label="information_field">{packet.information_field}
diff --git a/lib/aprs_web/router.ex b/lib/aprs_web/router.ex
index 12e9015..3b36dcf 100644
--- a/lib/aprs_web/router.ex
+++ b/lib/aprs_web/router.ex
@@ -33,6 +33,7 @@ defmodule AprsWeb.Router do
live "/status", StatusLive.Index, :index
live "/packets", PacketsLive.Index, :index
+ live "/packets/:callsign", PacketsLive.CallsignView, :index
live "/:callsign", MapLive.CallsignView, :index
end