feat: agregar identidad visual e iconos del proyecto (SVG, ICO, PNG) y desplegar en producción

This commit is contained in:
2026-10-20 11:16:49 -05:00
parent 8fedd61318
commit 7b58170540
11 changed files with 102 additions and 4 deletions
+5
View File
@@ -34,6 +34,11 @@ app_compartir/
│ └── storage/ │ └── storage/
│ └── storage.go # Slugs aleatorios, sniffing MIME y guardado en disco │ └── storage.go # Slugs aleatorios, sniffing MIME y guardado en disco
├── web/ ├── web/
│ ├── static/ # Iconos, favicons y recursos estáticos de la marca
│ │ ├── favicon.ico # Icono multirresolución para navegadores
│ │ ├── favicon.svg # Icono vectorial escalable y moderno
│ │ ├── icon-192.png # Icono PWA / accesos directos móviles
│ │ └── icon-512.png # Icono alta resolución / splash screen
│ └── templates/ │ └── templates/
│ ├── base.html # Layout común con Tailwind CSS y FontAwesome │ ├── base.html # Layout común con Tailwind CSS y FontAwesome
│ ├── expired.html # Mensaje informativo de archivo guest caducado (24h) │ ├── expired.html # Mensaje informativo de archivo guest caducado (24h)
+2
View File
@@ -20,6 +20,7 @@
| 2026-10-19 | Despliegue en producción en CT 132 con supervisión SIAX Monitor | Se desplegó en `server-webapps`. Registrado en SIAX Monitor (:8080) como `siax-app-DROP_SIGMAC_APP.service`, habilitando reinicio atómico vía API sin sudo. | | 2026-10-19 | Despliegue en producción en CT 132 con supervisión SIAX Monitor | Se desplegó en `server-webapps`. Registrado en SIAX Monitor (:8080) como `siax-app-DROP_SIGMAC_APP.service`, habilitando reinicio atómico vía API sin sudo. |
| 2026-10-20 | Reasignación de puerto a 2008 para liberar 2006 a audio_control | Se acordó con pablinux liberar el puerto 2006 para `audio_control` (correlativo a SoundWave en 2005) y trasladar `drop.sigmac.app` al puerto 2008 en CT 132 y MCP Infraestructura (ID 34). | | 2026-10-20 | Reasignación de puerto a 2008 para liberar 2006 a audio_control | Se acordó con pablinux liberar el puerto 2006 para `audio_control` (correlativo a SoundWave en 2005) y trasladar `drop.sigmac.app` al puerto 2008 en CT 132 y MCP Infraestructura (ID 34). |
| 2026-10-20 | Activación de dominio público https://drop.sigmac.app | Pablinux configuró el proxy reverso Apache en CT 150 con SSL Let's Encrypt. Se optimizó `getBaseURL()` para forzar HTTPS en los enlaces y códigos QR generados cuando el Host es `drop.sigmac.app`. | | 2026-10-20 | Activación de dominio público https://drop.sigmac.app | Pablinux configuró el proxy reverso Apache en CT 150 con SSL Let's Encrypt. Se optimizó `getBaseURL()` para forzar HTTPS en los enlaces y códigos QR generados cuando el Host es `drop.sigmac.app`. |
| 2026-10-20 | Identidad visual e iconos multi-formato (SVG, ICO, PNG) | Se diseñó un icono SVG escalable con flecha bidireccional y pulsos de transferencia en colores esmeralda/cian sobre contenedor squircle grafito oscuro. Se generaron versiones PNG (64, 192, 512 px) e ICO multi-resolución, enlazados en el navbar y servidos nativamente en `/favicon.ico` y `/favicon.svg`. |
--- ---
@@ -51,6 +52,7 @@ Versión funcional completa y validada:
- [x] Soporte para proxy reverso dinámico Apache (`X-Forwarded-Proto`, `Host`) en puerto 2008 - [x] Soporte para proxy reverso dinámico Apache (`X-Forwarded-Proto`, `Host`) en puerto 2008
- [x] Registrar proyecto en MCP de Infraestructura (ID 34) y crear `id_agente.md` oficial - [x] Registrar proyecto en MCP de Infraestructura (ID 34) y crear `id_agente.md` oficial
- [x] Desplegar en producción en `server-webapps` (CT 132, :2008) y registrar en SIAX Monitor (:8080) - [x] Desplegar en producción en `server-webapps` (CT 132, :2008) y registrar en SIAX Monitor (:8080)
- [x] Crear icono SVG/PNG/ICO e integrarlo en la cabecera, navbar y servidor HTTP en producción
--- ---
+1
View File
@@ -23,6 +23,7 @@
- [x] **Centro de Comunicaciones sigma-robot:** Autorizado formalmente por Pablinux como **Agente ID 86** (`Agente drop.sigmac.app`). Token definitivo resguardado en `.env` (modo 600). - [x] **Centro de Comunicaciones sigma-robot:** Autorizado formalmente por Pablinux como **Agente ID 86** (`Agente drop.sigmac.app`). Token definitivo resguardado en `.env` (modo 600).
- [x] **Despliegue a Producción (CT 132 server-webapps):** Desplegado y ejecutándose activamente como `siax-app-DROP_SIGMAC_APP.service` supervisado por SIAX Monitor (`:8080`), escuchando en puerto interno `2008` (dejando el 2006 reservado para `audio_control`). Subida atómica y reinicio automático operativo. - [x] **Despliegue a Producción (CT 132 server-webapps):** Desplegado y ejecutándose activamente como `siax-app-DROP_SIGMAC_APP.service` supervisado por SIAX Monitor (`:8080`), escuchando en puerto interno `2008` (dejando el 2006 reservado para `audio_control`). Subida atómica y reinicio automático operativo.
- [x] **Proxy Reverso Apache (SSL port 443 en CT 150):** Configurado por Pablinux y verificado operando al 100% en `https://drop.sigmac.app` (redirección 301 de HTTP a HTTPS, terminación SSL y proxy a `:2008`). Detección inteligente de HTTPS en enlaces generados y códigos QR. - [x] **Proxy Reverso Apache (SSL port 443 en CT 150):** Configurado por Pablinux y verificado operando al 100% en `https://drop.sigmac.app` (redirección 301 de HTTP a HTTPS, terminación SSL y proxy a `:2008`). Detección inteligente de HTTPS en enlaces generados y códigos QR.
- [x] **Identidad Visual e Iconos del Proyecto:** Creación de conjunto completo de iconos SVG vectoriales y ráster (SVG, ICO multi-resolución, PNG 64/192/512 px) con temática visual de transferencia (verde esmeralda / cian sobre grafito). Integrados en `web/templates/base.html` (meta tags, favicon, icono de marca en navbar) y expuestos vía `/favicon.ico`, `/favicon.svg` y `/static/*`. Desplegado en producción.
--- ---
+2 -1
View File
@@ -53,7 +53,7 @@ compilar() {
preparar_remoto() { preparar_remoto() {
echo "" echo ""
echo "📂 Preparando estructura de directorios en $SERVIDOR:$REMOTE_DIR..." echo "📂 Preparando estructura de directorios en $SERVIDOR:$REMOTE_DIR..."
remote "mkdir -p '$REMOTE_DIR/web/templates' '$REMOTE_DIR/data/uploads'" remote "mkdir -p '$REMOTE_DIR/web/templates' '$REMOTE_DIR/web/static' '$REMOTE_DIR/data/uploads'"
echo "✅ Directorios listos" echo "✅ Directorios listos"
} }
@@ -68,6 +68,7 @@ subir() {
remote "mv -f '$REMOTE_DIR/app_compartir.tmp' '$REMOTE_DIR/app_compartir' && chmod 0755 '$REMOTE_DIR/app_compartir'" remote "mv -f '$REMOTE_DIR/app_compartir.tmp' '$REMOTE_DIR/app_compartir' && chmod 0755 '$REMOTE_DIR/app_compartir'"
copy "$SCRIPT_DIR/init.sh" "$SCRIPT_DIR/.env.example" "$SCRIPT_DIR/siax-app-DROP_SIGMAC_APP.service" "$SERVIDOR:$REMOTE_DIR/" copy "$SCRIPT_DIR/init.sh" "$SCRIPT_DIR/.env.example" "$SCRIPT_DIR/siax-app-DROP_SIGMAC_APP.service" "$SERVIDOR:$REMOTE_DIR/"
copy "$SCRIPT_DIR/web/templates/"*.html "$SERVIDOR:$REMOTE_DIR/web/templates/" copy "$SCRIPT_DIR/web/templates/"*.html "$SERVIDOR:$REMOTE_DIR/web/templates/"
copy "$SCRIPT_DIR/web/static/"* "$SERVIDOR:$REMOTE_DIR/web/static/"
remote "chmod 0755 '$REMOTE_DIR/init.sh'" remote "chmod 0755 '$REMOTE_DIR/init.sh'"
echo "✅ Archivos sincronizados en $REMOTE_DIR" echo "✅ Archivos sincronizados en $REMOTE_DIR"
} }
+11
View File
@@ -56,6 +56,17 @@ func main() {
mux := http.NewServeMux() mux := http.NewServeMux()
// Archivos estáticos e iconos
fs := http.FileServer(http.Dir("web/static"))
mux.Handle("GET /static/", http.StripPrefix("/static/", fs))
mux.HandleFunc("GET /favicon.ico", func(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "web/static/favicon.ico")
})
mux.HandleFunc("GET /favicon.svg", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "image/svg+xml")
http.ServeFile(w, r, "web/static/favicon.svg")
})
// Rutas Web // Rutas Web
mux.HandleFunc("GET /", h.Index) mux.HandleFunc("GET /", h.Index)
mux.HandleFunc("GET /v/{id}", h.View) mux.HandleFunc("GET /v/{id}", h.View)
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

