Skip to content

Repository files navigation

SafeRelay

Evidence-scoped emergency mesh operations, built entirely with Jac.

SafeRelay's active web console monitors source-backed public hazard records and preserves explicit unknown states for relay reports, receipts, responder acknowledgements, and outcomes. It never substitutes generated operational records. Synthetic artifacts are allowed only inside clearly labeled map layers.

Created by Jerry Wen, Rishabh Bansal, and Aditya Das for the Alameda County Hackathon 2025.

The web console is not an emergency dispatch service. An empty evidence state stays empty until a real source record exists.

Why Jac

SafeRelay uses Jac 0.34.7 as the full application runtime:

  • One language: backend logic, graph schema, tests, routes, and JSX-like client components are all Jac.
  • Graph persistence: verified source records attach to the shared public Jac root.
  • Typed public RPC:def:pub functions become anonymous, client-callable endpoints with generated types.
  • One runtime:jac start builds the client and serves the UI, APIs, and graph state together.
  • Live public feeds: USGS earthquake and NWS severe-weather refreshes run on the Jac server with bounded timeouts. Failed refreshes retain verified cached records or report unavailable; they never create continuity examples.
  • Mobile cloud relay: anonymous mobile clients can health-check and submit a validated, idempotent signal to the shared Jac cloud graph. Each receipt is evidence of server storage, not responder acknowledgement.

Run It

Install Jac and then:

export PROMETHEUS_ADMIN_PASSWORD="$(openssl rand -base64 32)"export MAPBOX_ACCESS_TOKEN="<public Mapbox token>"
jac install
jac start --dev main.jac

Open:

No database, JavaScript build command, or Supabase project is required for a single-replica deployment. The incident map uses a public Mapbox access token from MAPBOX_ACCESS_TOKEN. Its synthetic markers are visibly labeled map artifacts and are never included in operational counts or evidence.

Verify It

jac check .
jac test
jac build main.jac

The test suite verifies cloud health, validated idempotent mobile ingestion, honest empty source states, and legacy generated-record removal. See PARITY.md.

Architecture

flowchart LR
UI["Jac client components"] --> RPC["Typed public RPC"]
MOBILE["SafeRelay mobile"] --> RELAY["Public Jac signal ingestion"]
RELAY --> SHARED["Shared cloud signal graph"]
RPC --> ROOT["Shared public root graph"]
ROOT --> CACHE["Verified source cache"]
CACHE --> USGS["USGS earthquake records"]
CACHE --> NWS["NWS severe-weather records"]
UI --> MAP["Clearly labeled map artifacts"]
Loading

The former drill engine and its generated incident records are not part of the web runtime.

Source Layout

main.jac Application entry point and client export
saferelay/store.jac Verified source cache and public endpoints
saferelay/store_test.jac Evidence-boundary tests
saferelay/AppShell.jac Public client router
saferelay/LandingPage.jac Public experience
saferelay/VerifiedCommandCenter.jac Active evidence monitor
styles/global.css Responsive application styling
jac.toml Jac runtime, client, and test configuration
PRODUCTION.md Production and JacHammer runbook
PARITY.md Old-to-Jac functional parity contract

Public Contract

SurfacePurpose
get_disaster_feedRead only cached USGS/NWS source records
refresh_disaster_feedRefresh USGS/NWS without generated fallback records

All four endpoints are public. Hazard records and anonymous mobile relay signals use the shared Jac graph. Ingestion validates bounds, deduplicates by message ID, stores an unverified mobile report, and never claims responder action. See PRODUCTION.md for deployment and acceptance gates.

License

Copyright (c) 2025 SafeRelay Team. All Rights Reserved.

This is proprietary software. No copying, modification, distribution, or resubmission to hackathons is permitted without explicit written permission. See LICENSE for the full terms.

About

Web-only JacHammer deployment source for SafeRelay

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - rishabhcli/SafeRelay-web: Web-only JacHammer deployment source for SafeRelay · GitHub
Skip to content

