@yz-social/civildefense.io 4.5.22 → 4.5.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +3 -2
- package/public/about/checkpoint.jpg +0 -0
- package/public/about/en.html +13 -6
- package/public/about/es.html +62 -40
- package/public/about/radio-europe.jpg +0 -0
- package/public/about/streets-of-minneapolis.jpg +0 -0
- package/public/about/style.css +1 -0
- package/public/index.html +11 -0
- package/public/javascripts/alert.js +380 -155
- package/public/javascripts/conversation.js +5 -3
- package/public/javascripts/hashtags.js +16 -18
- package/public/javascripts/main.js +12 -0
- package/public/javascripts/p2pWebNetwork.js +4 -2
- package/public/javascripts/protocol.js +10 -8
- package/public/javascripts/pubsub.js +44 -22
- package/public/javascripts/s2.js +34 -18
- package/public/javascripts/translations.js +11 -7
- package/public/javascripts/versions.js +9 -3
- package/public/service-worker.js +5 -2
- package/public/stylesheets/style.css +109 -0
- package/server/app.js +30 -10
- package/server/location.save.json +1 -1
- package/server/websocket.js +8 -5
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ CivilDefense.io lets you report an immediate concern to the public by tapping it
|
|
|
6
6
|
The locations are shared over anonymous p2p with other users in your area, then fade away over 24 hours.
|
|
7
7
|
There is no login and no global tracking of your Internet address or physical location.
|
|
8
8
|
|
|
9
|
-
See [
|
|
9
|
+
See [Overview](https://civildefense.io/about/en.html), [Functional Spec](https://docs.google.com/document/d/1Y621bToMLHyyx6gp4YK8C17jSejMoqpkNQ-R1EZdrEA/edit?usp=sharing), and [Roadmap](https://docs.google.com/document/d/1vwS_oQ6pYw-dn05nsaXi-bda1j-wVVqRdqr7IHnIaf4/edit?usp=sharing).
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
## The Implementation
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yz-social/civildefense.io",
|
|
3
3
|
"description": "Browser app to safely share live sightings on a map.",
|
|
4
|
-
"version": "4.5.
|
|
4
|
+
"version": "4.5.28",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"map",
|
|
7
7
|
"browser",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"scripts": {
|
|
11
11
|
"start": "npm stop; node ./server/app.js",
|
|
12
12
|
"stop": "pkill yz.social",
|
|
13
|
+
"background": "npm stop; node ./server/app.js >server.log &",
|
|
13
14
|
"postinstall": "touch server/location.json; chmod a+w server/location.json",
|
|
14
15
|
"prepack": "mv server/location.json server/location.save.json",
|
|
15
16
|
"postpack": "mv server/location.save.json server/location.json"
|
|
@@ -19,7 +20,7 @@
|
|
|
19
20
|
".": "./index.js"
|
|
20
21
|
},
|
|
21
22
|
"dependencies": {
|
|
22
|
-
"@axona/protocol": "github:axona-net/axona-protocol#semver:^4.
|
|
23
|
+
"@axona/protocol": "github:axona-net/axona-protocol#semver:^4.62.2",
|
|
23
24
|
"cors": "^2.8.6",
|
|
24
25
|
"express": "^4.22.1",
|
|
25
26
|
"leaflet": "^1.9.4",
|
|
Binary file
|
package/public/about/en.html
CHANGED
|
@@ -42,18 +42,25 @@
|
|
|
42
42
|
</div>
|
|
43
43
|
|
|
44
44
|
<div class="carousel-slide">
|
|
45
|
-
<img src="
|
|
45
|
+
<a href="/?tags=%F0%9F%A9%B7%20community%20%20DEMO,%F0%9F%91%81%EF%B8%8F%20observer%20DEMO,%F0%9F%A7%B0%20utility%20DEMO&lat=44.942473404432015&lng=-93.26251878766926&z=14" target="civildefense"><img src="streets-of-minneapolis.jpg" alt="Map view showing alert markers scattered across a neighborhood"></a>
|
|
46
46
|
<div class="carousel-caption">Like Twitter, you create the topics.<br>But you only get alerts based on your current map.<br>Like Snapchat, alerts fade away after 24 hours.</div>
|
|
47
47
|
</div>
|
|
48
48
|
|
|
49
49
|
<div class="carousel-slide">
|
|
50
|
-
<img src="
|
|
51
|
-
<div class="carousel-caption">
|
|
50
|
+
<a href="/?tags=%F0%9F%91%81%EF%B8%8F%20observer%20DEMO&lat=44.95924556664652&lng=-93.24730055745023&z=16" target="civildefense"><img src="checkpoint.jpg" alt="Map with an open alert popup showing a photo and comment thread"></a>
|
|
51
|
+
<div class="carousel-caption">
|
|
52
|
+
<span>Click a marker to read and add comments and attachments.</span>
|
|
53
|
+
<a href="/?tags=%F0%9F%91%81%EF%B8%8F%20observer%20DEMO&lat=44.95924556664652&lng=-93.24730055745023&z=16" target="civildefense">Show me!</a>
|
|
54
|
+
</div>
|
|
52
55
|
</div>
|
|
53
56
|
|
|
54
57
|
<div class="carousel-slide">
|
|
55
|
-
<img src="
|
|
56
|
-
<div class="carousel-caption">
|
|
58
|
+
<a href="/?tags=%F0%9F%8E%BC%20classical,%F0%9F%8E%A7%20edm,%F0%9F%8E%A4%20hiphop,%F0%9F%8E%99%EF%B8%8F%20news,%F0%9F%8E%B5%20pop&lat=47.51951505778901&lng=1.6779639902073742&z=6" target="civildefense"><img src="radio-europe.jpg" alt="Map of Western Europe with playable streaming radio station markers"></a>
|
|
59
|
+
<div class="carousel-caption">
|
|
60
|
+
<span>People control the topics, and they do not have to be about safety.</span>
|
|
61
|
+
<span>Here are playable streaming radio stations by category.</span>
|
|
62
|
+
<a href="/?tags=%F0%9F%8E%BC%20classical,%F0%9F%8E%A7%20edm,%F0%9F%8E%A4%20hiphop,%F0%9F%8E%99%EF%B8%8F%20news,%F0%9F%8E%B5%20pop&lat=47.51951505778901&lng=1.6779639902073742&z=6" target="civildefense">Show me!</a>
|
|
63
|
+
</div>
|
|
57
64
|
</div>
|
|
58
65
|
|
|
59
66
|
<div class="carousel-slide">
|
|
@@ -94,7 +101,7 @@
|
|
|
94
101
|
<!-- <li>Alerts disappear after 24 hours—this is not an archive or long-term storage system. (This Winter, users will be able to download tamper-evident reports for use in other systems.)</li> -->
|
|
95
102
|
</ul>
|
|
96
103
|
|
|
97
|
-
<a href="/?lang=en" class="launch-btn" target="civildefense">
|
|
104
|
+
<a href="/?tags=%F0%9F%8E%B8%20classic%20rock,%F0%9F%8E%BC%20classical,%F0%9F%A4%A0%20country,%F0%9F%8E%B7%20jazz,%F0%9F%8E%99%EF%B8%8F%20news,%F0%9F%8E%B5%20pop&z=5&lang=en" class="launch-btn" target="civildefense">
|
|
98
105
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="5 3 19 12 5 21 5 3"></polygon></svg>
|
|
99
106
|
Try it!
|
|
100
107
|
</a>
|
package/public/about/es.html
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>La
|
|
6
|
+
<title>La App de Civil Defense</title>
|
|
7
7
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
8
8
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
9
9
|
<link href="https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@400;600;700;800&family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
|
|
@@ -15,8 +15,10 @@
|
|
|
15
15
|
<!-- ── HERO ──────────────────────────────────────────────────── -->
|
|
16
16
|
<header class="hero">
|
|
17
17
|
<div class="hero-inner">
|
|
18
|
-
<img class="hero-logo" src="civil-defense.png" alt="
|
|
19
|
-
<h1>La
|
|
18
|
+
<img class="hero-logo" src="civil-defense.png" alt="Logotipo de Civil Defense">
|
|
19
|
+
<h1>La App de <span>Civil Defense</span></h1>
|
|
20
|
+
<!-- <div class="hero-divider"></div> -->
|
|
21
|
+
<!-- <p class="hero-tagline">Realtime crowdmapping that is resistant to tracking, censorship, and takedown</p> -->
|
|
20
22
|
</div>
|
|
21
23
|
<div class="language-selector">
|
|
22
24
|
<label for="language">Idioma:</label>
|
|
@@ -28,7 +30,7 @@
|
|
|
28
30
|
</header>
|
|
29
31
|
|
|
30
32
|
<!-- ── CAROUSEL ──────────────────────────────────────────────── -->
|
|
31
|
-
<section class="carousel-section" aria-label="Capturas de pantalla de la
|
|
33
|
+
<section class="carousel-section" aria-label="Capturas de pantalla de la app">
|
|
32
34
|
|
|
33
35
|
<div class="carousel-wrap">
|
|
34
36
|
<div class="carousel-track-outer">
|
|
@@ -36,34 +38,50 @@
|
|
|
36
38
|
|
|
37
39
|
<div class="carousel-slide">
|
|
38
40
|
<img src="broadcast.png" alt="Una aplicación móvil mostrando alertas">
|
|
39
|
-
<div class="carousel-caption">Mapeo
|
|
41
|
+
<div class="carousel-caption">Mapeo colectivo en tiempo real, resistente al rastreo, la censura y la eliminación.</div>
|
|
40
42
|
</div>
|
|
41
43
|
|
|
42
44
|
<div class="carousel-slide">
|
|
43
|
-
<img src="
|
|
45
|
+
<a href="/?tags=%F0%9F%A9%B7%20community%20%20DEMO,%F0%9F%91%81%EF%B8%8F%20observer%20DEMO,%F0%9F%A7%B0%20utility%20DEMO&lat=44.942473404432015&lng=-93.26251878766926&z=14" target="civildefense"><img src="streets-of-minneapolis.jpg" alt="Vista de mapa que muestra marcadores de alerta dispersos por un vecindario"></a>
|
|
44
46
|
<div class="carousel-caption">Como en Twitter, tú creas los temas.<br>Pero solo recibes alertas según tu mapa actual.<br>Como en Snapchat, las alertas desaparecen después de 24 horas.</div>
|
|
45
47
|
</div>
|
|
46
48
|
|
|
47
49
|
<div class="carousel-slide">
|
|
48
|
-
<img src="
|
|
49
|
-
<div class="carousel-caption">
|
|
50
|
+
<a href="/?tags=%F0%9F%91%81%EF%B8%8F%20observer%20DEMO&lat=44.95924556664652&lng=-93.24730055745023&z=16" target="civildefense"><img src="checkpoint.jpg" alt="Mapa con una ventana de alerta abierta que muestra una foto y un hilo de comentarios"></a>
|
|
51
|
+
<div class="carousel-caption">
|
|
52
|
+
<span>Haz clic en un marcador para leer y agregar comentarios y archivos adjuntos.</span>
|
|
53
|
+
<a href="/?tags=%F0%9F%91%81%EF%B8%8F%20observer%20DEMO&lat=44.95924556664652&lng=-93.24730055745023&z=16" target="civildefense">Muéstrame!</a>
|
|
54
|
+
</div>
|
|
50
55
|
</div>
|
|
51
56
|
|
|
52
57
|
<div class="carousel-slide">
|
|
53
|
-
<img src="
|
|
54
|
-
<div class="carousel-caption">
|
|
58
|
+
<a href="/?tags=%F0%9F%8E%BC%20classical,%F0%9F%8E%A7%20edm,%F0%9F%8E%A4%20hiphop,%F0%9F%8E%99%EF%B8%8F%20news,%F0%9F%8E%B5%20pop&lat=47.51951505778901&lng=1.6779639902073742&z=6" target="civildefense"><img src="radio-europe.jpg" alt="Mapa de Europa Occidental con marcadores de estaciones de radio en streaming reproducibles"></a>
|
|
59
|
+
<div class="carousel-caption">
|
|
60
|
+
<span>Las personas controlan los temas, y no tienen que tratar sobre seguridad.</span>
|
|
61
|
+
<span>Aquí hay estaciones de radio en streaming reproducibles por categoría.</span>
|
|
62
|
+
<a href="/?tags=%F0%9F%8E%BC%20classical,%F0%9F%8E%A7%20edm,%F0%9F%8E%A4%20hiphop,%F0%9F%8E%99%EF%B8%8F%20news,%F0%9F%8E%B5%20pop&lat=47.51951505778901&lng=1.6779639902073742&z=6" target="civildefense">Muéstrame!</a>
|
|
63
|
+
</div>
|
|
55
64
|
</div>
|
|
56
65
|
|
|
57
66
|
<div class="carousel-slide">
|
|
58
67
|
<video controls src="CivilDefense.mp4"></video>
|
|
59
|
-
<div class="carousel-caption">Un video de
|
|
68
|
+
<div class="carousel-caption">Un video de 30 segundos con ambientación generada por IA.</div>
|
|
60
69
|
</div>
|
|
61
70
|
|
|
71
|
+
<!-- <div class="carousel-slide"> -->
|
|
72
|
+
<!-- <img src="hero.png" alt="One man with shoping bags in Tiananmen Square, facing an enormous column of tanks."> -->
|
|
73
|
+
<!-- <div class="carousel-caption">Bear witness.</div> -->
|
|
74
|
+
<!-- </div> -->
|
|
75
|
+
|
|
76
|
+
<!-- <div class="carousel-slide"> -->
|
|
77
|
+
<!-- <img src="nazis.png" alt="WWII-style poster exhorting the public to use Civil Defense in case of Nazi attack."> -->
|
|
78
|
+
<!-- </div> -->
|
|
79
|
+
|
|
62
80
|
</div>
|
|
63
81
|
</div>
|
|
64
82
|
|
|
65
83
|
<button class="carousel-btn prev" id="prevBtn" aria-label="Diapositiva anterior">‹</button>
|
|
66
|
-
<button class="carousel-btn next" id="nextBtn" aria-label="
|
|
84
|
+
<button class="carousel-btn next" id="nextBtn" aria-label="Siguiente diapositiva">›</button>
|
|
67
85
|
|
|
68
86
|
<div class="carousel-dots" id="carouselDots" role="tablist" aria-label="Posición del carrusel"></div>
|
|
69
87
|
</div>
|
|
@@ -75,67 +93,71 @@
|
|
|
75
93
|
<h1>Qué Puedes Hacer Con Ella</h1>
|
|
76
94
|
|
|
77
95
|
<ul>
|
|
78
|
-
<li>
|
|
79
|
-
<li>
|
|
80
|
-
<li>
|
|
81
|
-
<li>
|
|
82
|
-
<li>
|
|
96
|
+
<li>Advierte a otros sobre un peligro tocando el mapa.</li>
|
|
97
|
+
<li>Agrega comentarios, fotos, videos u otros archivos adjuntos.</li>
|
|
98
|
+
<li>Recibe notificaciones de nuevas alertas cerca de ti o en tu mapa actual.</li>
|
|
99
|
+
<li>Comparte en redes sociales, mensaje de texto o correo electrónico.</li>
|
|
100
|
+
<li>Discute una alerta mediante videoconferencia segura. (Disponible este otoño.)</li>
|
|
101
|
+
<!-- <li>Alerts disappear after 24 hours—this is not an archive or long-term storage system. (This Winter, users will be able to download tamper-evident reports for use in other systems.)</li> -->
|
|
83
102
|
</ul>
|
|
84
103
|
|
|
85
|
-
<a href="/?lang=es" class="launch-btn" target="civildefense">
|
|
104
|
+
<a href="/?tags=%F0%9F%8E%B8%20classic%20rock,%F0%9F%8E%BC%20classical,%F0%9F%A4%A0%20country,%F0%9F%8E%B7%20jazz,%F0%9F%8E%99%EF%B8%8F%20news,%F0%9F%8E%B5%20pop&z=5&lang=es" class="launch-btn" target="civildefense">
|
|
86
105
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="5 3 19 12 5 21 5 3"></polygon></svg>
|
|
87
106
|
¡Pruébala!
|
|
88
107
|
</a>
|
|
89
108
|
|
|
90
|
-
<
|
|
109
|
+
<!-- <hr class="rule"> -->
|
|
110
|
+
|
|
111
|
+
<h1>Difunde de Forma Segura</h1>
|
|
91
112
|
|
|
92
113
|
<h2>Resiste el Rastreo</h2>
|
|
93
114
|
<ul>
|
|
94
|
-
<li>No puedes ser identificado como persona porque no hay inicio de sesión, registro ni cuentas. No se
|
|
95
|
-
<li>Es extremadamente difícil identificar tu dirección IP o
|
|
96
|
-
<li>Las notificaciones se envían directamente a través de la
|
|
97
|
-
<li>Cada alerta desaparece de toda la red después de 24 horas. No se recopilan registros de mensajes, comentarios
|
|
115
|
+
<li>No puedes ser identificado como persona porque no hay inicio de sesión, registro ni cuentas. No se usa ningún número de teléfono ni correo electrónico. Ninguna tienda de aplicaciones registra las descargas. Los usuarios pueden optar por dejar que otros los reconozcan en múltiples interacciones — sin revelar su identidad real.</li>
|
|
116
|
+
<li>Es extremadamente difícil identificar tu dirección IP o tus patrones de red, porque las alertas se distribuyen de teléfono a teléfono a través de una red entre pares (peer-to-peer).</li>
|
|
117
|
+
<li>Las notificaciones se envían directamente a través de la app en primer plano en tu teléfono, sin pasar por el servicio de mensajería de Apple o Google. (Las notificaciones en segundo plano estarán disponibles este invierno.)</li>
|
|
118
|
+
<li>Cada alerta desaparece de toda la red después de 24 horas. No se recopilan registros de mensajes, comentarios o temas solicitados, y este no es un sistema de archivo ni de almacenamiento a largo plazo.</li>
|
|
98
119
|
</ul>
|
|
99
120
|
|
|
100
121
|
<h2>Resiste la Censura</h2>
|
|
101
122
|
<ul>
|
|
102
|
-
<li>Ningún usuario puede ser censurado porque no
|
|
103
|
-
<li>Ningún contenido puede ser censurado; no
|
|
123
|
+
<li>Ningún usuario puede ser censurado porque no existen cuentas. Nadie puede robar la información de tu cuenta porque no la hay.</li>
|
|
124
|
+
<li>Ningún contenido puede ser censurado; no existe una organización central que controle la red o tenga poder para alterar el contenido.</li>
|
|
104
125
|
</ul>
|
|
105
126
|
|
|
106
|
-
<h2>Resiste el
|
|
127
|
+
<h2>Resiste el Cierre</h2>
|
|
107
128
|
<ul>
|
|
108
|
-
<li>Ninguna tienda de aplicaciones puede bloquear
|
|
109
|
-
<li>
|
|
110
|
-
<li>No
|
|
111
|
-
<li>Bloquear el tráfico de red es extremadamente difícil porque los datos de bajo nivel son idénticos al tráfico de
|
|
112
|
-
<li>
|
|
129
|
+
<li>Ninguna tienda de aplicaciones puede bloquear Civil Defense — la app es solo una página web.</li>
|
|
130
|
+
<li>Cerrar servidores web o nombres de dominio no puede bloquear el acceso de quienes ya lo tienen, porque la app almacena en caché todo lo que necesita desde el primer uso. El <a href="https://github.com/yz-social/civildefense.io" target="yz.other" rel="noopener">código de código abierto</a> está disponible para que cualquiera pueda alojar un espejo alternativo.</li>
|
|
131
|
+
<li>No existe un servidor backend ni un centro de datos que se pueda derribar. Todos los datos de las alertas son completamente peer-to-peer. Todos los espejos comparten esta red: una publicación en <a href="https://civildefense.io" target="civildefense">civildefense.io</a> aparece en el espejo <a href="https://ki1r0y.com" target="ki1r0y" rel="noopener">ki1r0y.com</a>, y viceversa.</li>
|
|
132
|
+
<li>Bloquear el tráfico de la red es extremadamente difícil, porque los datos de bajo nivel son idénticos al tráfico de videoconferencias.</li>
|
|
133
|
+
<li>Civil Defense es altamente resistente a los ataques de denegación de servicio (DoS). Sin embargo, sí requiere una conexión a Internet funcional, y por sí sola no ofrece ninguna protección contra un cierre total de Internet.</li>
|
|
113
134
|
</ul>
|
|
135
|
+
<!-- <hr class="rule"> -->
|
|
114
136
|
|
|
115
137
|
<h1>El Panorama General</h1>
|
|
116
|
-
<p>
|
|
117
|
-
<p>Axona es un descendiente moderno de las antiguas <a href="https://en.wikipedia.org/wiki/Peer-to-peer" target="yz.other" rel="noopener">redes
|
|
118
|
-
<p>También estamos desarrollando un sistema
|
|
138
|
+
<p>Civil Defense funciona sobre la red <a href="https://github.com/axona-net/axona-protocol" target="yz.other" rel="noopener">Axona</a>. Ambos son gratuitos y de código abierto.</p>
|
|
139
|
+
<p>Axona es un descendiente moderno de las antiguas <a href="https://en.wikipedia.org/wiki/Peer-to-peer" target="yz.other" rel="noopener">redes peer-to-peer</a>, como <a href="https://en.wikipedia.org/wiki/Napster">Napster</a>. Cuenta con un mecanismo único de enrutamiento autorreparable que utiliza técnicas de aprendizaje neuronal para encontrar la mejor forma de distribuir las alertas. Es análogo a <a href="https://en.wikipedia.org/wiki/Tor_(network)" target="yz.other" rel="noopener">TOR</a> (The Onion Router), pero diseñado desde cero para funcionar en navegadores móviles y de escritorio.</p>
|
|
140
|
+
<p>También estamos desarrollando un completo sistema de criptografía preparado para la era cuántica, que añadirá grupos privados para Civil Defense y para cualquier software de la red. Creemos que existen muchas aplicaciones en las que los desarrolladores, los usuarios y el público en general se benefician de un software abierto y de redes descentralizadas y seguras — sin tiendas de aplicaciones, servidores ni centros de datos. Más allá de Civil Defense, también estamos desarrollando <a href="https://en.wikipedia.org/wiki/Distributed_computing" target="yz.other" rel="noopener">colaboración multiusuario</a> a gran escala y <a href="https://poverty-action.org/inclusive-instant-payment-systems-evidence-based-approach-design-impact" target="yz.other" rel="noopener">Sistemas de Pago Instantáneo Inclusivos</a>.</p>
|
|
141
|
+
|
|
119
142
|
|
|
120
143
|
<div class="centered">
|
|
121
|
-
<img src="serving-you.jpg" alt="Cartel de la Semana de la Defensa Civil
|
|
144
|
+
<img src="serving-you.jpg" alt="Cartel de la Semana de la Defensa Civil - Sirviéndote en tiempos de emergencia">
|
|
122
145
|
</div>
|
|
123
146
|
|
|
124
147
|
<div class="centered">
|
|
125
|
-
<img src="prevail.jpg" alt="
|
|
148
|
+
<img src="prevail.jpg" alt="Cartel de Defensa Civil de la Guerra Fría - Prepárate, Protege, Prevalece">
|
|
126
149
|
</div>
|
|
127
150
|
|
|
128
151
|
<div class="centered">
|
|
129
|
-
<img src="nazis.png" alt="
|
|
152
|
+
<img src="nazis.png" alt="Cartel estilo Segunda Guerra Mundial que exhorta al público a usar la Defensa Civil en caso de ataque nazi.">
|
|
130
153
|
</div>
|
|
131
154
|
|
|
132
155
|
</main>
|
|
133
156
|
|
|
134
|
-
|
|
135
157
|
<!-- ── FOOTER ─────────────────────────────────────────────────── -->
|
|
136
158
|
<footer>
|
|
137
|
-
<p><a href="/?lang=es" target="civildefense">civildefense.io</a> — Mapeo
|
|
138
|
-
|
|
159
|
+
<p><a href="/?lang=es" target="civildefense">civildefense.io</a> — Mapeo colectivo seguro y gratuito para poblaciones vulnerables.<br>
|
|
160
|
+
Agradecemos el uso de software abierto de:
|
|
139
161
|
<a href="https://leafletjs.com/" target="yz.other" rel="noopener">Leaflet</a>,
|
|
140
162
|
<a href="https://www.openstreetmap.org/" target="yz.other" rel="noopener">OpenStreetMap</a>,
|
|
141
163
|
<a href="http://s2geometry.io" target="yz.other" rel="noopener">S2Geometry</a>,
|
|
Binary file
|
|
Binary file
|
package/public/about/style.css
CHANGED
package/public/index.html
CHANGED
|
@@ -161,6 +161,17 @@
|
|
|
161
161
|
|
|
162
162
|
<md-menu positioning="popover" id="popoverMenu"></md-menu>
|
|
163
163
|
<ul class="combobox-listbox hidden" id="knownTagsListbox" role="listbox"></ul>
|
|
164
|
+
|
|
165
|
+
<section class="firstConversation">
|
|
166
|
+
<div class="teach share"></div>
|
|
167
|
+
<div class="teach correspondent"></div>
|
|
168
|
+
<div class="teach attach"></div>
|
|
169
|
+
</section>
|
|
170
|
+
<section class="firstPublish">
|
|
171
|
+
<div class="teach correspondent"></div>
|
|
172
|
+
<div class="teach changeHashtag"></div>
|
|
173
|
+
</section>
|
|
174
|
+
|
|
164
175
|
</section>
|
|
165
176
|
<script type="module" src="javascripts/main.js"></script>
|
|
166
177
|
</body>
|