6.2 KiB
agents.md — Punto de entrada del proyecto: drop.sigmac.app (app_compartir)
Reglas:
- Este archivo es el eslabón más importante. Leerlo siempre antes de cualquier tarea.
- Cada cambio significativo debe reflejarse en este archivo y en los demás archivos del índice.
- Debe ser técnico, claro y detallado para que cualquier humano, agente o IA lo entienda sin explicaciones previas.
- "carga proyecto" = Leer este archivo (agents.md) para comprender las reglas, stack, rutas y objetivos del proyecto.
- "actualizar proyecto" = hacer commit de los cambios pendientes, actualizar
agents.mdy.agente/proyecto_estructura.mdcon el árbol de archivos actual.
Antecedentes
Compartir archivos, fotos, PDFs, notas o fragmentos de código entre dispositivos (móvil y PC) suele terminar dependiendo de clientes de mensajería como WhatsApp, lo cual es invasivo, incómodo y comprime o altera contenidos. app_compartir resuelve esto proveyendo una webapp ligera y directa para transferir y visualizar contenido al instante con enlace directo y código QR.
Objetivo general
Proporcionar una aplicación web ágil en Go para transferir, compartir y previsualizar archivos y textos sin fricción, con soporte de sesiones invitadas efímeras y cuentas registradas con almacenamiento permanente.
- Compartición directa: Subida mediante Drag & Drop, selección de archivos, pegado desde portapapeles (
Ctrl+V) o editor rápido de texto/código. - Generación de enlaces y QR: Obtención inmediata de enlace para compartir y código QR para apertura instantánea en dispositivos móviles.
- Visor universal integrado (
/v/{id}): Vista previa nativa de imágenes, videos, audios, PDFs, textos y código, además de descarga directa para otros tipos de archivo. - Política de retención diferenciada:
- Modo Guest (Invitado): No requiere login. El contenido subido se elimina automáticamente tras 24 horas de su subida (limpieza de archivo físico y registro en base de datos).
- Cuentas registradas (Google OAuth y WebControl): Almacenamiento permanente (no se elimina automáticamente a las 24h). El usuario puede listar sus archivos compartidos y eliminarlos manualmente cuando desee.
Stack técnico
| Componente | Tecnología |
|---|---|
| Lenguaje | Go 1.22+ / 1.27 |
| Router / HTTP | net/http estándar con enrutamiento nativo |
| Base de datos | SQLite (modernc.org/sqlite o mattn/go-sqlite3) |
| Frontend | HTML5 + Tailwind CSS + Vanilla JS / QR generator SVG |
| Autenticación | Sesiones cookies HTTP-only, WebControl (api.siax-system.net) y Google OAuth2 |
| Almacenamiento | Almacenamiento local en disco (./uploads/) con limpieza concurrente |
Módulos del sistema
1. Motor de Almacenamiento y Uploads (storage)
Estado: ✅ Completo
Manejo de archivos multipart, validación de tamaños, generación de IDs únicos (slugs) y persistencia en ./uploads/.
2. Visor Universal (viewer)
Estado: ✅ Completo Interfaz de visualización responsive con detección de tipo MIME: imágenes con zoom, video/audio HTML5, visor PDF embebido, visualizador de texto/código con botón de copiar y QR de acceso rápido.
3. Autenticación y Sesiones (auth)
Estado: ✅ Completo
- Sesión Guest por defecto (identificador anónimo/cookie).
- Integración WebControl (
https://api.siax-system.net/api/auth/login). - Integración Google OAuth2.
4. Worker de Limpieza 24h (cleaner)
Estado: ✅ Completo
Goroutine periódica (ticker) que consulta items donde is_guest = true AND expires_at <= NOW(), borrando el archivo físico del disco y la fila de SQLite. Las cuentas registradas son ignoradas por el limpiador.
Infraestructura (referencia rápida)
⚠️ La infraestructura es compartida por todo el ecosistema Telcotronics (sigma-robot, sigma-web, sigma-c, sigmac_app, CRM, ERP y otros). La fuente de verdad es
mcp.telcotronics.net— actualmente 🔧 en mantenimiento. Mientras esté en mantenimiento, la fuente alternativa es/home/pablinux/Projects/infraestructura.md. No editar.agente/infraestructura.mddirectamente — ver protocolo de sincronización.
| Parámetro | Valor |
|---|---|
| Dominio público | drop.sigmac.app |
| Puerto interno | 2006 (producción) / 8085 (local) |
| Servicio systemd | siax-app-DROP_SIGMAC_APP.service (gestionado por SIAX Monitor) |
| BD principal | SQLite local (data/compartir.db) |
| MCP ecosistema | mcp.telcotronics.net 🔧 en mantenimiento |
Variables de entorno (.env)
| Variable | Descripción | Default |
|---|---|---|
PORT |
Puerto de escucha HTTP | 8085 |
BASE_URL |
URL base pública de la app | http://localhost:8085 |
DATA_DIR |
Directorio para base de datos y uploads | ./data |
SESSION_SECRET |
Clave secreta para cookies de sesión | compartir-secret-key-change-me |
GOOGLE_CLIENT_ID |
Client ID de Google OAuth | (opcional) |
GOOGLE_CLIENT_SECRET |
Client Secret de Google OAuth | (opcional) |
WEBCONTROL_API_URL |
URL de autenticación de WebControl | https://api.siax-system.net/api/auth/login |
Para arrancar en local
# Descargar dependencias
go mod tidy
# Ejecutar el servidor
go run main.go
Índice de archivos del proyecto
app_compartir/
├── README.md
├── agents.md # ← LEER PRIMERO
├── go.mod
├── main.go
└── .agente/
├── infraestructura.md # Ecosistema — espejo del global
├── proyecto_estructura.md # Árbol de archivos y rutas
├── proyecto_memoria.md # Decisiones técnicas e historial
├── proyecto_errores.md # Registro de errores
├── objetivos.md # Qué debe cumplirse (sin fecha)
└── ideas.md # Posibilidades sin compromiso
Estado global del proyecto
| Módulo | Estado |
|---|---|
| Módulo de subida y almacenamiento | ✅ Completo |
| Visor integrado (imágenes, video, audio, PDF, texto) | ✅ Completo |
| Purga automática 24h para cuentas Guest | ✅ Completo |
| Autenticación Guest / WebControl / Google | ✅ Completo |
| Panel de gestión para usuarios registrados | ✅ Completo |