Repository files navigation

SafeRelay

Evidence-scoped emergency mesh operations, built entirely with Jac.

SafeRelay's active web console monitors source-backed public hazard records and preserves explicit unknown states for relay reports, receipts, responder acknowledgements, and outcomes. It never substitutes generated operational records. Synthetic artifacts are allowed only inside clearly labeled map layers.

Created by Jerry Wen, Rishabh Bansal, and Aditya Das for the Alameda County Hackathon 2025.

The web console is not an emergency dispatch service. An empty evidence state stays empty until a real source record exists.

Why Jac

SafeRelay uses Jac 0.34.7 as the full application runtime:

  • One language: backend logic, graph schema, tests, routes, and JSX-like client components are all Jac.
  • Graph persistence: verified source records attach to the shared public Jac root.
  • Typed public RPC:def:pub functions become anonymous, client-callable endpoints with generated types.
  • One runtime:jac start builds the client and serves the UI, APIs, and graph state together.
  • Live public feeds: USGS earthquake and NWS severe-weather refreshes run on the Jac server with bounded timeouts. Failed refreshes retain verified cached records or report unavailable; they never create continuity examples.
  • Mobile cloud relay: anonymous mobile clients can health-check and submit a validated, idempotent signal to the shared Jac cloud graph. Each receipt is evidence of server storage, not responder acknowledgement.

Run It

Install Jac and then:

export PROMETHEUS_ADMIN_PASSWORD="$(openssl rand -base64 32)"export MAPBOX_ACCESS_TOKEN="<public Mapbox token>"
jac install
jac start --dev main.jac

Open:

No database, JavaScript build command, or Supabase project is required for a single-replica deployment. The incident map uses a public Mapbox access token from MAPBOX_ACCESS_TOKEN. Its synthetic markers are visibly labeled map artifacts and are never included in operational counts or evidence.

Verify It

jac check .
jac test
jac build main.jac

The test suite verifies cloud health, validated idempotent mobile ingestion, honest empty source states, and legacy generated-record removal. See PARITY.md.

Architecture

flowchart LR
UI["Jac client components"] --> RPC["Typed public RPC"]
MOBILE["SafeRelay mobile"] --> RELAY["Public Jac signal ingestion"]
RELAY --> SHARED["Shared cloud signal graph"]
RPC --> ROOT["Shared public root graph"]
ROOT --> CACHE["Verified source cache"]
CACHE --> USGS["USGS earthquake records"]
CACHE --> NWS["NWS severe-weather records"]
UI --> MAP["Clearly labeled map artifacts"]
Loading

The former drill engine and its generated incident records are not part of the web runtime.

Source Layout

main.jac Application entry point and client export
saferelay/store.jac Verified source cache and public endpoints
saferelay/store_test.jac Evidence-boundary tests
saferelay/AppShell.jac Public client router
saferelay/LandingPage.jac Public experience
saferelay/VerifiedCommandCenter.jac Active evidence monitor
styles/global.css Responsive application styling
jac.toml Jac runtime, client, and test configuration
PRODUCTION.md Production and JacHammer runbook
PARITY.md Old-to-Jac functional parity contract

Public Contract

SurfacePurpose
get_disaster_feedRead only cached USGS/NWS source records
refresh_disaster_feedRefresh USGS/NWS without generated fallback records

All four endpoints are public. Hazard records and anonymous mobile relay signals use the shared Jac graph. Ingestion validates bounds, deduplicates by message ID, stores an unverified mobile report, and never claims responder action. See PRODUCTION.md for deployment and acceptance gates.

License

Copyright (c) 2025 SafeRelay Team. All Rights Reserved.

This is proprietary software. No copying, modification, distribution, or resubmission to hackathons is permitted without explicit written permission. See LICENSE for the full terms.

About

Web-only JacHammer deployment source for SafeRelay

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - rishabhcli/SafeRelay-web: Web-only JacHammer deployment source for SafeRelay · GitHub
Skip to content

