A File manager with React Frontend and Rails 7 Backend. Allows users to manage their files and folders seamlessly. The app uses Minio for object storage, ensuring that the structure in the File Manager UI mirrors the structure in Minio, providing a reliable and intuitive user experience. Additionally, the app features real-time updates with ActionCable, allowing users to see changes immediately as they happen.
-
Folder Management:
- Create Folder
- Create Nested Folder
- Rename Folder
- Remove Folder
- Get Folder List
-
File Management:
- Create File
- Create File inside a Folder
- Rename File
- Remove File
- View File
- Rails 7: Web application framework
- Postgresql: Database
- Minio: Object storage for files
- Actionable: For asynchronous jobs
- Redis: For synchronous updates
- Rswag: Swagger documentation for API endpoints
- Docker: Containerization of dependencies
- The API documentation is available via Swagger at http://localhost:3000/api-docs.
Dependencies installed on your machine
- Docker and Docker Compose
- Ruby and Rails
-
Clone the repository:
git clone https://github.com/voidzenn/file_manager.git cd <repository-name>
-
Rename .env.example to .env:
mv .env.example .env
-
Install gem dependencies:
bundle install
-
Build and run the Docker containers:
docker-compose up --build
-
Access the web application:
Open your browser and navigate to http://localhost:3000 or http://localhost:3000/api-docs.
To access the frontend, use the following credentials:
- Email:
[email protected]
- Password:
Password12!
Issue: When generating a presigned URL for file viewing in MinIO, the URL was using http://minio:9000
, which resulted in a 403 Forbidden error.
Solution: To resolve this issue, a custom Docker network was configured, and MinIO was assigned a specific network address. This approach ensured that MinIO operates with the correct domain and address, allowing presigned URLs to be generated and accessed without authorization issues.