+75
View File
@@ -0,0 +1,75 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="100%" height="100%">
<defs>
<!-- Background Gradient -->
<linearGradient id="bgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#020617"/>
<stop offset="50%" stop-color="#0f172a"/>
<stop offset="100%" stop-color="#030712"/>
</linearGradient>
<!-- Border Glow Gradient -->
<linearGradient id="borderGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#10b981"/>
<stop offset="50%" stop-color="#06b6d4"/>
<stop offset="100%" stop-color="#3b82f6"/>
</linearGradient>
<!-- Main Drop Gradient -->
<linearGradient id="dropGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#4ade80"/>
<stop offset="40%" stop-color="#22c55e"/>
<stop offset="80%" stop-color="#06b6d4"/>
<stop offset="100%" stop-color="#0284c7"/>
</linearGradient>
<!-- Inner Core Gradient -->
<linearGradient id="coreGrad" x1="0%" y1="100%" x2="0%" y2="0%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.95"/>
<stop offset="100%" stop-color="#ecfdf5" stop-opacity="0.75"/>
</linearGradient>
<!-- Glow Filter -->
<filter id="neonGlow" x="-20%" y="-20%" width="140%" height="140%">
<feGaussianBlur stdDeviation="14" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<filter id="softShadow" x="-10%" y="-10%" width="120%" height="120%">
<feDropShadow dx="0" dy="8" stdDeviation="12" flood-color="#000000" flood-opacity="0.6"/>
</filter>
</defs>
<!-- Base Icon Container (Squircle) -->
<rect x="16" y="16" width="480" height="480" rx="112" fill="url(#bgGrad)" stroke="url(#borderGrad)" stroke-width="10" filter="url(#softShadow)"/>
<!-- Radial Glow Behind the Symbol -->
<circle cx="256" cy="256" r="140" fill="#22c55e" opacity="0.12" filter="url(#neonGlow)"/>
<!-- Wireless Transfer Signal Arches (Top Right) -->
<path d="M 320 120 A 70 70 0 0 1 380 180" fill="none" stroke="#38bdf8" stroke-width="12" stroke-linecap="round" opacity="0.75"/>
<path d="M 345 95 A 105 105 0 0 1 425 175" fill="none" stroke="#22c55e" stroke-width="12" stroke-linecap="round" opacity="0.45"/>
<!-- Main Teardrop / Fast Drop Silhouette -->
<!-- Smooth teardrop geometry combining drop + speed -->
<path d="M 256 90
C 256 90, 375 220, 375 320
A 119 119 0 0 1 137 320
C 137 220, 256 90, 256 90 Z"
fill="url(#dropGrad)"
filter="url(#neonGlow)"/>
<!-- Negative Space Inner Arrows (Bidirectional Fast Transfer) -->
<g fill="url(#coreGrad)">
<!-- Upward Transfer Arrow Head -->
<path d="M 256 160 L 298 215 L 274 215 L 274 275 L 238 275 L 238 215 L 214 215 Z"/>
<!-- Downward Transfer Chevron / Base Anchor -->
<path d="M 220 305 L 256 348 L 292 305 L 280 295 L 256 324 L 232 295 Z" opacity="0.9"/>
<!-- Energy Transfer Dot -->
<circle cx="256" cy="385" r="9" fill="#ffffff" opacity="0.95"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