Repository files navigation

SafeRelay

Evidence-scoped emergency mesh operations, built entirely with Jac.

SafeRelay's active web console monitors source-backed public hazard records and preserves explicit unknown states for relay reports, receipts, responder acknowledgements, and outcomes. It never substitutes generated operational records. Synthetic artifacts are allowed only inside clearly labeled map layers.

Created by Jerry Wen, Rishabh Bansal, and Aditya Das for the Alameda County Hackathon 2025.

The web console is not an emergency dispatch service. An empty evidence state stays empty until a real source record exists.

Why Jac

SafeRelay uses Jac 0.34.7 as the full application runtime:

  • One language: backend logic, graph schema, tests, routes, and JSX-like client components are all Jac.
  • Graph persistence: verified source records attach to the shared public Jac root.
  • Typed public RPC:def:pub functions become anonymous, client-callable endpoints with generated types.
  • One runtime:jac start builds the client and serves the UI, APIs, and graph state together.
  • Live public feeds: USGS earthquake and NWS severe-weather refreshes run on the Jac server with bounded timeouts. Failed refreshes retain verified cached records or report unavailable; they never create continuity examples.
  • Mobile cloud relay: anonymous mobile clients can health-check and submit a validated, idempotent signal to the shared Jac cloud graph. Each receipt is evidence of server storage, not responder acknowledgement.

Run It

Install Jac and then:

export PROMETHEUS_ADMIN_PASSWORD="$(openssl rand -base64 32)"export MAPBOX_ACCESS_TOKEN="<public Mapbox token>"
jac install
jac start --dev main.jac

Open:

No database, JavaScript build command, or Supabase project is required for a single-replica deployment. The incident map uses a public Mapbox access token from MAPBOX_ACCESS_TOKEN. Its synthetic markers are visibly labeled map artifacts and are never included in operational counts or evidence.

Verify It

jac check .
jac test
jac build main.jac

The test suite verifies cloud health, validated idempotent mobile ingestion, honest empty source states, and legacy generated-record removal. See PARITY.md.

Architecture

flowchart LR
UI["Jac client components"] --> RPC["Typed public RPC"]
MOBILE["SafeRelay mobile"] --> RELAY["Public Jac signal ingestion"]
RELAY --> SHARED["Shared cloud signal graph"]
RPC --> ROOT["Shared public root graph"]
ROOT --> CACHE["Verified source cache"]
CACHE --> USGS["USGS earthquake records"]
CACHE --> NWS["NWS severe-weather records"]
UI --> MAP["Clearly labeled map artifacts"]
Loading

The former drill engine and its generated incident records are not part of the web runtime.

Source Layout

main.jac Application entry point and client export
saferelay/store.jac Verified source cache and public endpoints
saferelay/store_test.jac Evidence-boundary tests
saferelay/AppShell.jac Public client router
saferelay/LandingPage.jac Public experience
saferelay/VerifiedCommandCenter.jac Active evidence monitor
styles/global.css Responsive application styling
jac.toml Jac runtime, client, and test configuration
PRODUCTION.md Production and JacHammer runbook
PARITY.md Old-to-Jac functional parity contract

Public Contract

SurfacePurpose
get_disaster_feedRead only cached USGS/NWS source records
refresh_disaster_feedRefresh USGS/NWS without generated fallback records

All four endpoints are public. Hazard records and anonymous mobile relay signals use the shared Jac graph. Ingestion validates bounds, deduplicates by message ID, stores an unverified mobile report, and never claims responder action. See PRODUCTION.md for deployment and acceptance gates.

License

Copyright (c) 2025 SafeRelay Team. All Rights Reserved.

This is proprietary software. No copying, modification, distribution, or resubmission to hackathons is permitted without explicit written permission. See LICENSE for the full terms.

About

Web-only JacHammer deployment source for SafeRelay

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - rishabhcli/SafeRelay-web: Web-only JacHammer deployment source for SafeRelay · GitHub
Skip to content

