# MinIO File Browser Integration This document describes the MinIO S3-compatible file browser integration in the Port Nimara Client Portal. ## Features - **File Management**: Upload, download, delete, and view files - **Folder Organization**: Create and navigate folder structures - **File Preview**: View images and PDFs directly in the browser - **Search**: Quick file search functionality - **Audit Logging**: Track all file operations with user information - **Drag & Drop**: Easy file uploads with drag and drop support - **Size Limit**: 50MB maximum file size per upload ## Configuration ### Environment Variables Add the following to your `.env` file: ```bash NUXT_MINIO_ACCESS_KEY=your-minio-access-key NUXT_MINIO_SECRET_KEY=your-minio-secret-key ``` ### MinIO Settings The MinIO configuration is set in `nuxt.config.ts`: ```javascript minio: { endPoint: "s3.portnimara.com", port: 9000, useSSL: true, bucketName: "client-portal", } ``` ## File Structure ``` server/ ├── api/ │ └── files/ │ ├── list.ts # List files and folders │ ├── upload.ts # Upload files │ ├── download.ts # Generate download URLs │ ├── delete.ts # Delete files/folders │ ├── create-folder.ts # Create new folders │ └── preview.ts # Generate preview URLs ├── utils/ │ └── minio.ts # MinIO client utilities pages/ └── dashboard/ └── file-browser.vue # Main file browser page components/ ├── FileUploader.vue # File upload component └── FilePreviewModal.vue # File preview modal ``` ## API Endpoints ### List Files - **GET** `/api/files/list` - Query params: `prefix` (folder path), `recursive` (boolean) ### Upload Files - **POST** `/api/files/upload` - Body: FormData with files - Query params: `path` (current folder) ### Download File - **GET** `/api/files/download` - Query params: `fileName` ### Delete File/Folder - **POST** `/api/files/delete` - Body: `{ fileName, isFolder }` ### Create Folder - **POST** `/api/files/create-folder` - Body: `{ folderPath }` ### Preview File - **GET** `/api/files/preview` - Query params: `fileName` ## Usage 1. Navigate to "File Browser" from the dashboard menu 2. Use the interface to: - Upload files by dragging or clicking "Upload Files" - Create folders with "New Folder" button - Navigate folders by clicking on them - Preview images and PDFs by clicking the eye icon - Download files with the download icon - Delete files/folders with the delete icon ## Audit Logging All file operations are logged with: - User email - Action type (upload, download, delete, create_folder) - File path - Timestamp - IP address - Success status Currently logs to console, but can be easily integrated with your database. ## Security - All operations require authentication - File names are sanitized to prevent security issues - Presigned URLs expire after 1 hour - 50MB file size limit enforced ## Supported File Types All file types are supported for upload/download. Preview is available for: - Images: JPG, JPEG, PNG, GIF, SVG, WebP - Documents: PDF ## Future Enhancements - Database storage for audit logs - File sharing with expiration - Bulk operations - File versioning - Integration with Interest management (link files to specific interests)