Skip to content

A web application for managing and storing files in the cloud using Amazon S3

License

Notifications You must be signed in to change notification settings

ayushh2k/go-store-s3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go Store S3

Go Store S3 is a user-friendly web application for managing and storing files in the cloud using Amazon S3. It allows you to upload, share, and manage your files with ease, all within a secure and responsive interface.

Features

  • Upload files to Amazon S3.
  • Delete files and update file metadata.
  • Background job for scheduled file deletion.
  • Share files using pre-signed URLs for secure access.
  • Search files with various filters.
  • Caching Layer for File Metadata

Tech Stack

Client

  • Next.js: Fast, scalable React framework for modern web development.
  • React: A library for building user interfaces with components.
  • Tailwind CSS: Utility-first CSS framework for fast UI development.
  • shadcn/ui: Pre-built components for quick and consistent UI building.

Server

  • Go: High-performance language used for backend services.
  • Gin: Lightweight web framework for building fast, scalable APIs.
  • PostgreSQL: Reliable, high-performance relational database.
  • Redis: In-memory data structure store, used for caching to improve performance.

Infrastructure

  • Docker: Containerized environment for simplified development and deployment.

Getting Started

Prerequisites

Before you start, make sure you have the following installed:

Installation Steps

  1. Clone the repository:

    git clone https://github.com/ayushh2k/go-store-s3.git 
    cd go-store-s3
  2. Configure environment variables:

  • Create a .env file in the root directory using the provided .env.example file as a template.
  • Update the environment variables as follows:
    # Database credentials
    DB_USER=user_name
    DB_PASSWORD=password
    DB_NAME=database_name
    
    # JWT secret
    JWT_SECRET=your_jwt_secret
    
    # S3/MinIO credentials
    S3_ENDPOINT=your_s3_endpoint_without_protocol
    S3_ACCESS_KEY=your_s3_access_key
    S3_SECRET_KEY=your_s3_secret_key
    S3_BUCKET_NAME=your_s3_bucket_name
    
    # Redis credentials
    REDIS_HOST=redis_host
    REDIS_PASSWORD=password
    REDIS_PORT=6379
    REDIS_DB=0
    
    API_URL=http://localhost:8080
  1. Start the development environment:

    docker-compose up --build
  2. Access the application:

To-Do:

  • Display upload progress using websockets
  • Chunk encryption for multipart uploads
  • Server side pagination
  • Light Mode UI
  • Caching file metadata
  • Rate Limiting

Screenshots:

Screenshot Screenshot Screenshot

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

About

A web application for managing and storing files in the cloud using Amazon S3

Topics

Resources

License

Stars

Watchers

Forks