Skip to content

Dhruv0306/cloudshare-app

Repository files navigation

File Sharing App

A secure, full-stack file sharing application built with Spring Boot (backend) and React (frontend), featuring comprehensive email verification, advanced security measures, and multi-recipient file sharing capabilities.

🚀 Quick Start

Get up and running in 5 minutes:

# Clone and setup
git clone <repository-url>
cd filesharingapp
cp .env.example .env

# Configure email in .env (required)
EMAIL_USERNAME=your-email@gmail.com
EMAIL_PASSWORD=your-app-password

# Start backend
./mvnw spring-boot:run

# Start frontend (new terminal)
cd frontend && npm install && npm start

Visit http://localhost:3000 to access the application.

✨ Key Features

🔐 Security & Authentication

  • JWT Authentication with email verification
  • Password Strength Validation with real-time feedback
  • Rate Limiting and brute force protection
  • Comprehensive Audit Logging for all operations

📁 File Management

  • Secure File Upload/Download with user isolation
  • Path Traversal Protection and UUID-based naming
  • File Metadata Management with size and type validation

🔗 Advanced File Sharing

  • Multi-Recipient Sharing - Share with multiple users simultaneously
  • Permission Control - View-only or download permissions
  • Share Management - Create, revoke, and update shares
  • Access Tracking - Comprehensive logging with IP and user agent
  • Email Notifications - Automated notifications for recipients
  • Shared With Me View - Dedicated interface for received shares
  • Token-Based Access - Secure UUID tokens for public access

🎨 User Experience

  • Responsive Design - Mobile-friendly React interface
  • Real-time Validation - Immediate feedback for forms
  • Loading States - Visual feedback for all operations
  • Accessibility - Screen reader compatible with ARIA labels

🛠 Technology Stack

Layer Technology Purpose
Backend Spring Boot 3.5.6 + Java 17 Enterprise-grade REST API
Frontend React 18.2.0 Modern, responsive UI
Security Spring Security 6 + JWT Authentication & authorization
Database H2 (dev) / MySQL (prod) Data persistence
Email Spring Mail + SMTP User verification & notifications
Testing JUnit 5 + Jest + React Testing Library Comprehensive test coverage
CI/CD GitHub Actions Automated testing & deployment

📚 Complete Documentation

📖 View Complete Documentation →

The /docs directory contains comprehensive documentation covering all aspects of the application:

🚀 Quick Access

📋 Documentation Coverage

  • Complete API documentation with working examples
  • Step-by-step setup guides for all environments
  • Architecture and design documentation
  • Frontend component library
  • Testing strategies and examples
  • Security implementation details
  • Production deployment guides

🎯 Project Status

✅ Completed Features

  • User Authentication - Registration, login, JWT tokens
  • Email Verification - 6-digit codes with rate limiting
  • File Management - Upload, download, list, delete operations
  • Multi-Recipient Sharing - Share with multiple users simultaneously
  • Shared With Me View - Dedicated interface for received shares
  • Security Framework - JWT auth, rate limiting, audit logging
  • Testing Suite - 40+ backend tests, comprehensive frontend tests
  • CI/CD Pipeline - GitHub Actions with automated testing
  • Complete Documentation - Comprehensive docs in /docs directory

🔄 Future Enhancements

  • 📊 Analytics Dashboard - Usage statistics and reporting
  • 🎨 Enhanced UI/UX - Modern interface improvements
  • 📱 Mobile App - Native mobile applications

🚦 Getting Started

Prerequisites

  • Java 17+ (tested with Java 21)
  • Node.js 16+
  • npm or yarn

Basic Setup

  1. Clone the repository
  2. Copy .env.example to .env and configure email settings
  3. Start the backend: ./mvnw spring-boot:run
  4. Start the frontend: cd frontend && npm install && npm start
  5. Open browser to http://localhost:3000

For detailed setup instructions, see the Installation Guide.

🧪 Testing

# Backend tests
./mvnw test

# Frontend tests
cd frontend && npm test

# View test coverage
./mvnw test jacoco:report
cd frontend && npm test -- --coverage

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Run tests: mvn test && cd frontend && npm test
  4. Commit changes: git commit -m 'Add amazing feature'
  5. Push to branch: git push origin feature/amazing-feature
  6. Open a Pull Request

See the Contributing Guide for detailed guidelines.

📄 License

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

🆘 Support


📖 For complete documentation, API reference, architecture details, and more, visit the Documentation Hub

About

A secure file sharing web application built with Spring Boot and modern frontend. Features user authentication, file upload/download, RESTful API, responsive UI, comprehensive logging, and automated testing. Includes Docker support and CI/CD pipeline setup. Tech: Java, Spring Boot, JavaScript, Maven, JUnit.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors