Aspera file browsing and transfer application built with React, TypeScript, Vite, IBM Carbon Design System and the Aspera Web SDK.
Merci @m67hoff for the inspiration!
And merci IBM Bob for the vide coding.
- File Navigation: Browse directories with breadcrumb navigation
- Two Display Modes: Traditional list view or modern card view
- Drag & Drop: Upload files by drag and drop
- Transfer Management: Track your downloads and uploads in real-time
- Internationalization: Multi-language support (English/French) with i18next
- Modern Interface: Uses IBM Carbon Design System for consistent UX
- TypeScript: Fully typed code for better maintainability
- React 19 with TypeScript
- Vite 6 - Ultra-fast build tool
- IBM Carbon Design System - UI Components
- i18next + react-i18next - Internationalization
- Zustand - Simple and performant state management
- TanStack Query - Server data management
- TanStack Router - Type-safe routing
- React Hook Form + Zod - Forms and validation
- Axios - HTTP requests
- date-fns - Date manipulation
- openapi-typescript - Type-safe API client generation
- Aspera Web SDK - File transfer integration
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Generate API types from OpenAPI spec
npm run generate:api-typesThe application can be deployed for free on GitHub Pages:
# Deployment is automatic via GitHub Actions
# Each push to main branch triggers build and deployment
# To test the GitHub Pages build locally:
npm run build:gh-pages
npm run previewRequired configuration:
- Enable GitHub Pages in repository settings (Settings > Pages)
- Select "GitHub Actions" as the source
- The
.github/workflows/deploy.ymlworkflow will run automatically
Deployment URL: https://<username>.github.io/aspera-browser-react/
# Build the Docker image
./scripts/build.sh v1.0.0
# Run with Docker
docker run -d -p 8080:80 aspera-browser:v1.0.0
# Or with Docker Compose
docker compose up -d# Deploy on Kubernetes
./scripts/deploy.sh production
# Or manually
kubectl apply -k k8s/ -n aspera-browserFor more details, see the Deployment Guide.
src/
βββ components/
β βββ common/ # Reusable components (Breadcrumb, LanguageSwitcher, etc.)
β βββ file-browser/ # File navigation components
β βββ transfer/ # Transfer management panel
β βββ layout/ # Main application layout
βββ i18n/ # i18next configuration
βββ locales/ # Translation files (en, fr, de, es, ja, pt, ru, zh, ar)
β βββ en/ # English translations
β βββ fr/ # French translations
β βββ ... # Other languages
βββ services/ # API services (Aspera Node API)
βββ stores/ # Zustand stores (auth, files, transfers)
βββ types/ # TypeScript types and auto-generated API types
βββ utils/ # Utilities (formatters, etc.)
βββ App.tsx # Main component
βββ main.tsx # Entry point
The application connects to an Aspera Node API server.
- URL
- Username
- Password
You can modify these settings in the connection interface.
The application uses a type-safe API client generated from the official IBM Aspera Node API OpenAPI specification (v4.4.6).
- Type-safe API calls: All API methods are fully typed with TypeScript
- Auto-generated types: Types are generated from the official OpenAPI spec
- Error handling: Custom error class with detailed error information
- Easy regeneration: Update types with a single command
- Table with columns: Type, Name, Size, Modified Date
- Sort by column
- Multiple selection with checkboxes
- Integrated search
- Responsive grid display
- Visual icons for files and folders
- Selection by checkbox
- Compact information
The application supports multiple languages using i18next:
- π¬π§ English (default)
- π«π· French
- π©πͺ German
- πͺπΈ Spanish
- π΅πΉ Portuguese
- π·πΊ Russian
- π¨π³ Chinese
- π―π΅ Japanese
- πΈπ¦ Arabic
Language is automatically detected from browser settings and can be changed using the language switcher component.
The application is ready for production deployment with:
- Docker: Optimized multi-stage image with Nginx
- Kubernetes: Complete manifests (Deployment, Service, Ingress, ConfigMap)
- Kubernetes Operator: Structure for a custom operator (coming soon)
- Automated scripts: Simplified build and deployment
See the Deployment Guide for more details.
- Full integration with Aspera Web SDK for transfers
- File deletion implementation
- Folder creation implementation
- File upload (drag & drop)
- File download
- Media viewer (images, videos, audio)
- Video streaming support
- Enhanced error handling
- Unit and E2E tests
- Multi-language support (9 languages)
- Docker containerization
- Kubernetes deployment manifests
- Kubernetes operator implementation
- Dark mode
- SSH/SFTP support
- Access key authentication
- Node user authentication
Apache-2.0
This project uses the latest React 2026 development practices:
- TypeScript strict mode
- ESLint for code quality
- Prettier for formatting
- Vite for ultra-fast builds
- Instant Hot Module Replacement (HMR)
Contributions are welcome! Feel free to open an issue or pull request.