Files
app_compartir/.agente/proyecto_estructura.md

4.6 KiB

proyecto_estructura.md — Estructura del proyecto

Árbol de archivos, rutas HTTP/API y dependencias entre módulos. Actualizar al agregar o mover archivos ("actualizar proyecto").


Árbol de archivos

app_compartir/
├── .agente/
│   ├── ideas.md
│   ├── infraestructura.md
│   ├── objetivos.md
│   ├── proyecto_errores.md
│   ├── proyecto_estructura.md
│   ├── proyecto_memoria.md
│   ├── reglas.md
│   └── tareas.md
├── internal/
│   ├── auth/
│   │   └── auth.go          # Manejo de sesiones, WebControl y Google OAuth2
│   ├── cleaner/
│   │   └── cleaner.go       # Worker periódico de purga (24h para guest)
│   ├── config/
│   │   └── config.go        # Carga de configuración y .env
│   ├── db/
│   │   └── db.go            # SQLite DAL, esquema y consultas
│   ├── handlers/
│   │   └── handlers.go      # Rutas HTTP, endpoints API y renderizado HTML
│   ├── models/
│   │   └── models.go        # Estructuras de datos (Share, User, Session)
│   └── storage/
│       └── storage.go       # Slugs aleatorios, sniffing MIME y guardado en disco
├── web/
│   ├── static/              # Iconos, favicons y recursos estáticos de la marca
│   │   ├── favicon.ico      # Icono multirresolución para navegadores
│   │   ├── favicon.svg      # Icono vectorial escalable y moderno
│   │   ├── icon-192.png     # Icono PWA / accesos directos móviles
│   │   └── icon-512.png     # Icono alta resolución / splash screen
│   └── templates/
│       ├── base.html        # Layout común con Tailwind CSS y FontAwesome
│       ├── expired.html     # Mensaje informativo de archivo guest caducado (24h)
│       ├── index.html       # Drag & Drop, pegar portapapeles y compartir texto
│       ├── login.html       # Login con WebControl y Google OAuth
│       ├── my_shares.html   # Panel de usuario con sus archivos permanentes
│       └── viewer.html      # Visor universal (imágenes, video, audio, PDF, código)
├── .env.example
├── .gitignore
├── desplegar.sh             # Script de compilación y despliegue (máquina dev)
├── id_agente.md             # Identidad oficial del agente en el ecosistema
├── init.sh                  # Script ejecutor local en el servidor
├── servers.conf.example     # Plantilla de credenciales SSH para despliegue
├── siax-app-DROP_SIGMAC_APP.service # Definición de servicio systemd para SIAX Monitor
├── go.mod
├── go.sum
├── main.go                  # Punto de entrada y servidor HTTP Go
├── main_test.go             # Tests unitarios/integración (purga 24h vs permanencia)
├── README.md
└── agents.md                # Punto de entrada del agente

Rutas HTTP / Endpoints

Método Ruta Handler Descripción
GET / h.Index Página principal de subida (drag & drop, portapapeles, texto)
POST /api/upload h.Upload Subida de archivos multipart
POST /api/share-text h.ShareText Subida rápida de notas, textos o código
GET /v/{id} h.View Visor universal de contenidos compartidos
GET /d/{id} h.Download Descarga directa forzada (attachment)
GET /raw/{id} h.Raw Visualización directa (inline)
GET /qr/{id} h.QR Generador dinámico de código QR en PNG
DELETE /api/shares/{id} h.DeleteShare Eliminación de archivo (usuario propietario)
GET /login h.LoginView Pantalla de inicio de sesión
POST /login/webcontrol h.WebControlLogin Autenticación con credenciales WebControl
GET /auth/google h.GoogleLogin Redirección OAuth a Google
GET /auth/google/callback h.GoogleCallback Retorno de autenticación OAuth Google
GET /logout h.Logout Cierre de sesión y limpieza de cookie
GET /mis-archivos h.MyShares Panel con archivos permanentes del usuario

Dependencias entre módulos

  • main.go orquesta config, db, cleaner, auth y handlers.
  • handlers utiliza storage para guardar archivos y qrcode para generar códigos de acceso móvil.
  • cleaner consulta periódicamente db y elimina archivos físicos de data/uploads/ para shares is_guest = true con expires_at <= NOW(). Las cuentas registradas son ignoradas por el cleaner.