# 🚀 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: ```bash cp .env.example .env ``` Parámetros disponibles en `.env`: ```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 ```bash # 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: ```bash 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:** ```bash 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:** ```bash ./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:** ```bash ./desplegar.sh estado ``` --- ## 📂 Estructura del Código ```text 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](http://192.168.10.160:8080) | | **Identidad y Normas** | Consultar [`id_agente.md`](id_agente.md), [`agents.md`](agents.md) y [`.agente/reglas.md`](.agente/reglas.md) | | **Espejo de Infraestructura** | Sincronizado en [`.agente/infraestructura.md`](.agente/infraestructura.md) desde `/home/pablinux/Projects/infraestructura.md` |