Repository files navigation

SafeRelay

Evidence-scoped emergency mesh operations, built entirely with Jac.

SafeRelay's active web console monitors source-backed public hazard records and preserves explicit unknown states for relay reports, receipts, responder acknowledgements, and outcomes. It never substitutes generated operational records. Synthetic artifacts are allowed only inside clearly labeled map layers.

Created by Jerry Wen, Rishabh Bansal, and Aditya Das for the Alameda County Hackathon 2025.

The web console is not an emergency dispatch service. An empty evidence state stays empty until a real source record exists.

Why Jac

SafeRelay uses Jac 0.34.7 as the full application runtime:

  • One language: backend logic, graph schema, tests, routes, and JSX-like client components are all Jac.
  • Graph persistence: verified source records attach to the shared public Jac root.
  • Typed public RPC:def:pub functions become anonymous, client-callable endpoints with generated types.
  • One runtime:jac start builds the client and serves the UI, APIs, and graph state together.
  • Live public feeds: USGS earthquake and NWS severe-weather refreshes run on the Jac server with bounded timeouts. Failed refreshes retain verified cached records or report unavailable; they never create continuity examples.
  • Mobile cloud relay: anonymous mobile clients can health-check and submit a validated, idempotent signal to the shared Jac cloud graph. Each receipt is evidence of server storage, not responder acknowledgement.

Run It

Install Jac and then:

export PROMETHEUS_ADMIN_PASSWORD="$(openssl rand -base64 32)"export MAPBOX_ACCESS_TOKEN="<public Mapbox token>"
jac install
jac start --dev main.jac

Open:

No database, JavaScript build command, or Supabase project is required for a single-replica deployment. The incident map uses a public Mapbox access token from MAPBOX_ACCESS_TOKEN. Its synthetic markers are visibly labeled map artifacts and are never included in operational counts or evidence.

Verify It

jac check .
jac test
jac build main.jac

The test suite verifies cloud health, validated idempotent mobile ingestion, honest empty source states, and legacy generated-record removal. See PARITY.md.

Architecture

flowchart LR
UI["Jac client components"] --> RPC["Typed public RPC"]
MOBILE["SafeRelay mobile"] --> RELAY["Public Jac signal ingestion"]
RELAY --> SHARED["Shared cloud signal graph"]
RPC --> ROOT["Shared public root graph"]
ROOT --> CACHE["Verified source cache"]
CACHE --> USGS["USGS earthquake records"]
CACHE --> NWS["NWS severe-weather records"]
UI --> MAP["Clearly labeled map artifacts"]
Loading

The former drill engine and its generated incident records are not part of the web runtime.

Source Layout

main.jac Application entry point and client export
saferelay/store.jac Verified source cache and public endpoints
saferelay/store_test.jac Evidence-boundary tests
saferelay/AppShell.jac Public client router
saferelay/LandingPage.jac Public experience
saferelay/VerifiedCommandCenter.jac Active evidence monitor
styles/global.css Responsive application styling
jac.toml Jac runtime, client, and test configuration
PRODUCTION.md Production and JacHammer runbook
PARITY.md Old-to-Jac functional parity contract

Public Contract

SurfacePurpose
get_disaster_feedRead only cached USGS/NWS source records
refresh_disaster_feedRefresh USGS/NWS without generated fallback records

All four endpoints are public. Hazard records and anonymous mobile relay signals use the shared Jac graph. Ingestion validates bounds, deduplicates by message ID, stores an unverified mobile report, and never claims responder action. See PRODUCTION.md for deployment and acceptance gates.

License

Copyright (c) 2025 SafeRelay Team. All Rights Reserved.

This is proprietary software. No copying, modification, distribution, or resubmission to hackathons is permitted without explicit written permission. See LICENSE for the full terms.

About

Web-only JacHammer deployment source for SafeRelay

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - rishabhcli/SafeRelay-web: Web-only JacHammer deployment source for SafeRelay · GitHub
Skip to content

