140 lines
5.6 KiB
Markdown
140 lines
5.6 KiB
Markdown
# 🚀 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 <kbd>Ctrl+V</kbd> 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 <kbd>Ctrl+V</kbd> 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 ./...
|
|
```
|
|
|
|
---
|
|
|
|
## 📂 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
|
|
|
|
Este proyecto forma parte del ecosistema Telcotronics y se encuentra registrado en la infraestructura compartida del MCP (`mcp.telcotronics.net` / `infraestructura.md`).
|
|
Para más detalles técnicos y reglas del agente, consultar [`agents.md`](agents.md).
|