Files
app_compartir/README.md
T

7.2 KiB

🚀 drop.sigmac.app

Pasa fotos, notas, PDFs y archivos entre tu teléfono y tu ordenador en segundos — sin necesidad de abrir WhatsApp ni mandar mensajes a tu propio chat.

Una aplicación web ágil, moderna y ligera desarrollada en Go. Permite transferir cualquier tipo de archivo o texto con generación instantánea de enlace y código QR para escanearlo con la cámara del móvil.


🎯 ¿Qué problema resuelve?

Pasarse una foto de la PC al celular, un fragmento de código, una contraseña temporal o un PDF habitualmente obliga a abrir WhatsApp Web, buscar tu propio chat ("Chat contigo mismo"), enviar el archivo (que a menudo se recomprime) y luego borrarlo.

drop.sigmac.app elimina toda esa fricción:

  1. Arrastras el archivo o pegas una captura con Ctrl+V en el navegador.
  2. Apuntas con la cámara de tu móvil al código QR que aparece en pantalla.
  3. ¡Listo! Se abre el visor en tu móvil de forma inmediata.

✨ Características Principales

📤 Subida sin complicaciones

  • Drag & Drop: Arrastra cualquier archivo a la ventana.
  • Portapapeles directo: Presiona Ctrl+V en cualquier parte de la página para subir capturas de pantalla o texto copiado al instante.
  • Pestaña Texto / Código: Comparte fragmentos de código, notas de reuniones o enlaces sin crear archivos de texto manualmente.

📱 Escaneo QR y Enlaces Cortos

  • Cada elemento compartido genera una URL corta (/v/slug) y un código QR nativo en pantalla.
  • Puedes escanearlo directamente desde cualquier smartphone sin instalar ninguna app adicional.

👁️ Visor Universal Integrado (/v/{id})

No requiere descargar el archivo a ciegas para ver qué es:

  • 🖼️ Imágenes: Visor con zoom al 100%, pantalla completa y alta calidad (PNG, JPG, GIF, WebP, SVG).
  • 🎥 Video: Reproductor HTML5 integrado para previsualizar grabaciones o clips (MP4, WebM).
  • 🎵 Audio: Reproductor nativo para notas de voz o música (MP3, WAV, OGG).
  • 📄 PDFs: Lector embebido interactivo en el navegador.
  • 💻 Texto / Código: Formato legible con resaltado monospace y botón para Copiar texto al portapapeles con un clic.
  • 📦 Otros archivos: Ficha técnica con tamaño exacto, tipo de archivo y botón directo de descarga.

🔒 Política de Retención: Invitado vs Cuenta Registrada

Característica 👤 Modo Invitado (Guest) 🛡️ Cuenta Registrada (WebControl / Google)
¿Requiere inicio de sesión? No (usar y compartir de inmediato) Sí (login fácil con 1 clic)
Tiempo de vida del archivo ⏰ 24 horas exactas ♾️ Permanente (no expira)
Eliminación automática Sí, el worker purga archivo y registro tras 24h Nunca (se conserva hasta que lo borres)
Panel "Mis Archivos" No disponible ✅ Sí (/mis-archivos) con historial y métricas
Eliminación manual No requerida (se auto-destruye) ✅ Sí, botón para eliminar cuando quieras

🛠️ Stack Tecnológico

  • Lenguaje: Go (Go 1.22+ / 1.27 con routing nativo net/http)
  • Base de Datos: SQLite local en modo WAL (vía modernc.org/sqlite, 100% puro Go sin dependencias CGO)
  • Generador QR: github.com/skip2/go-qrcode (generación ultrarrápida de QR PNG)
  • Frontend: HTML5, Tailwind CSS y FontAwesome
  • Autenticación:
    • Telcotronics WebControl (https://api.siax-system.net/api/auth/login)
    • Google OAuth2

🚀 Puesta en Marcha Rápida

1. Requisitos

  • Go 1.22 o superior instalado en el sistema.

2. Configurar entorno

Copia la plantilla de variables de entorno:

cp .env.example .env

Parámetros disponibles en .env:

PORT=8085
BASE_URL=http://localhost:8085
DATA_DIR=./data
SESSION_SECRET=clave_secreta_para_cookies
WEBCONTROL_API_URL=https://api.siax-system.net
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=

3. Compilar y Arrancar

# Descargar dependencias
go mod tidy

# Compilar binario autónomo
go build -o app_compartir main.go

# Ejecutar el servidor
./app_compartir

Abre tu navegador en: http://localhost:8085


🧪 Pruebas Automatizadas

El proyecto cuenta con tests automatizados que comprueban la regla estricta de caducidad a las 24 horas para invitados y la permanencia de usuarios registrados:

go test -v ./...

🚢 Despliegue a Producción (drop.sigmac.app)

El proyecto sigue la convención estándar del ecosistema Telcotronics basada en dos scripts:

  1. Configurar destino:

    cp servers.conf.example servers.conf
    # Ajustar HOST (192.168.10.160), SSH_USER y REMOTE_DIR si es necesario
    
  2. Lanzar despliegue desde tu máquina:

    ./desplegar.sh
    # O por parámetro directo: ./desplegar.sh todo
    

    El script compila localmente el binario release para Linux amd64 (CGO_ENABLED=0), transfiere el binario y las plantillas a server-webapps CT 132 (192.168.10.160) y ejecuta init.sh para arrancar el servidor en el puerto 2006 en segundo plano.

  3. Ver logs en el servidor:

    ./desplegar.sh estado
    

📂 Estructura del Código

app_compartir/
├── internal/
│   ├── auth/          # Sesiones HTTP-only, WebControl y Google OAuth
│   ├── cleaner/       # Worker periódico de purga automática 24h para invitados
│   ├── config/        # Variables de entorno y rutas
│   ├── db/            # DAL de SQLite, esquema y consultas seguras
│   ├── handlers/      # Controladores HTTP: upload, visor, QR, auth, descarga
│   ├── models/        # Estructuras de datos (Share, User, Session)
│   └── storage/       # Generador de slugs seguros y almacenamiento en disco
├── web/
│   └── templates/     # Plantillas HTML (base, index, visor, login, mis archivos)
├── .agente/           # Documentación interna del agente y ecosistema Telcotronics
├── main.go            # Servidor HTTP principal y ciclo de vida de la app
├── main_test.go       # Tests de integración de retención y purga
└── README.md          # Esta guía

🏢 Ecosistema Telcotronics e Infraestructura

Este proyecto forma parte oficial del Ecosistema Telcotronics y se encuentra integrado con las siguientes especificaciones:

Entorno / Servicio Detalle de Conexión
Registro Central MCP Registrado en MariaDB como Servicio ID 34 (Categoría: application)
Centro de Agentes (sigma-robot) Agente ID 86 (Agente drop.sigmac.app) activo y autorizado vía API REST
Servidor de Producción server-webapps CT 132 (192.168.10.160), puerto interno 2008
Dominio y Proxy Apache https://drop.sigmac.app con terminación SSL/TLS Let's Encrypt (✅ Operativo)
Supervisión de Procesos Servicio siax-app-DROP_SIGMAC_APP.service en SIAX Monitor
Identidad y Normas Consultar id_agente.md, agents.md y .agente/reglas.md
Espejo de Infraestructura Sincronizado en .agente/infraestructura.md desde /home/pablinux/Projects/infraestructura.md