# app_compartir Aplicación web de alto rendimiento en Go para compartir archivos, fotos, documentos y texto/código al instante entre dispositivos (móvil y PC), sin depender de clientes de mensajería como WhatsApp. --- ## Características - ⚡ **Sin fricción:** Subida mediante Drag & Drop, selección de archivos, pegado desde portapapeles (`Ctrl+V`) o editor de notas/código. - 📱 **QR instantáneo:** Generación automática de código QR para escanear y abrir de inmediato en el teléfono. - 👁️ **Visor universal (`/v/{id}`):** - **Imágenes:** Zoom interactivo, pantalla completa y alta fidelidad. - **Video y Audio:** Reproductor HTML5 integrado. - **PDFs:** Visor interactivo incrustado en el navegador. - **Texto y Código:** Formato monospace con botón para copiar al portapapeles en 1 clic. - **Otros archivos:** Ficha de descarga con detección de tipo MIME y peso exacto. - ⏳ **Política de retención 24h para invitados:** - Los archivos subidos en **Modo Invitado (Guest)** se purgan automáticamente tras 24 horas del disco y de la base de datos. - Los usuarios autenticados con **WebControl** o **Google OAuth** disponen de **almacenamiento permanente** y panel de gestión para sus archivos. --- ## Requisitos - Go 1.22+ ## Instalación y Arranque ```bash # Copiar variables de entorno cp .env.example .env # Descargar dependencias y compilar go mod tidy go build -o app_compartir main.go # Ejecutar el servidor (puerto 8085 por defecto) ./app_compartir ``` --- ## Variables de Entorno | Variable | Descripción | Default | |---|---|---| | `PORT` | Puerto de escucha HTTP | `8085` | | `BASE_URL` | URL pública de la aplicación | `http://localhost:8085` | | `DATA_DIR` | Carpeta para base de datos y uploads | `./data` | | `SESSION_SECRET` | Clave secreta para cookies de sesión | `super-secret-...` | | `WEBCONTROL_API_URL` | URL de la API de WebControl | `https://api.siax-system.net` | | `GOOGLE_CLIENT_ID` | Client ID de Google OAuth | (opcional) | | `GOOGLE_CLIENT_SECRET` | Client Secret de Google OAuth | (opcional) | --- ## Pruebas automatizadas ```bash go test -v ./... ```