Repository files navigation

SafeRelay

Evidence-scoped emergency mesh operations, built entirely with Jac.

SafeRelay's active web console monitors source-backed public hazard records and preserves explicit unknown states for relay reports, receipts, responder acknowledgements, and outcomes. It never substitutes generated operational records. Synthetic artifacts are allowed only inside clearly labeled map layers.

Created by Jerry Wen, Rishabh Bansal, and Aditya Das for the Alameda County Hackathon 2025.

The web console is not an emergency dispatch service. An empty evidence state stays empty until a real source record exists.

Why Jac

SafeRelay uses Jac 0.34.7 as the full application runtime:

  • One language: backend logic, graph schema, tests, routes, and JSX-like client components are all Jac.
  • Graph persistence: verified source records attach to the shared public Jac root.
  • Typed public RPC:def:pub functions become anonymous, client-callable endpoints with generated types.
  • One runtime:jac start builds the client and serves the UI, APIs, and graph state together.
  • Live public feeds: USGS earthquake and NWS severe-weather refreshes run on the Jac server with bounded timeouts. Failed refreshes retain verified cached records or report unavailable; they never create continuity examples.
  • Mobile cloud relay: anonymous mobile clients can health-check and submit a validated, idempotent signal to the shared Jac cloud graph. Each receipt is evidence of server storage, not responder acknowledgement.

Run It

Install Jac and then:

export PROMETHEUS_ADMIN_PASSWORD="$(openssl rand -base64 32)"export MAPBOX_ACCESS_TOKEN="<public Mapbox token>"
jac install
jac start --dev main.jac

Open:

No database, JavaScript build command, or Supabase project is required for a single-replica deployment. The incident map uses a public Mapbox access token from MAPBOX_ACCESS_TOKEN. Its synthetic markers are visibly labeled map artifacts and are never included in operational counts or evidence.

Verify It

jac check .
jac test
jac build main.jac

The test suite verifies cloud health, validated idempotent mobile ingestion, honest empty source states, and legacy generated-record removal. See PARITY.md.

Architecture

flowchart LR
UI["Jac client components"] --> RPC["Typed public RPC"]
MOBILE["SafeRelay mobile"] --> RELAY["Public Jac signal ingestion"]
RELAY --> SHARED["Shared cloud signal graph"]
RPC --> ROOT["Shared public root graph"]
ROOT --> CACHE["Verified source cache"]
CACHE --> USGS["USGS earthquake records"]
CACHE --> NWS["NWS severe-weather records"]
UI --> MAP["Clearly labeled map artifacts"]
Loading

The former drill engine and its generated incident records are not part of the web runtime.

Source Layout

main.jac Application entry point and client export
saferelay/store.jac Verified source cache and public endpoints
saferelay/store_test.jac Evidence-boundary tests
saferelay/AppShell.jac Public client router
saferelay/LandingPage.jac Public experience
saferelay/VerifiedCommandCenter.jac Active evidence monitor
styles/global.css Responsive application styling
jac.toml Jac runtime, client, and test configuration
PRODUCTION.md Production and JacHammer runbook
PARITY.md Old-to-Jac functional parity contract

Public Contract

SurfacePurpose
get_disaster_feedRead only cached USGS/NWS source records
refresh_disaster_feedRefresh USGS/NWS without generated fallback records

All four endpoints are public. Hazard records and anonymous mobile relay signals use the shared Jac graph. Ingestion validates bounds, deduplicates by message ID, stores an unverified mobile report, and never claims responder action. See PRODUCTION.md for deployment and acceptance gates.

License

Copyright (c) 2025 SafeRelay Team. All Rights Reserved.

This is proprietary software. No copying, modification, distribution, or resubmission to hackathons is permitted without explicit written permission. See LICENSE for the full terms.

About

Web-only JacHammer deployment source for SafeRelay

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - rishabhcli/SafeRelay-web: Web-only JacHammer deployment source for SafeRelay · GitHub
Skip to content

