A cloud-based secure file sharing system built with Spring Boot and React.js, leveraging AWS services for storage and data management.
-
🔐 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
-
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
- Java 17 or higher
- Maven 3.6+
- Node.js 18+
- AWS Account with S3 and DynamoDB access
- Redis Server
- Kafka Server
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# Build the project
mvn clean install
# Run the application
mvn spring-boot:run# Navigate to frontend directory
cd frontend
# Install dependencies
npm install
# Start development server
npm startThe API documentation is available at /api/swagger-ui.html when running the application.
- 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
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.