Skip to content

surendrakumar6350/freezer

Repository files navigation

Freezer 🧊

Next.js TailwindCSS AWS License TypeScript Stargazers

🔥 Freezer is a sleek, modern S3 file explorer that transforms how you manage your cloud storage. Built with Next.js 14 and featuring JWT authentication, it offers enterprise-grade security with a beautiful, intuitive interface.


✨ Features

🔒 Secure Authentication

  • JWT-based token authentication
  • Per-IP and global rate limiting
  • Protection against service abuse

📁 S3 File Explorer

  • Collapsible, recursive tree view
  • File metadata display
  • Clean, responsive interface

👁️ File Preview

  • Support for images, videos, PDFs
  • Modal preview window
  • Fallback for unsupported file types

⚡ Performance

  • Built on Next.js 14 App Router
  • Optimized loading states
  • Responsive design for all devices

✨ Why Freezer?

🚀 Blazing Fast

Built on Next.js 14's App Router for optimal performance and streaming server components.

🛡️ Enterprise-Ready

JWT authentication, rate limiting, and security controls make it suitable for business use.

📱 Fully Responsive

Beautiful interface that works perfectly on desktop, tablet, and mobile devices.

🔌 Easy Setup

Quick and simple configuration with environment variables and multiple deployment options.

🌙 Dark Mode

Light and dark themes with persistent preferences and auto-detection.

🔍 File Preview

Preview images, videos, PDFs and other file types directly in your browser.

📸 Screenshots

Login Screen

Secure Login Page

File Explorer

S3 File Explorer

🛡️ Security Features

  • JWT Authentication

    • Secure token-based access for all S3 operations
    • Configurable token expiration
  • Advanced Rate Limiting

    • Per-IP Protection: 20 requests per 5 seconds (default)
    • Global Protection: 1000 requests per 60 seconds across all users
    • Configurable via environment variables
    • Security violation logging and monitoring

🛠️ Tech Stack

Next.js
Next.js
TypeScript
TypeScript
Tailwind
Tailwind
AWS
AWS S3
Redis
Upstash Redis

🚀 Quick Start

Prerequisites

  • Node.js 18+ and npm
  • AWS S3 bucket and credentials
  • Upstash Redis account (for rate limiting)

Installation Options

Option 1: Local Development (click to expand)
  1. Clone the repository:

    git clone https://github.com/surendrakumar6350/freezer.git
    cd freezer
  2. Install dependencies:

    npm install
  3. Create environment file:

    cp .env.example .env.local
  4. Configure environment variables:

    Edit .env.local and add your values:

    # Authentication
    JWT_SECRET=your-secure-jwt-secret
    USER_USERNAME=admin
    USER_PASSWORD=your-secure-password
    
    # AWS S3 Configuration
    AWS_ACCESS_KEY_ID=your-access-key
    AWS_SECRET_ACCESS_KEY=your-secret-key
    AWS_REGION=us-east-1
    AWS_S3_BUCKET=your-bucket-name
    
    # Rate Limiting (Upstash Redis)
    UPSTASH_REDIS_REST_URL=https://your-upstash-url.upstash.io
    UPSTASH_REDIS_REST_TOKEN=your-upstash-token
    
    # Optional: Rate Limiting Configuration
    S3_GLOBAL_RATE_LIMIT=1000
    S3_GLOBAL_WINDOW_SEC=60
  5. Run the development server:

    npm run dev
  6. Open your browser:

    Visit http://localhost:3000

Option 2: Deploy to Vercel (click to expand)
  1. Fork this repository
  2. Create a new project in Vercel
  3. Connect your forked repository
  4. Configure the environment variables in Vercel project settings
  5. Deploy!

Deploy with Vercel

👥 Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

How to contribute (click to expand)
  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Don't forget to give the project a star ⭐ if you found it useful!

📄 License

Freezer is licensed under the MIT License - see the LICENSE file for details.


Built with ❄️ by Surendra Kumar

Report BugRequest Feature