+6 -3
View File
@@ -4,6 +4,11 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{block "title" .}}drop.sigmac.app — Pasa archivos y texto al instante{{end}}</title> <title>{{block "title" .}}drop.sigmac.app — Pasa archivos y texto al instante{{end}}</title>
<!-- Favicon & Touch Icons -->
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="alternate icon" type="image/x-icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/static/icon-192.png">
<!-- Tailwind CSS CDN --> <!-- Tailwind CSS CDN -->
<script src="https://cdn.tailwindcss.com"></script> <script src="https://cdn.tailwindcss.com"></script>
<script> <script>
@@ -44,9 +49,7 @@
<header class="border-b border-slate-800 bg-slate-900/80 backdrop-blur sticky top-0 z-50"> <header class="border-b border-slate-800 bg-slate-900/80 backdrop-blur sticky top-0 z-50">
<div class="max-w-6xl mx-auto px-4 h-16 flex items-center justify-between"> <div class="max-w-6xl mx-auto px-4 h-16 flex items-center justify-between">
<a href="/" class="flex items-center gap-2.5 font-bold text-lg tracking-tight hover:opacity-90 transition"> <a href="/" class="flex items-center gap-2.5 font-bold text-lg tracking-tight hover:opacity-90 transition">
<span class="w-9 h-9 rounded-xl bg-gradient-to-tr from-brand-600 to-emerald-400 flex items-center justify-center text-slate-950 font-black shadow-lg shadow-brand-500/20"> <img src="/favicon.svg" alt="Logo" class="w-9 h-9 rounded-xl shadow-lg shadow-brand-500/20 object-contain">
<i class="fa-solid fa-cloud-arrow-up text-base"></i>
</span>
<span class="text-white">drop<span class="text-brand-500">.sigmac.app</span></span> <span class="text-white">drop<span class="text-brand-500">.sigmac.app</span></span>
</a> </a>