forked from avi/signalelsewhere
Compare commits
1 Commits
save-point
...
v1.2
| Author | SHA1 | Date | |
|---|---|---|---|
| 9e86ff94e9 |
45
README.md
45
README.md
@@ -1,45 +0,0 @@
|
|||||||
# Signal Elsewhere
|
|
||||||
|
|
||||||
An interactive educational experience about money, technology, food, and health — built as a Capacitor Android app.
|
|
||||||
|
|
||||||
## Development
|
|
||||||
|
|
||||||
The app is a single-page HTML/JS application. No build step is needed for the web version.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Serve locally for development
|
|
||||||
python3 -m http.server 8080
|
|
||||||
# or
|
|
||||||
npx serve .
|
|
||||||
```
|
|
||||||
|
|
||||||
Open `http://localhost:8080` in your browser.
|
|
||||||
|
|
||||||
## Android Build
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Install dependencies
|
|
||||||
npm install
|
|
||||||
|
|
||||||
# Copy web assets to Android
|
|
||||||
npx cap copy
|
|
||||||
|
|
||||||
# Sync Capacitor config
|
|
||||||
npx cap sync android
|
|
||||||
|
|
||||||
# Open in Android Studio
|
|
||||||
npx cap open android
|
|
||||||
```
|
|
||||||
|
|
||||||
From Android Studio, build and run on a device or emulator.
|
|
||||||
|
|
||||||
## Structure
|
|
||||||
|
|
||||||
- `index.html` — main application source
|
|
||||||
- `www/` — production web directory (copied to Android)
|
|
||||||
- `android/` — Android project (Capacitor)
|
|
||||||
- `capacitor.config.json` — Capacitor configuration
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
ISC
|
|
||||||
26
index.html
26
index.html
@@ -2423,7 +2423,7 @@ html[data-view="mobile"] #exfilDeskCanvas { max-height: 500px; }
|
|||||||
html+='<tr><td>US DEBT</td><td>$11.9T</td><td>$35T+</td></tr>';
|
html+='<tr><td>US DEBT</td><td>$11.9T</td><td>$35T+</td></tr>';
|
||||||
html+='<tr><td>BTC ADOPTION</td><td>NONE</td><td>ETFs, NATIONS, FORTUNE 500</td></tr>';
|
html+='<tr><td>BTC ADOPTION</td><td>NONE</td><td>ETFs, NATIONS, FORTUNE 500</td></tr>';
|
||||||
html+='<tr><td>GOLD CONFISCATION RISK</td><td>LOW</td><td>REAL (CBDCs RISING)</td></tr>';
|
html+='<tr><td>GOLD CONFISCATION RISK</td><td>LOW</td><td>REAL (CBDCs RISING)</td></tr>';
|
||||||
html+='</table>';
|
html+='</table><div class="punch-row"><div class="punch-card"><span class="punch-icon">🟠</span><span class="punch-text">BTC $100K+<br>WALL STREET OWNS IT</span></div><div class="punch-card"><span class="punch-icon">🥇</span><span class="punch-text">GOLD $3K+<br>STILL THE SAFE HAVEN</span></div><div class="punch-card"><span class="punch-icon">📉</span><span class="punch-text">DOLLAR DOWN<br>70% SINCE 2000</span></div></div>';
|
||||||
vis.innerHTML=html;
|
vis.innerHTML=html;
|
||||||
vis.classList.add('visible');
|
vis.classList.add('visible');
|
||||||
showNextBtn('next4f');showNextBtn('sources4f');showNextBtn('back4f');
|
showNextBtn('next4f');showNextBtn('sources4f');showNextBtn('back4f');
|
||||||
@@ -5837,9 +5837,21 @@ html[data-view="mobile"] #exfilDeskCanvas { max-height: 500px; }
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Double-click/tap to skip scene (same as Escape on desktop)
|
// Double-click/tap to skip scene (same as Escape on desktop)
|
||||||
document.addEventListener('dblclick', () => {
|
if (isAndroidApp) {
|
||||||
document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }));
|
let lastTapTime = 0;
|
||||||
});
|
document.addEventListener('touchend', (e) => {
|
||||||
|
const now = Date.now();
|
||||||
|
if (lastTapTime > 0 && now - lastTapTime < 400) {
|
||||||
|
e.preventDefault();
|
||||||
|
document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }));
|
||||||
|
}
|
||||||
|
lastTapTime = now;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
document.addEventListener('dblclick', () => {
|
||||||
|
document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Keyboard shortcuts for testing
|
// Keyboard shortcuts for testing
|
||||||
document.addEventListener('keydown', (e) => {
|
document.addEventListener('keydown', (e) => {
|
||||||
@@ -5984,7 +5996,11 @@ html[data-view="mobile"] #exfilDeskCanvas { max-height: 500px; }
|
|||||||
+'<tr><td>BTC ADOPTION</td><td>NONE</td><td>ETFs, NATIONS, FORTUNE 500</td></tr>'
|
+'<tr><td>BTC ADOPTION</td><td>NONE</td><td>ETFs, NATIONS, FORTUNE 500</td></tr>'
|
||||||
+'<tr><td>GOLD CONFISCATION RISK</td><td>LOW</td><td>REAL (CBDCs RISING)</td></tr>'
|
+'<tr><td>GOLD CONFISCATION RISK</td><td>LOW</td><td>REAL (CBDCs RISING)</td></tr>'
|
||||||
+'</table>'
|
+'</table>'
|
||||||
+'';
|
+'<div class="punch-row">'
|
||||||
|
+'<div class="punch-card"><span class="punch-icon">\uD83D\uDFE0</span><span class="punch-text">BTC $100K+<br>WALL STREET OWNS IT</span></div>'
|
||||||
|
+'<div class="punch-card"><span class="punch-icon">\uD83E\uDD47</span><span class="punch-text">GOLD $3K+<br>STILL THE SAFE HAVEN</span></div>'
|
||||||
|
+'<div class="punch-card"><span class="punch-icon">\uD83D\uDCC9</span><span class="punch-text">DOLLAR DOWN<br>70% SINCE 2000</span></div>'
|
||||||
|
+'</div>';
|
||||||
s4.querySelector('.s4visual').classList.add('visible');
|
s4.querySelector('.s4visual').classList.add('visible');
|
||||||
document.getElementById('next4f').style.cssText = '';
|
document.getElementById('next4f').style.cssText = '';
|
||||||
showNextBtn('next4f');
|
showNextBtn('next4f');
|
||||||
|
|||||||
@@ -2423,7 +2423,7 @@ html[data-view="mobile"] #exfilDeskCanvas { max-height: 500px; }
|
|||||||
html+='<tr><td>US DEBT</td><td>$11.9T</td><td>$35T+</td></tr>';
|
html+='<tr><td>US DEBT</td><td>$11.9T</td><td>$35T+</td></tr>';
|
||||||
html+='<tr><td>BTC ADOPTION</td><td>NONE</td><td>ETFs, NATIONS, FORTUNE 500</td></tr>';
|
html+='<tr><td>BTC ADOPTION</td><td>NONE</td><td>ETFs, NATIONS, FORTUNE 500</td></tr>';
|
||||||
html+='<tr><td>GOLD CONFISCATION RISK</td><td>LOW</td><td>REAL (CBDCs RISING)</td></tr>';
|
html+='<tr><td>GOLD CONFISCATION RISK</td><td>LOW</td><td>REAL (CBDCs RISING)</td></tr>';
|
||||||
html+='</table>';
|
html+='</table><div class="punch-row"><div class="punch-card"><span class="punch-icon">🟠</span><span class="punch-text">BTC $100K+<br>WALL STREET OWNS IT</span></div><div class="punch-card"><span class="punch-icon">🥇</span><span class="punch-text">GOLD $3K+<br>STILL THE SAFE HAVEN</span></div><div class="punch-card"><span class="punch-icon">📉</span><span class="punch-text">DOLLAR DOWN<br>70% SINCE 2000</span></div></div>';
|
||||||
vis.innerHTML=html;
|
vis.innerHTML=html;
|
||||||
vis.classList.add('visible');
|
vis.classList.add('visible');
|
||||||
showNextBtn('next4f');showNextBtn('sources4f');showNextBtn('back4f');
|
showNextBtn('next4f');showNextBtn('sources4f');showNextBtn('back4f');
|
||||||
@@ -5837,9 +5837,21 @@ html[data-view="mobile"] #exfilDeskCanvas { max-height: 500px; }
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Double-click/tap to skip scene (same as Escape on desktop)
|
// Double-click/tap to skip scene (same as Escape on desktop)
|
||||||
document.addEventListener('dblclick', () => {
|
if (isAndroidApp) {
|
||||||
document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }));
|
let lastTapTime = 0;
|
||||||
});
|
document.addEventListener('touchend', (e) => {
|
||||||
|
const now = Date.now();
|
||||||
|
if (lastTapTime > 0 && now - lastTapTime < 400) {
|
||||||
|
e.preventDefault();
|
||||||
|
document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }));
|
||||||
|
}
|
||||||
|
lastTapTime = now;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
document.addEventListener('dblclick', () => {
|
||||||
|
document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Keyboard shortcuts for testing
|
// Keyboard shortcuts for testing
|
||||||
document.addEventListener('keydown', (e) => {
|
document.addEventListener('keydown', (e) => {
|
||||||
@@ -5984,7 +5996,11 @@ html[data-view="mobile"] #exfilDeskCanvas { max-height: 500px; }
|
|||||||
+'<tr><td>BTC ADOPTION</td><td>NONE</td><td>ETFs, NATIONS, FORTUNE 500</td></tr>'
|
+'<tr><td>BTC ADOPTION</td><td>NONE</td><td>ETFs, NATIONS, FORTUNE 500</td></tr>'
|
||||||
+'<tr><td>GOLD CONFISCATION RISK</td><td>LOW</td><td>REAL (CBDCs RISING)</td></tr>'
|
+'<tr><td>GOLD CONFISCATION RISK</td><td>LOW</td><td>REAL (CBDCs RISING)</td></tr>'
|
||||||
+'</table>'
|
+'</table>'
|
||||||
+'';
|
+'<div class="punch-row">'
|
||||||
|
+'<div class="punch-card"><span class="punch-icon">\uD83D\uDFE0</span><span class="punch-text">BTC $100K+<br>WALL STREET OWNS IT</span></div>'
|
||||||
|
+'<div class="punch-card"><span class="punch-icon">\uD83E\uDD47</span><span class="punch-text">GOLD $3K+<br>STILL THE SAFE HAVEN</span></div>'
|
||||||
|
+'<div class="punch-card"><span class="punch-icon">\uD83D\uDCC9</span><span class="punch-text">DOLLAR DOWN<br>70% SINCE 2000</span></div>'
|
||||||
|
+'</div>';
|
||||||
s4.querySelector('.s4visual').classList.add('visible');
|
s4.querySelector('.s4visual').classList.add('visible');
|
||||||
document.getElementById('next4f').style.cssText = '';
|
document.getElementById('next4f').style.cssText = '';
|
||||||
showNextBtn('next4f');
|
showNextBtn('next4f');
|
||||||
|
|||||||
Reference in New Issue
Block a user