@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 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 [here](https://civildefense.io/about/TheCivilDefenseApp.html).
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.22",
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.59.2",
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
@@ -42,18 +42,25 @@
42
42
  </div>
43
43
 
44
44
  <div class="carousel-slide">
45
- <img src="flood-fire-ice.png" alt="Map view showing alert markers scattered across a neighborhood">
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="conversation-and-image.png" alt="Map with an open alert popup showing a photo and comment thread">
51
- <div class="carousel-caption">Click a marker to read and add comments and attachments.</div>
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="streaming-radio.png" alt="North America map with playable streaming radio station markers">
56
- <div class="carousel-caption">People control the topics, and they do not have to be about safety. Here are playable streaming radio stations by category.</div>
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>
@@ -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 Aplicación de Defensa Civil</title>
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="Logo de Defensa Civil">
19
- <h1>La Aplicación de <span>Defensa Civil</span></h1>
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 aplicación">
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 colaborativo en tiempo real resistente al rastreo, la censura y el bloqueo.</div>
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="flood-fire-ice.png" alt="Vista del mapa con marcadores de alerta dispersos por un vecindario">
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="conversation-and-image.png" alt="Mapa con una ventana emergente de alerta abierta mostrando una foto y comentarios">
49
- <div class="carousel-caption">Haz clic en un marcador para leer y añadir comentarios y archivos adjuntos.</div>
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="streaming-radio.png" alt="Mapa de Norteamérica con marcadores de estaciones de radio en streaming reproducibles">
54
- <div class="carousel-caption">Las personas controlan los temas, y no tienen que ser sobre seguridad. Aquí hay estaciones de radio en streaming reproducibles por categoría.</div>
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 presentación de 30 segundos generado con IA. (En Inglés.)</div>
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">&#8249;</button>
66
- <button class="carousel-btn next" id="nextBtn" aria-label="Diapositiva siguiente">&#8250;</button>
84
+ <button class="carousel-btn next" id="nextBtn" aria-label="Siguiente diapositiva">&#8250;</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>Advertir a otros sobre peligros tocando el mapa.</li>
79
- <li>Añadir comentarios, fotos, videos u otros archivos adjuntos.</li>
80
- <li>Recibir notificaciones de nuevas alertas cerca de ti o en tu mapa actual.</li>
81
- <li>Compartir en redes sociales, por mensaje de texto o correo electrónico.</li>
82
- <li>Discutir una alerta mediante videoconferencia segura. (Disponible este otoño.)</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
- <h1>Transmite con Seguridad</h1>
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 utiliza número de teléfono ni correo electrónico. No hay tienda de aplicaciones que registre las descargas. Los usuarios pueden optar por permitir que otros los reconozcan en múltiples interacciones, sin revelar su identidad real.</li>
95
- <li>Es extremadamente difícil identificar tu dirección IP o los patrones de red, porque las alertas se distribuyen de teléfono a teléfono a través de una red entre pares.</li>
96
- <li>Las notificaciones se envían directamente a través de la aplicación en primer plano en tu teléfono, sin pasar por el servicio de mensajería de Apple o Google. (Las notificaciones con la aplicación en segundo plano estarán disponibles este invierno.)</li>
97
- <li>Cada alerta desaparece de toda la red después de 24 horas. No se recopilan registros de mensajes, comentarios ni temas solicitados, y este no es un sistema de archivo ni de almacenamiento a largo plazo.</li>
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 hay cuentas. Nadie puede robar la información de tu cuenta porque no existe.</li>
103
- <li>Ningún contenido puede ser censurado; no hay una organización central que controle la red o tenga poder para modificar el contenido.</li>
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 Bloqueo</h2>
127
+ <h2>Resiste el Cierre</h2>
107
128
  <ul>
108
- <li>Ninguna tienda de aplicaciones puede bloquear Defensa Civil: la aplicación es simplemente una página web.</li>
109
- <li>Bloquear servidores web o nombres de dominio no puede impedir el acceso a quienes ya la tienen, porque la aplicación guarda en caché todo lo que necesita en el primer uso. El <a href="https://github.com/yz-social/civildefense.io" target="yz.other" rel="noopener">código fuente abierto</a> está disponible para que cualquiera pueda alojar un espejo alternativo.</li>
110
- <li>No hay servidor de back-end ni centro de datos que bloquear. Todos los datos de alertas son completamente entre pares. Todos los espejos comparten esta red: una publicación en <a href="https://civildefense.io" target="civildefense">civildefense.io</a> aparece en el espejo de <a href="https://ki1r0y.com" target="ki1r0y" rel="noopener">ki1r0y.com</a> y viceversa.</li>
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 videoconferencia.</li>
112
- <li>Defensa Civil es muy resistente a los ataques de denegación de servicio. Sin embargo, requiere una conexión a Internet funcional y, por sí sola, no ofrece protección contra un corte completo de Internet.</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, 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>La Defensa Civil opera en la <a href="https://github.com/axona-net/axona-protocol" target="yz.other" rel="noopener">red Axona</a>. Ambos son gratuitos y de código abierto.</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 entre pares</a> como <a href="https://en.wikipedia.org/wiki/Napster">Napster</a>. Tiene un mecanismo único de enrutamiento autocurativo que utiliza técnicas de aprendizaje neuronal para encontrar la mejor manera de distribuir 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>
118
- <p>También estamos desarrollando un sistema integral de criptografía preparado para la era cuántica que añadirá grupos privados para Defensa Civil y cualquier software en la red. Creemos que hay muchas aplicaciones en las que los desarrolladores, los usuarios y el público en general se benefician del software abierto y las redes seguras y descentralizadas, sin tiendas de aplicaciones, servidores ni centros de datos. Más allá de Defensa Civil, también estamos desarrollando <a href="https://en.wikipedia.org/wiki/Distributed_computing" target="yz.other" rel="noopener">colaboración multiusuario a gran escala</a> 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>
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: A su servicio en caso de emergencia">
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="Póster de Defensa Civil de la Guerra Fría: Preparar, proteger, prevalecer">
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="Póster de estilo de la Segunda Guerra Mundial que exhorta al público a usar Defensa Civil en caso de ataque nazi.">
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> &mdash; Mapeo colaborativo seguro y gratuito para poblaciones vulnerables.<br>
138
- Usamos con gratitud software abierto de:
159
+ <p><a href="/?lang=es" target="civildefense">civildefense.io</a> &mdash; 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
@@ -155,6 +155,7 @@ a:hover { color: var(--red); }
155
155
  border-top: 2px solid var(--red);
156
156
  min-height: 3.4rem;
157
157
  display: flex;
158
+ flex-direction: column;
158
159
  align-items: center;
159
160
  justify-content: center;
160
161
  }
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>