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.
- Implement API for creating folders
- Add support for hierarchical paths in the backend
- Update UI to show folder structure (tree)
- Implement navigation between folders
- Add functionality to rename folders
- Add option to move files between folders
- Implement integrated image viewer
- Add basic PDF viewer
- Generate thumbnails for images
- Implement specific icons by file type
- Add text/code preview
- Implement search by name
- Add filters by file type
- Implement search by date range
- Add filter by file size
- Add search within specific folders
- Implement cache for search results
- Improve responsive design for mobile devices
- Implement drag & drop between folders
- Add support for multiple file selection
- Implement multiple file uploads
- Add progress indicators for long operations
- 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.
- Design data model for users
- Implement user registration
- Create login system
- Add user profile page
- Implement password recovery
- Separate storage by user
- Implement storage quota system
- Add basic role system (admin/user)
- Create admin panel
- Implement folder-level permissions
- Add storage usage monitoring
- Implement secure password hashing with Argon2
- Add session management
- Implement JWT authentication token
- Add CSRF protection
- Implement login attempt limits
- Create activity logging system
- Implement shared link generation
- Add permission configuration for links
- Implement password protection for links
- Add expiration dates for shared links
- Create page to manage all shared resources
- Implement sharing notifications
- Design model for storing deleted files
- Implement soft deletion (move to trash)
- Add functionality to restore files
- Implement automatic purge by time
- Add option to manually empty trash
- Implement storage limits for trash
- 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
- Design OpenAPI specification
- Implement endpoints for file operations
- Add endpoints for users and authentication
- Implement automatic documentation (Swagger)
- Create API token system
- Implement rate limiting
- Add API versioning
- Implement basic WebDAV server
- Add authentication for WebDAV
- Implement PROPFIND operations
- Add support for locking
- Test compatibility with standard clients
- Optimize WebDAV performance
- Implement Range Requests (RFC 7233) for resumable transfers
- Support partial file updates with HTTP PATCH for bandwidth efficiency
- 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
- Research and select encryption algorithms
- Implement at-rest encryption for files
- Add key management
- Implement encryption for shared files
- Create security documentation
- Design version storage system
- Implement version history
- Add difference visualization
- Implement version restoration
- Add version retention policies
- Design plugin/app system
- Implement basic text viewer/editor
- Add simple notes application
- Implement basic calendar
- Create API for third-party applications
- Implement file cache with Rust
- Enable Link Time Optimization (LTO) for better performance
- Optimize large file transmission
- Add adaptive compression by file type
- Implement asynchronous processing for heavy tasks
- Optimize database queries
- Implement scaling strategies
- Implement transfer acceleration with multipart chunking
- Implement differential sync algorithm (similar to rsync)
- Add strong ETag support for more efficient caching
- Optimize initial asset loading
- Implement lazy loading for large lists
- Add local cache (localStorage/IndexedDB)
- Optimize UI rendering
- Implement intelligent prefetching
- Add basic offline support
- Implement client-side image resizing before upload
- Add HTTP/2 support for multiplexing requests
- Implement progressive image loading
- Research deduplication options
- Implement block storage
- 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
- Add content-aware compression by file format
- Implement dynamic thumbnail resizing based on viewport
- 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)
- Create Docker configuration
- Implement CI/CD with GitHub Actions
- Add automated tests
- Create installation documentation
- Implement monitoring and alerts
- Add automatic update system
- Implement optimized file upload/download
- Implement chunked upload for large files
- Add file integrity verification
- 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
- 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
- Improve public links
- Add configurable expiration date
- Implement password protection
- Develop download limits
- Implement granular permissions
- Add per-folder/file permissions
- Develop customizable roles
- 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
- 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
- Develop password policies
- 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
- Complete CardDAV implementation
- Finalize contact synchronization
- Add support for contact groups
- Implement custom fields
- Complete CalDAV implementation
- Finalize calendar synchronization
- 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
- 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
- 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
- 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
- Create shared workspaces
- Develop team structures
- Add project templates
- Implement customized dashboards
- Implement role-based access control
- Develop customizable roles
- 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
- 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
- Optimize compression and deduplication
- Develop adaptive compression
- Add block-level deduplication
- Implement similar file detection
- Improve RESTful API
- 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
-
Implement retention policies
- Develop configurable retention by type
- Add automatic archiving
- 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.