Skip to content

tarpagad/s3client

Repository files navigation

S3 Web Client 🚀

A high-performance, secure, and beautiful web-based S3 client built with Next.js and deployed on Cloudflare Workers. Manage your Amazon S3 buckets and files with a native-like desktop experience directly in your browser.

✨ Features

🔐 Security First

  • AES-GCM Encryption: AWS credentials are encrypted at rest using industry-standard AES-256-GCM.
  • Stateless Architecture: Credentials are stored in secure, HTTP-only cookies, ensuring your keys never touch our persistent storage. No database registration required.

📁 Advanced File Explorer

  • Native Experience: Breadcrumb navigation, folder simulation, and rich file-type icons.
  • Dual View Modes: Switch between a detailed List View and a visual Grid View.
  • Context Actions: Right-click (or 3-dot menu) for quick access to renaming, deleting, and sharing.
  • Optimistic UI: Instant feedback on file operations with automatic server rollback on failure.

🖼️ Universal Previews

  • Instant Viewing: Preview files without downloading.
  • Supported Formats:
    • Images: High-quality image viewer.
    • PDFs: Embedded document viewer.
    • Code/Text: Interactive viewer with syntax-friendly formatting (JS, TS, Python, JSON, etc.).

⚙️ User Customization

  • Persistent Preferences: Save your preferred view mode and items per page in your profile.
  • Smart Pagination: Server-side pagination handles large buckets (thousands of objects) with ease.
  • Sorting: Toggle between newest and oldest files at a glance.

⚡ Performance Optimized

  • Scalable Listing: Uses S3 ContinuationToken for efficient paged fetching.
  • ACL Batching: Concurrency-limited processing to prevent socket capacity issues.
  • Cloudflare Ready: Built for the edge with OpenNext and Cloudflare Workers.

🛠️ Tech Stack

  • Framework: Next.js (App Router)
  • Runtime: Cloudflare Workers / Pages
  • Styling: Tailwind CSS
  • S3 Interaction: AWS S3 SDK v3
  • Language: TypeScript
  • Package Manager: Bun

🚀 Getting Started

Prerequisites

  • Bun installed.
  • An AWS Account with S3 access.
  • A Cloudflare account for deployment.

Environment Variables

Create a .env.local file with the following:

# Encryption
ENCRYPTION_KEY=your_32_character_hex_key

Installation

  1. Install dependencies:
    bun install
  2. Run development server:
    bun dev
  3. Open http://localhost:3000 and connect your S3 credentials.

📦 Deployment

Deploy to Cloudflare using OpenNext:

bun run deploy

Built with ❤️ for the edge.

About

A web-based S3 client that allows users to manage their Amazon S3 buckets and files. Users will authenticate via Better-Auth, and then input their AWS Access Key and Secret, which will be securely associated with their account for persistent sessions.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors