Skip to content

me-AC/cloud-file-storage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Secure File Sharing System

A cloud-based secure file sharing system built with Spring Boot and React.js, leveraging AWS services for storage and data management.

Features

  • 🔐 User Authentication & Authorization

    • JWT-based authentication
    • OAuth2 integration with Google
    • Role-based access control
  • 📁 File Management

    • Secure file upload to AWS S3
    • File download with access control
    • Public, private, and expiring share links
    • Support for various file types
  • 🔍 Advanced Features

    • Audit logging for all file operations
    • Asynchronous file processing
    • Rate limiting and throttling
    • Background job processing with Kafka

Tech Stack

  • Backend:

    • Spring Boot 3.x
    • Spring Security
    • AWS SDK (S3, DynamoDB)
    • Apache Kafka
    • Redis
    • JWT
  • Frontend:

    • React.js
    • Material-UI
    • Redux Toolkit
    • Axios
  • Cloud Services:

    • AWS S3 for file storage
    • AWS DynamoDB for metadata
    • Redis for rate limiting

Prerequisites

  • Java 17 or higher
  • Maven 3.6+
  • Node.js 18+
  • AWS Account with S3 and DynamoDB access
  • Redis Server
  • Kafka Server

Configuration

The application requires several environment variables to be set:

# AWS Configuration
AWS_REGION=your-aws-region
AWS_ACCESS_KEY=your-access-key
AWS_SECRET_KEY=your-secret-key
S3_BUCKET_NAME=your-bucket-name
DYNAMODB_TABLE_NAME=your-table-name

# OAuth2 (Google)
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret

# JWT
JWT_SECRET=your-jwt-secret-key

# Redis
REDIS_HOST=localhost
REDIS_PORT=6379

# Kafka
KAFKA_SERVERS=localhost:9092

Building and Running

Backend

# Build the project
mvn clean install

# Run the application
mvn spring-boot:run

Frontend

# Navigate to frontend directory
cd frontend

# Install dependencies
npm install

# Start development server
npm start

API Documentation

The API documentation is available at /api/swagger-ui.html when running the application.

Security

  • All API endpoints are secured with JWT authentication
  • File uploads are validated for type and size
  • Rate limiting is implemented to prevent abuse
  • All file operations are logged for audit purposes

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages