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.
- 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
- 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.
- 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.
- Docker: Containerized environment for simplified development and deployment.
Before you start, make sure you have the following installed:
-
Clone the repository:
git clone https://github.com/ayushh2k/go-store-s3.git cd go-store-s3
-
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
-
Start the development environment:
docker-compose up --build
-
Access the application:
- Client: http://localhost:3000
- Backend APIs: http://localhost:8080
- Display upload progress using websockets
- Chunk encryption for multipart uploads
- Server side pagination
- Light Mode UI
- Caching file metadata
- Rate Limiting
Contributions are welcome! Please feel free to submit a Pull Request.