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.
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 startVisit http://localhost:3000 to access the application.
- JWT Authentication with email verification
- Password Strength Validation with real-time feedback
- Rate Limiting and brute force protection
- Comprehensive Audit Logging for all operations
- Secure File Upload/Download with user isolation
- Path Traversal Protection and UUID-based naming
- File Metadata Management with size and type validation
- 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
- 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
| 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 |
| Spring Mail + SMTP | User verification & notifications | |
| Testing | JUnit 5 + Jest + React Testing Library | Comprehensive test coverage |
| CI/CD | GitHub Actions | Automated testing & deployment |
📖 View Complete Documentation →
The /docs directory contains comprehensive documentation covering all aspects of the application:
- ⚡ Quick Start Guide - 5-minute setup
- 🔧 Development Setup - Local development
- 🌐 API Reference - Complete REST API docs
- 🏗️ Architecture Guide - System design
- 🚨 Troubleshooting - Common issues
- ✅ 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
- ✅ 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
/docsdirectory
- 📊 Analytics Dashboard - Usage statistics and reporting
- 🎨 Enhanced UI/UX - Modern interface improvements
- 📱 Mobile App - Native mobile applications
- Java 17+ (tested with Java 21)
- Node.js 16+
- npm or yarn
- Clone the repository
- Copy
.env.exampleto.envand configure email settings - Start the backend:
./mvnw spring-boot:run - Start the frontend:
cd frontend && npm install && npm start - Open browser to
http://localhost:3000
For detailed setup instructions, see the Installation Guide.
# Backend tests
./mvnw test
# Frontend tests
cd frontend && npm test
# View test coverage
./mvnw test jacoco:report
cd frontend && npm test -- --coverage- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Run tests:
mvn test && cd frontend && npm test - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
See the Contributing Guide for detailed guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
- 📖 Documentation: Check the complete documentation
- 🐛 Issues: Use GitHub Issues for bug reports
- 💬 Discussions: Use GitHub Discussions for questions
- 🔒 Security: Report security issues privately via email
📖 For complete documentation, API reference, architecture details, and more, visit the Documentation Hub