Repository files navigation

SafeRelay

Evidence-scoped emergency mesh operations, built entirely with Jac.

SafeRelay's active web console monitors source-backed public hazard records and preserves explicit unknown states for relay reports, receipts, responder acknowledgements, and outcomes. It never substitutes generated operational records. Synthetic artifacts are allowed only inside clearly labeled map layers.

Created by Jerry Wen, Rishabh Bansal, and Aditya Das for the Alameda County Hackathon 2025.

The web console is not an emergency dispatch service. An empty evidence state stays empty until a real source record exists.

Why Jac

SafeRelay uses Jac 0.34.7 as the full application runtime:

  • One language: backend logic, graph schema, tests, routes, and JSX-like client components are all Jac.
  • Graph persistence: verified source records attach to the shared public Jac root.
  • Typed public RPC:def:pub functions become anonymous, client-callable endpoints with generated types.
  • One runtime:jac start builds the client and serves the UI, APIs, and graph state together.
  • Live public feeds: USGS earthquake and NWS severe-weather refreshes run on the Jac server with bounded timeouts. Failed refreshes retain verified cached records or report unavailable; they never create continuity examples.
  • Mobile cloud relay: anonymous mobile clients can health-check and submit a validated, idempotent signal to the shared Jac cloud graph. Each receipt is evidence of server storage, not responder acknowledgement.

Run It

Install Jac and then:

export PROMETHEUS_ADMIN_PASSWORD="$(openssl rand -base64 32)"export MAPBOX_ACCESS_TOKEN="<public Mapbox token>"
jac install
jac start --dev main.jac

Open:

No database, JavaScript build command, or Supabase project is required for a single-replica deployment. The incident map uses a public Mapbox access token from MAPBOX_ACCESS_TOKEN. Its synthetic markers are visibly labeled map artifacts and are never included in operational counts or evidence.

Verify It

jac check .
jac test
jac build main.jac

The test suite verifies cloud health, validated idempotent mobile ingestion, honest empty source states, and legacy generated-record removal. See PARITY.md.

Architecture

flowchart LR
UI["Jac client components"] --> RPC["Typed public RPC"]
MOBILE["SafeRelay mobile"] --> RELAY["Public Jac signal ingestion"]
RELAY --> SHARED["Shared cloud signal graph"]
RPC --> ROOT["Shared public root graph"]
ROOT --> CACHE["Verified source cache"]
CACHE --> USGS["USGS earthquake records"]
CACHE --> NWS["NWS severe-weather records"]
UI --> MAP["Clearly labeled map artifacts"]
Loading

The former drill engine and its generated incident records are not part of the web runtime.

Source Layout

main.jac Application entry point and client export
saferelay/store.jac Verified source cache and public endpoints
saferelay/store_test.jac Evidence-boundary tests
saferelay/AppShell.jac Public client router
saferelay/LandingPage.jac Public experience
saferelay/VerifiedCommandCenter.jac Active evidence monitor
styles/global.css Responsive application styling
jac.toml Jac runtime, client, and test configuration
PRODUCTION.md Production and JacHammer runbook
PARITY.md Old-to-Jac functional parity contract

Public Contract

SurfacePurpose
get_disaster_feedRead only cached USGS/NWS source records
refresh_disaster_feedRefresh USGS/NWS without generated fallback records

All four endpoints are public. Hazard records and anonymous mobile relay signals use the shared Jac graph. Ingestion validates bounds, deduplicates by message ID, stores an unverified mobile report, and never claims responder action. See PRODUCTION.md for deployment and acceptance gates.

License

Copyright (c) 2025 SafeRelay Team. All Rights Reserved.

This is proprietary software. No copying, modification, distribution, or resubmission to hackathons is permitted without explicit written permission. See LICENSE for the full terms.

About

