A modern web application for browsing and managing files on Amazon S3 Storage.
- π Browse S3 Buckets - Navigate through folders and files with an intuitive interface
- πΉ Media Preview - Built-in video player and image viewer for instant preview
- ποΈ File Management - Delete files directly from the browser interface
- π Secure Authentication - Safe credential storage using browser cookies
- π± Responsive Design - Works seamlessly on desktop, tablet, and mobile devices
- β‘ Fast Performance - Built with Vite for lightning-fast development and builds
- π¨ Modern UI - Beautiful interface using shadcn/ui components and Tailwind CSS
- React 18 - Modern React with hooks and concurrent features
- TypeScript - Type-safe development experience
- Vite - Fast build tool and dev server
- React Router DOM - Client-side routing
- React Query (TanStack Query) - Server state management
- shadcn/ui - High-quality component library built on Radix UI
- Radix UI - Accessible, unstyled components
- Tailwind CSS - Utility-first CSS framework
- Lucide React - Beautiful icon library
- AWS SDK v3 - Official AWS JavaScript SDK
- @aws-sdk/client-s3 - S3 service client
- @aws-sdk/s3-request-presigner - Generate presigned URLs
- React Hook Form - Performant forms with easy validation
- Zod - TypeScript-first schema validation
- Node.js 18+
- npm, yarn, pnpm, or bun
- Clone the repository
git clone https://github.com/starfall-org/s3explorer.git
cd s3explorer- Install dependencies
npm install
# or
yarn install
# or
pnpm install- Start development server
npm run dev
# or
yarn dev
# or
pnpm dev- Open your browser
Navigate to
http://localhost:5173
The application requires AWS S3 credentials. You'll be prompted to provide:
- S3 Endpoint - Your S3-compatible endpoint URL
- Access Key ID - Your AWS access key
- Secret Access Key - Your AWS secret key
- Bucket Name - The name of your S3 bucket
These credentials are securely stored in browser cookies for convenience.
Enter your S3 credentials on the login page to authenticate.
- Click on folders to explore their contents
- Use the breadcrumb navigation or back button to return to previous folders
- The current path is always displayed at the top of the page
- Videos: Click any video file to open the built-in video player
- Images: Click images to view them in a fullscreen modal
- Use the escape key or close button to exit preview mode
- Click the delete button next to any file to remove it
- Confirm deletion in the dialog that appears
- Use the refresh button to reload the current directory
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Run ESLint
npm run lint
# Build in development mode
npm run build:devsrc/
βββ components/ # Reusable UI components
β βββ ui/ # shadcn/ui components
β βββ FileList.tsx # File listing component
β βββ VideoPlayer.tsx # Video player component
βββ pages/ # Page components
β βββ Index.tsx # Main file browser
β βββ Login.tsx # Authentication page
β βββ NotFound.tsx # 404 page
βββ hooks/ # Custom React hooks
βββ lib/ # Utility functions
βββ utils/ # S3 client utilities
βββ App.tsx # Main application component
npm run buildThe optimized build will be in the dist directory.
- Static Hosting (Recommended)
- Deploy to Netlify, Vercel, or any static hosting service
- No server required - pure client-side application
Deployment**
- Upload the
distfolder to your preferred CDN - Configure SPA routing if needed
- Credentials are stored only in browser cookies
- No server-side storage of sensitive information
- Direct S3 API calls from the client
- Consider using CORS restrictions on your S3 bucket
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.
If you encounter any issues or have questions:
- Open an issue on GitHub
- Check the existing documentation
- Review the code comments for additional context
- Built with React
- UI components by shadcn/ui
- Styled with Tailwind CSS
- AWS integration by AWS SDK