# OxiCloud TODO List Este documento contiene la lista de tareas para el desarrollo de OxiCloud, un sistema de almacenamiento en la nube minimalista y eficiente similar a NextCloud pero optimizado para rendimiento. ## Fase 1: Funcionalidades básicas de archivos ### Sistema de carpetas - [ ] Implementar API para crear carpetas - [ ] Añadir soporte de rutas jerárquicas en el backend - [ ] Actualizar UI para mostrar estructura de carpetas (árbol) - [ ] Implementar navegación entre carpetas - [ ] Añadir funcionalidad para renombrar carpetas - [ ] Agregar opción de mover archivos entre carpetas ### Previsualización de archivos - [ ] Implementar visor de imágenes integrado - [ ] Añadir visor de PDF básico - [ ] Generar miniaturas para imágenes - [ ] Implementar iconos específicos según tipo de archivo - [ ] Añadir vista previa de texto/código ### Buscador mejorado - [ ] Implementar búsqueda por nombre - [ ] Añadir filtros por tipo de archivo - [ ] Implementar búsqueda por rango de fechas - [ ] Agregar filtro por tamaño de archivo - [ ] Añadir búsqueda dentro de carpetas específicas - [ ] Implementar caché para resultados de búsqueda ### Optimizaciones UI/UX - [ ] Mejorar diseño responsive para móviles - [ ] Implementar drag & drop entre carpetas - [ ] Añadir soporte para selección múltiple de archivos - [ ] Implementar subida de archivos múltiples - [ ] Añadir indicadores de progreso para operaciones largas - [ ] Implementar notificaciones en UI para eventos ## Fase 2: Autenticación y multiusuario ### Sistema de usuarios - [ ] Diseñar modelo de datos para usuarios - [ ] Implementar registro de usuarios - [ ] Crear sistema de inicio de sesión - [ ] Añadir página de perfil de usuario - [ ] Implementar recuperación de contraseña - [ ] Separar almacenamiento por usuario ### Cuotas y permisos - [ ] Implementar sistema de cuotas de almacenamiento - [ ] Añadir sistema básico de roles (admin/usuario) - [ ] Crear panel de administración - [ ] Implementar permisos a nivel de carpeta - [ ] Añadir monitoreo de uso de almacenamiento ### Seguridad básica - [ ] Implementar hashing seguro de contraseñas con Argon2 - [ ] Añadir gestión de sesiones - [ ] Implementar token de autenticación JWT - [ ] Añadir protección CSRF - [ ] Implementar límites de intentos de inicio de sesión - [ ] Crear sistema de registro de actividad (logs) ## Fase 3: Características de colaboración ### Compartir archivos - [ ] Implementar generación de enlaces compartidos - [ ] Añadir configuración de permisos para enlaces - [ ] Implementar protección con contraseña para enlaces - [ ] Añadir fechas de expiración para enlaces compartidos - [ ] Crear página para gestionar todos los recursos compartidos - [ ] Implementar notificaciones al compartir ### Papelera de reciclaje - [ ] Diseñar modelo para almacenar archivos eliminados - [ ] Implementar eliminación soft (mover a papelera) - [ ] Añadir funcionalidad para restaurar archivos - [ ] Implementar purga automática por tiempo - [ ] Añadir opción de vaciar papelera manualmente - [ ] Implementar límites de almacenamiento para papelera ### Registro de actividad - [ ] Crear modelo para eventos de actividad - [ ] Implementar registro de operaciones CRUD - [ ] Añadir registro de accesos y eventos de seguridad - [ ] Crear página de historial de actividad - [ ] Implementar filtros para el registro de actividad - [ ] Añadir exportación de registro ## Fase 4: API y sincronización ### API REST completa - [ ] Diseñar especificación OpenAPI - [ ] Implementar endpoints para operaciones de archivos - [ ] Añadir endpoints para usuarios y autenticación - [ ] Implementar documentación automática (Swagger) - [ ] Crear sistema de tokens de API - [ ] Implementar limitación de tasa (rate limiting) - [ ] Añadir versionado de API ### Soporte WebDAV - [ ] Implementar servidor WebDAV básico - [ ] Añadir autenticación para WebDAV - [ ] Implementar operaciones PROPFIND - [ ] Añadir soporte para bloqueo (locking) - [ ] Probar compatibilidad con clientes estándar - [ ] Optimizar rendimiento WebDAV ### Cliente de sincronización - [ ] Diseñar arquitectura de cliente en Rust - [ ] Implementar sincronización unidireccional - [ ] Añadir sincronización bidireccional - [ ] Implementar detección de conflictos - [ ] Añadir opciones de configuración - [ ] Crear versión mínima de cliente para Windows/macOS/Linux ## Fase 5: Funcionalidades avanzadas ### Cifrado de archivos - [ ] Investigar y seleccionar algoritmos de cifrado - [ ] Implementar cifrado en reposo para archivos - [ ] Añadir gestión de claves - [ ] Implementar cifrado para archivos compartidos - [ ] Crear documentación de seguridad ### Versionado de archivos - [ ] Diseñar sistema de almacenamiento de versiones - [ ] Implementar historial de versiones - [ ] Añadir visualización de diferencias - [ ] Implementar restauración de versiones - [ ] Añadir políticas de retención de versiones ### Aplicaciones básicas - [ ] Diseñar sistema de plugins/apps - [ ] Implementar visor/editor de texto básico - [ ] Añadir aplicación de notas simple - [ ] Implementar calendario básico - [ ] Crear API para aplicaciones de terceros ## Optimizaciones continuas ### Backend - [ ] Implementar caché de archivos con Rust - [ ] Optimizar transmisión de archivos grandes - [ ] Añadir compresión adaptativa según tipo de archivo - [ ] Implementar procesamiento asíncrono para tareas pesadas - [ ] Optimizar consultas a base de datos - [ ] Implementar estrategias de escalado ### Frontend - [ ] Optimizar carga inicial de assets - [ ] Implementar lazy loading para listas grandes - [ ] Añadir caché local (localStorage/IndexedDB) - [ ] Optimizar renderizado de UI - [ ] Implementar precarga inteligente (prefetching) - [ ] Añadir soporte offline básico ### Almacenamiento - [ ] Investigar opciones de deduplicación - [ ] Implementar almacenamiento por bloques - [ ] Añadir compresión transparente según tipo de archivo - [ ] Implementar rotación y archivado de logs - [ ] Crear sistema de respaldo automatizado - [ ] Añadir soporte para almacenamiento distribuido ## Infraestructura y despliegue - [ ] Crear configuración para Docker - [ ] Implementar CI/CD con GitHub Actions - [ ] Añadir pruebas automatizadas - [ ] Crear documentación de instalación - [ ] Implementar monitoreo y alertas - [ ] Añadir sistema de actualizaciones automáticas