Web-only JacHammer deployment source for SafeRelay

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - rishabhcli/SafeRelay-web: Web-only JacHammer deployment source for SafeRelay · GitHub
Skip to content

Repository files navigation

SafeRelay

Evidence-scoped emergency mesh operations, built entirely with Jac.

SafeRelay's active web console monitors source-backed public hazard records and preserves explicit unknown states for relay reports, receipts, responder acknowledgements, and outcomes. It never substitutes generated operational records. Synthetic artifacts are allowed only inside clearly labeled map layers.

Created by Jerry Wen, Rishabh Bansal, and Aditya Das for the Alameda County Hackathon 2025.

The web console is not an emergency dispatch service. An empty evidence state stays empty until a real source record exists.

Why Jac

SafeRelay uses Jac 0.34.7 as the full application runtime:

  • One language: backend logic, graph schema, tests, routes, and JSX-like client components are all Jac.
  • Graph persistence: verified source records attach to the shared public Jac root.
  • Typed public RPC:def:pub functions become anonymous, client-callable endpoints with generated types.
  • One runtime:jac start builds the client and serves the UI, APIs, and graph state together.
  • Live public feeds: USGS earthquake and NWS severe-weather refreshes run on the Jac server with bounded timeouts. Failed refreshes retain verified cached records or report unavailable; they never create continuity examples.
  • Mobile cloud relay: anonymous mobile clients can health-check and submit a validated, idempotent signal to the shared Jac cloud graph. Each receipt is evidence of server storage, not responder acknowledgement.

Run It

Install Jac and then:

export PROMETHEUS_ADMIN_PASSWORD="$(openssl rand -base64 32)"export MAPBOX_ACCESS_TOKEN="<public Mapbox token>"
jac install
jac start --dev main.jac

Open:

No database, JavaScript build command, or Supabase project is required for a single-replica deployment. The incident map uses a public Mapbox access token from MAPBOX_ACCESS_TOKEN. Its synthetic markers are visibly labeled map artifacts and are never included in operational counts or evidence.

Verify It

jac check .
jac test
jac build main.jac

The test suite verifies cloud health, validated idempotent mobile ingestion, honest empty source states, and legacy generated-record removal. See PARITY.md.

Architecture

flowchart LR
UI["Jac client components"] --> RPC["Typed public RPC"]
MOBILE["SafeRelay mobile"] --> RELAY["Public Jac signal ingestion"]
RELAY --> SHARED["Shared cloud signal graph"]
RPC --> ROOT["Shared public root graph"]
ROOT --> CACHE["Verified source cache"]
CACHE --> USGS["USGS earthquake records"]
CACHE --> NWS["NWS severe-weather records"]
UI --> MAP["Clearly labeled map artifacts"]
Loading

The former drill engine and its generated incident records are not part of the web runtime.

Source Layout

main.jac Application entry point and client export
saferelay/store.jac Verified source cache and public endpoints
saferelay/store_test.jac Evidence-boundary tests
saferelay/AppShell.jac Public client router
saferelay/LandingPage.jac Public experience
saferelay/VerifiedCommandCenter.jac Active evidence monitor
styles/global.css Responsive application styling
jac.toml Jac runtime, client, and test configuration
PRODUCTION.md Production and JacHammer runbook
PARITY.md Old-to-Jac functional parity contract

Public Contract

SurfacePurpose
get_disaster_feedRead only cached USGS/NWS source records
refresh_disaster_feedRefresh USGS/NWS without generated fallback records

All four endpoints are public. Hazard records and anonymous mobile relay signals use the shared Jac graph. Ingestion validates bounds, deduplicates by message ID, stores an unverified mobile report, and never claims responder action. See PRODUCTION.md for deployment and acceptance gates.

License

Copyright (c) 2025 SafeRelay Team. All Rights Reserved.

This is proprietary software. No copying, modification, distribution, or resubmission to hackathons is permitted without explicit written permission. See LICENSE for the full terms.

About

