<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Silent Signal</title>
    <link>https://silent-signal.netlify.app/</link>
    <description>Recent content on Silent Signal</description>
    <generator>Hugo -- 0.159.1</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 02 Oct 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://silent-signal.netlify.app/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>AI Defense Hub</title>
      <link>https://silent-signal.netlify.app/ai-defense/</link>
      <pubDate>Thu, 02 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://silent-signal.netlify.app/ai-defense/</guid>
      <description>Learn, interact, and protect yourself from harmful AI</description>
    </item>
    <item>
      <title>Incident Tracker</title>
      <link>https://silent-signal.netlify.app/incident-tracker/</link>
      <pubDate>Sat, 26 Jul 2025 12:00:00 +0000</pubDate>
      <guid>https://silent-signal.netlify.app/incident-tracker/</guid>
      <description>&lt;div id=&#34;map&#34; style=&#34;height: 500px;&#34;&gt;&lt;/div&gt;
&lt;form id=&#34;incident-form&#34; style=&#34;margin-top:10px;&#34;&gt;
  &lt;label&gt;Type: 
    &lt;select id=&#34;type&#34; required&gt;
      &lt;option value=&#34;Protest&#34;&gt;Protest&lt;/option&gt;
      &lt;option value=&#34;Police Action&#34;&gt;Police Action&lt;/option&gt;
      &lt;option value=&#34;Unrest&#34;&gt;Unrest&lt;/option&gt;
      &lt;option value=&#34;Other&#34;&gt;Other&lt;/option&gt;
    &lt;/select&gt;
  &lt;/label&gt;&lt;br&gt;
  &lt;label&gt;Description:&lt;br&gt;
    &lt;textarea id=&#34;description&#34; rows=&#34;3&#34; required&gt;&lt;/textarea&gt;
  &lt;/label&gt;&lt;br&gt;
  &lt;label&gt;Latitude: &lt;input type=&#34;number&#34; id=&#34;lat&#34; step=&#34;0.0001&#34; required&gt;&lt;/label&gt;
  &lt;label&gt;Longitude: &lt;input type=&#34;number&#34; id=&#34;lng&#34; step=&#34;0.0001&#34; required&gt;&lt;/label&gt;&lt;br&gt;
  &lt;button type=&#34;submit&#34;&gt;Submit Incident&lt;/button&gt;
&lt;/form&gt;
&lt;link rel=&#34;stylesheet&#34; href=&#34;https://unpkg.com/leaflet/dist/leaflet.css&#34;/&gt;
&lt;script src=&#34;https://unpkg.com/leaflet/dist/leaflet.js&#34;&gt;&lt;/script&gt;
&lt;script&gt;
  const map = L.map(&#39;map&#39;).setView([-1.2921, 36.8219], 7); // Nairobi

  L.tileLayer(&#39;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&#39;, {
    maxZoom: 18
  }).addTo(map);

  async function loadIncidents() {
    const res = await fetch(&#39;http://localhost:4000/api/incidents&#39;); // Change if backend runs elsewhere
    const incidents = await res.json();
    incidents.forEach(incident =&gt; {
      L.marker([incident.lat, incident.lng]).addTo(map)
        .bindPopup(`&lt;b&gt;${incident.type}&lt;/b&gt;&lt;br&gt;${incident.description}`);
    });
  }

  loadIncidents();

  document.getElementById(&#39;incident-form&#39;).addEventListener(&#39;submit&#39;, async e =&gt; {
    e.preventDefault();
    const type = document.getElementById(&#39;type&#39;).value;
    const description = document.getElementById(&#39;description&#39;).value;
    const lat = parseFloat(document.getElementById(&#39;lat&#39;).value);
    const lng = parseFloat(document.getElementById(&#39;lng&#39;).value);

    const res = await fetch(&#39;http://localhost:4000/api/incidents&#39;, {
      method: &#39;POST&#39;,
      headers: { &#39;Content-Type&#39;: &#39;application/json&#39; },
      body: JSON.stringify({ lat, lng, type, description })
    });

    if (res.ok) {
      alert(&#39;Incident submitted and pending review.&#39;);
      e.target.reset();
    } else {
      alert(&#39;Failed to submit incident.&#39;);
    }
  });
&lt;/script&gt;</description>
    </item>
    <item>
      <title>About Silent Signal</title>
      <link>https://silent-signal.netlify.app/about/</link>
      <pubDate>Thu, 24 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://silent-signal.netlify.app/about/</guid>
      <description>Why Silent Signal exists. What we protect. Who we serve.</description>
    </item>
    <item>
      <title>AI Whisper</title>
      <link>https://silent-signal.netlify.app/ai-whisper/</link>
      <pubDate>Thu, 24 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://silent-signal.netlify.app/ai-whisper/</guid>
      <description>Private AI assistant for whistleblowers and civic writers</description>
    </item>
    <item>
      <title>Defense</title>
      <link>https://silent-signal.netlify.app/defense/</link>
      <pubDate>Thu, 24 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://silent-signal.netlify.app/defense/</guid>
      <description>Strategic protections and algorithms that power Silent Signal</description>
    </item>
    <item>
      <title>Verify Hash</title>
      <link>https://silent-signal.netlify.app/verify-hash/</link>
      <pubDate>Thu, 24 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://silent-signal.netlify.app/verify-hash/</guid>
      <description>Confirm your civic submission was received and unchanged</description>
    </item>
    <item>
      <title></title>
      <link>https://silent-signal.netlify.app/keys/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://silent-signal.netlify.app/keys/</guid>
      <description>&lt;h2 id=&#34;-download-key&#34;&gt;📄 Download Key&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://silent-signal.netlify.app/silent-signal.asc&#34;&gt;Download &lt;code&gt;silent-signal.asc&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;-import-with-gnupg&#34;&gt;📥 Import with GnuPG&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gpg --import silent-signal.asc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Ghost Chat</title>
      <link>https://silent-signal.netlify.app/ghost-chat/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://silent-signal.netlify.app/ghost-chat/</guid>
      <description></description>
    </item>
  </channel>
</rss>
