Files
2026-04-01 23:14:42 +02:00

439 lines
16 KiB
Markdown

# OxiCloud TODO List
This document contains the task list for the development of OxiCloud, a minimalist and efficient cloud storage system similar to NextCloud but optimized for performance.
## Phase 1: Basic File Functionalities
### Folder System
- [x] Implement API for creating folders
- [x] Add support for hierarchical paths in the backend
- [ ] Update UI to show folder structure (tree)
- [x] Implement navigation between folders
- [x] Add functionality to rename folders
- [x] Add option to move files between folders
### File Preview
- [x] Implement integrated image viewer
- [ ] Add basic PDF viewer
- [ ] Generate thumbnails for images
- [x] Implement specific icons by file type
- [ ] Add text/code preview
### Enhanced Search
- [x] Implement search by name
- [x] Add filters by file type
- [x] Implement search by date range
- [x] Add filter by file size
- [x] Add search within specific folders
- [x] Implement cache for search results
### UI/UX Optimizations
- [ ] Improve responsive design for mobile devices
- [ ] Implement drag & drop between folders
- [x] Add support for multiple file selection
- [x] Implement multiple file uploads
- [ ] Add progress indicators for long operations
- [x] Implement UI notifications for events
- [ ] Photos timeline: virtual scrolling
- Solo mantener en el DOM las filas visibles en el viewport + un margen. Al hacer scroll, reciclar los nodos que salen por arriba para los que entran por abajo.
- Ventajas: Funciona perfectamente con 50,000 fotos. Uso de memoria constante.
- Excesiva para ahora — evaluar cuando el volumen de fotos lo justifique.
## Phase 2: Authentication and Multi-User
### User System
- [x] Design data model for users
- [x] Implement user registration
- [x] Create login system
- [ ] Add user profile page
- [ ] Implement password recovery
- [x] Separate storage by user
### Quotas and Permissions
- [x] Implement storage quota system
- [x] Add basic role system (admin/user)
- [ ] Create admin panel
- [x] Implement folder-level permissions
- [x] Add storage usage monitoring
### Basic Security
- [x] Implement secure password hashing with Argon2
- [x] Add session management
- [x] Implement JWT authentication token
- [ ] Add CSRF protection
- [ ] Implement login attempt limits
- [ ] Create activity logging system
## Phase 3: Collaboration Features
### File Sharing
- [x] Implement shared link generation
- [x] Add permission configuration for links
- [x] Implement password protection for links
- [ ] Add expiration dates for shared links
- [x] Create page to manage all shared resources
- [ ] Implement sharing notifications
### Recycle Bin
- [x] Design model for storing deleted files
- [x] Implement soft deletion (move to trash)
- [x] Add functionality to restore files
- [x] Implement automatic purge by time
- [x] Add option to manually empty trash
- [x] Implement storage limits for trash
### Activity Log
- [ ] Create model for activity events
- [ ] Implement logging of CRUD operations
- [ ] Add logging of access and security events
- [ ] Create activity history page
- [ ] Implement filters for activity log
- [ ] Add log export
## Phase 4: API and Synchronization
### Complete REST API
- [x] Design OpenAPI specification
- [x] Implement endpoints for file operations
- [x] Add endpoints for users and authentication
- [ ] Implement automatic documentation (Swagger)
- [ ] Create API token system
- [ ] Implement rate limiting
- [ ] Add API versioning
### WebDAV Support
- [x] Implement basic WebDAV server
- [x] Add authentication for WebDAV
- [x] Implement PROPFIND operations
- [x] Add support for locking
- [x] Test compatibility with standard clients
- [x] Optimize WebDAV performance
- [ ] Implement Range Requests (RFC 7233) for resumable transfers
- [ ] Support partial file updates with HTTP PATCH for bandwidth efficiency
### Sync Client
- [ ] Design client architecture in Rust
- [ ] Implement unidirectional synchronization
- [ ] Add bidirectional synchronization
- [ ] Implement conflict detection
- [ ] Add configuration options
- [ ] Create minimal client version for Windows/macOS/Linux
- [ ] Implement bandwidth throttling controls
- [ ] Add delta synchronization for large files
- [ ] Support synchronization pausing and resuming
## Phase 5: Advanced Features
### File Encryption
- [ ] Research and select encryption algorithms
- [ ] Implement at-rest encryption for files
- [ ] Add key management
- [ ] Implement encryption for shared files
- [ ] Create security documentation
### File Versioning
- [ ] Design version storage system
- [ ] Implement version history
- [ ] Add difference visualization
- [ ] Implement version restoration
- [ ] Add version retention policies
### Basic Applications
- [x] Design plugin/app system
- [ ] Implement basic text viewer/editor
- [ ] Add simple notes application
- [x] Implement basic calendar
- [x] Create API for third-party applications
## Continuous Optimizations
### Backend
- [x] Implement file cache with Rust
- [x] Enable Link Time Optimization (LTO) for better performance
- [x] Optimize large file transmission
- [x] Add adaptive compression by file type
- [x] Implement asynchronous processing for heavy tasks
- [x] Optimize database queries
- [ ] Implement scaling strategies
- [x] Implement transfer acceleration with multipart chunking
- [ ] Implement differential sync algorithm (similar to rsync)
- [x] Add strong ETag support for more efficient caching
### Frontend
- [ ] Optimize initial asset loading
- [ ] Implement lazy loading for large lists
- [x] Add local cache (localStorage/IndexedDB)
- [ ] Optimize UI rendering
- [ ] Implement intelligent prefetching
- [ ] Add basic offline support
- [ ] Implement client-side image resizing before upload
- [x] Add HTTP/2 support for multiplexing requests
- [ ] Implement progressive image loading
### Storage
- [ ] Research deduplication options
- [ ] Implement block storage
- [x] Add transparent compression by file type
- [ ] Implement log rotation and archiving
- [ ] Create automated backup system
- [ ] Add support for distributed storage
- [ ] Implement media transcoding for optimized delivery
- [x] Add content-aware compression by file format
- [ ] Implement dynamic thumbnail resizing based on viewport
### Bandwidth & Transfer Optimization
- [ ] **Sub-file chunked dedup (Restic/Borg style)**
- [ ] Implement Content-Defined Chunking (CDC) with FastCDC/Rabin rolling hash
- [ ] Variable-size chunks (target 1-4 MB) instead of whole-file blobs
- [ ] Per-chunk BLAKE3 hashing and dedup (saves storage + bandwidth on similar files)
- [ ] Chunk-level Zstd compression (better ratio than whole-file)
- [ ] Migrate existing whole-file blobs to chunked storage
- [ ] **Delta sync / rsync-style transfers**
- [ ] Implement rolling checksum algorithm for block-level diffing
- [ ] Client sends only changed blocks on re-upload (not the full file)
- [ ] Server-side block assembly from delta + existing chunks
- [ ] Huge savings for large files with small edits (VMs, databases, ISOs)
- [ ] **Resumable uploads & downloads (RFC 7233 / tus.io)**
- [ ] Server tracks partial upload state; client resumes from last byte on failure
- [ ] HTTP Range responses for download resume after network drops
- [ ] tus.io protocol support for cross-client compatibility
- [ ] **Client-side optimization before upload**
- [ ] Resize images to configurable max dimensions before upload (e.g. 4K cap)
- [ ] Re-encode videos to efficient codec (H.265/AV1) client-side before upload
- [ ] ⚡ **HIGH IMPACT / QUICK WIN** — Pre-compute BLAKE3 hash client-side (WASM); query server before upload; skip transfer entirely if blob already exists (instant dedup, zero bandwidth)
- [ ] **Server-side on-demand transcoding**
- [ ] Store originals; serve WebP/AVIF for images on request (saves download BW)
- [ ] Adaptive video streaming (HLS/DASH) from stored originals
- [ ] Lazy generation + cache of transcoded variants
- [ ] **Smart sync (placeholder/on-demand files)**
- [ ] Sync client downloads metadata only; fetch file content on first open
- [ ] Pin/unpin files for offline availability
- [ ] Automatic eviction of least-recently-used local copies
- [ ] **Transfer-level compression**
- [ ] Zstd streaming compression for HTTP responses (better than gzip for large files)
- [ ] Brotli for static assets; Zstd for dynamic/binary content
- [ ] Content-aware: skip compression for already-compressed formats (JPEG, ZIP, etc.)
- [ ] **Batched & multiplexed operations**
- [ ] Batch small file uploads into single request (tar-stream or multipart bundle)
- [ ] HTTP/2 multiplexing for parallel chunk transfers on single connection
- [ ] Server-side ZIP streaming for multi-file download (already partial)
## Infrastructure and Deployment
- [x] Create Docker configuration
- [ ] Implement CI/CD with GitHub Actions
- [x] Add automated tests
- [x] Create installation documentation
- [ ] Implement monitoring and alerts
- [ ] Add automatic update system
## New Comprehensive Roadmap
### Advanced File Management
- [x] Implement optimized file upload/download
- [x] Implement chunked upload for large files
- [x] Add file integrity verification
- [x] Develop adaptive compression by file type
- [ ] Implement preview for different file types
- [ ] Create integrated PDF viewer
- [ ] Add office document viewer
- [ ] Develop code viewer with syntax highlighting
- [ ] Add online document editing
- [ ] Integrate text/markdown editor
- [ ] Implement collaborative spreadsheet editor
- [ ] Develop simple image editor
- [ ] Implement file version control
- [ ] Create version history system
- [ ] Add previous version restoration
- [ ] Develop visual changes comparator
### Multi-device Synchronization
- [ ] Develop synchronization clients
- [ ] Windows client using Rust
- [ ] macOS client using Rust
- [ ] Linux client using Rust
- [ ] Create mobile applications
- [ ] Android application
- [ ] iOS application
- [ ] Implement selective synchronization
- [ ] Allow specific folder selection
- [ ] Add synchronization profiles
- [ ] Develop synchronization by file types
- [ ] Develop delta synchronization
- [ ] Implement incremental change transfer
- [ ] Add differential compression
- [ ] Implement intelligent retransmission
### Advanced Sharing
- [x] Improve public links
- [ ] Add configurable expiration date
- [x] Implement password protection
- [ ] Develop download limits
- [x] Implement granular permissions
- [x] Add per-folder/file permissions
- [x] Develop customizable roles
- [x] Implement permission inheritance
- [ ] Add real-time collaboration
- [ ] Develop collaborative editing
- [ ] Add presence indicators
- [ ] Implement per-user change history
- [ ] Integrate with social networks
- [ ] Add direct sharing to popular platforms
- [ ] Implement customized preview for networks
- [ ] Develop sharing statistics
### Robust Security
- [ ] Implement end-to-end encryption
- [ ] Research and select optimal algorithms
- [ ] Develop key management system
- [ ] Add in-transit and at-rest encryption
- [ ] Add multi-factor authentication
- [ ] Integrate app-based authentication
- [ ] Add support for U2F/Yubikey
- [ ] Implement backup codes
- [x] Develop password policies
- [x] Add customizable requirements
- [ ] Implement password rotation
- [ ] Develop compromised password detection
- [ ] Create detailed audit system
- [ ] Log access and actions
- [ ] Add security alerts
- [ ] Implement configurable log retention
### Personal Data Management
- [x] Complete CardDAV implementation
- [x] Finalize contact synchronization
- [x] Add support for contact groups
- [x] Implement custom fields
- [x] Complete CalDAV implementation
- [x] Finalize calendar synchronization
- [x] Add support for recurring events
- [ ] Implement notifications/reminders
- [ ] Develop password manager
- [ ] Create encrypted storage
- [ ] Add password generator
- [ ] Implement auto-fill
- [ ] Implement encrypted notes
- [ ] Develop notes editor
- [ ] Add tags and organization
- [ ] Implement full-text search
### Automation and Workflows
- [ ] Create automated rules
- [ ] Develop automatic file organization
- [ ] Add scheduled actions
- [ ] Implement customizable triggers
- [ ] Integrate with productivity tools
- [ ] Develop connectors for popular services
- [ ] Add webhooks for integration
- [x] Implement API for extensions
- [ ] Create customizable workflows
- [ ] Develop document approval/review
- [ ] Add configurable states and transitions
- [ ] Implement automated notifications
- [ ] Implement scheduled actions
- [ ] Add automated backups
- [ ] Develop intelligent archiving
- [ ] Implement periodic analysis
### Intelligence and Analysis
- [ ] Implement OCR for images
- [ ] Add text recognition in images
- [ ] Develop indexing of recognized content
- [ ] Implement search in extracted text
- [ ] Create automatic categorization
- [ ] Develop content-based classification
- [ ] Add intelligent grouping
- [ ] Implement organization suggestions
- [ ] Add intelligent tagging
- [ ] Implement entity recognition
- [ ] Develop topic analysis
- [ ] Add facial tagging for photos
- [ ] Develop personalized recommendations
- [ ] Implement usage-based suggestions
- [ ] Add relevant content discovery
- [ ] Develop needs prediction
- [ ] Implement intelligent photo gallery
- [ ] Create advanced photo viewer with smooth zoom and navigation
- [ ] Add EXIF metadata extraction and visualization
- [ ] Implement map of photo locations
- [ ] Develop automatic timeline by date/event
- [ ] Add recognition and grouping by identified people
- [ ] Implement automatic album creation by events, places, and people
- [ ] Develop photo search using combined filters (person+place+date)
- [ ] Add scene and object detection in photos (beach, mountain, animals, etc.)
- [ ] Implement similar or duplicate photo detection
- [ ] Add non-destructive basic editing features (crop, filters, adjustments)
- [ ] Video support
### Enterprise Collaboration
- [ ] Create shared workspaces
- [ ] Develop team structures
- [ ] Add project templates
- [ ] Implement customized dashboards
- [x] Implement role-based access control
- [x] Develop customizable roles
- [x] Add granular access policies
- [ ] Implement segregation of duties
- [ ] Add comments and annotations
- [ ] Develop document annotations
- [ ] Add highlighting and marking
- [ ] Implement comment resolution
- [ ] Integrate videoconference services
- [ ] Add direct calls from platform
- [ ] Develop screen sharing
- [ ] Implement meeting recording
### Advanced Technical Optimizations
- [ ] Implement distributed architecture
- [ ] Develop high availability
- [ ] Add load balancing
- [ ] Implement fault tolerance
- [ ] Create tiered storage
- [ ] Develop hot/warm/cold stratification
- [ ] Add automatic migration policies
- [ ] Implement cost optimization
- [x] Optimize compression and deduplication
- [x] Develop adaptive compression
- [ ] Add block-level deduplication
- [ ] Implement similar file detection
### Interoperability and Extensibility
- [x] Improve RESTful API
- [x] Complete OpenAPI documentation
- [ ] Add API versioning
- [ ] Implement intelligent rate limiting
- [ ] Develop webhook system
- [ ] Add configurable triggers
- [ ] Implement retries and reliability
- [ ] Develop delivery verification
- [ ] Implement OAuth for third parties
- [ ] Add standard authentication flows
- [ ] Develop granular permission management
- [ ] Implement access revocation
- [ ] Create developer SDK
- [ ] Develop client libraries for popular languages
- [ ] Add examples and documentation
- [ ] Implement testing sandbox
### Governance and Compliance
- [x] Implement retention policies
- [x] Develop configurable retention by type
- [ ] Add automatic archiving
- [x] Implement secure deletion
- [ ] Add regulatory compliance
- [ ] Develop GDPR tools
- [ ] Add HIPAA compliance where applicable
- [ ] Implement compliance matrices
- [ ] Create complete data export
- [ ] Develop standardized formats
- [ ] Add scheduled export
- [ ] Implement data portability
- [ ] Implement legal hold
- [ ] Develop case-based retention
- [ ] Add evidence preservation
- [ ] Implement chain of custody
- lightcss for frontend.