Web-only JacHammer deployment source for SafeRelay

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - rishabhcli/SafeRelay-web: Web-only JacHammer deployment source for SafeRelay · GitHub
Skip to content

Repository files navigation

SafeRelay

Evidence-scoped emergency mesh operations, built entirely with Jac.

SafeRelay's active web console monitors source-backed public hazard records and preserves explicit unknown states for relay reports, receipts, responder acknowledgements, and outcomes. It never substitutes generated operational records. Synthetic artifacts are allowed only inside clearly labeled map layers.

Created by Jerry Wen, Rishabh Bansal, and Aditya Das for the Alameda County Hackathon 2025.

The web console is not an emergency dispatch service. An empty evidence state stays empty until a real source record exists.

Why Jac

SafeRelay uses Jac 0.34.7 as the full application runtime:

  • One language: backend logic, graph schema, tests, routes, and JSX-like client components are all Jac.
  • Graph persistence: verified source records attach to the shared public Jac root.
  • Typed public RPC:def:pub functions become anonymous, client-callable endpoints with generated types.
  • One runtime:jac start builds the client and serves the UI, APIs, and graph state together.
  • Live public feeds: USGS earthquake and NWS severe-weather refreshes run on the Jac server with bounded timeouts. Failed refreshes retain verified cached records or report unavailable; they never create continuity examples.
  • Mobile cloud relay: anonymous mobile clients can health-check and submit a validated, idempotent signal to the shared Jac cloud graph. Each receipt is evidence of server storage, not responder acknowledgement.

Run It

Install Jac and then:

export PROMETHEUS_ADMIN_PASSWORD="$(openssl rand -base64 32)"export MAPBOX_ACCESS_TOKEN="<public Mapbox token>"
jac install
jac start --dev main.jac

Open:

No database, JavaScript build command, or Supabase project is required for a single-replica deployment. The incident map uses a public Mapbox access token from MAPBOX_ACCESS_TOKEN. Its synthetic markers are visibly labeled map artifacts and are never included in operational counts or evidence.

Verify It

jac check .
jac test
jac build main.jac

The test suite verifies cloud health, validated idempotent mobile ingestion, honest empty source states, and legacy generated-record removal. See PARITY.md.

Architecture

flowchart LR
UI["Jac client components"] --> RPC["Typed public RPC"]
MOBILE["SafeRelay mobile"] --> RELAY["Public Jac signal ingestion"]
RELAY --> SHARED["Shared cloud signal graph"]
RPC --> ROOT["Shared public root graph"]
ROOT --> CACHE["Verified source cache"]
CACHE --> USGS["USGS earthquake records"]
CACHE --> NWS["NWS severe-weather records"]
UI --> MAP["Clearly labeled map artifacts"]
Loading

The former drill engine and its generated incident records are not part of the web runtime.

Source Layout

main.jac Application entry point and client export
saferelay/store.jac Verified source cache and public endpoints
saferelay/store_test.jac Evidence-boundary tests
saferelay/AppShell.jac Public client router
saferelay/LandingPage.jac Public experience
saferelay/VerifiedCommandCenter.jac Active evidence monitor
styles/global.css Responsive application styling
jac.toml Jac runtime, client, and test configuration
PRODUCTION.md Production and JacHammer runbook
PARITY.md Old-to-Jac functional parity contract

Public Contract

SurfacePurpose
get_disaster_feedRead only cached USGS/NWS source records
refresh_disaster_feedRefresh USGS/NWS without generated fallback records

All four endpoints are public. Hazard records and anonymous mobile relay signals use the shared Jac graph. Ingestion validates bounds, deduplicates by message ID, stores an unverified mobile report, and never claims responder action. See PRODUCTION.md for deployment and acceptance gates.

License

Copyright (c) 2025 SafeRelay Team. All Rights Reserved.

This is proprietary software. No copying, modification, distribution, or resubmission to hackathons is permitted without explicit written permission. See LICENSE for the full terms.

About

Web-only JacHammer deployment source for SafeRelay

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages