3.7 KiB
3.7 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
├── 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/
│ └── 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
├── 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.goorquestaconfig,db,cleaner,authyhandlers.handlersutilizastoragepara guardar archivos yqrcodepara generar códigos de acceso móvil.cleanerconsulta periódicamentedby elimina archivos físicos dedata/uploads/para sharesis_guest = trueconexpires_at <= NOW(). Las cuentas registradas son ignoradas por el cleaner.