A full-stack antivirus application built with Spring Boot (Backend) and React (Frontend) that provides real-time file scanning, quarantine management, and system protection.
This project implements a comprehensive antivirus solution following the X.800 security architecture standard, with the following key features:
- Real-time file scanning and monitoring
- Quarantine management system
- System protection and security
- Scan history tracking and reporting
- User-friendly dashboard interface
- File analysis and threat detection
- Database-driven virus signature management
- Framework: Spring Boot
- Database: H2 Database
- Build Tool: Maven
- Java Version: 17+
- Key Dependencies:
- Spring Web
- Spring Data JPA
- Spring Security
- H2 Database
- Lombok
- JUnit 5
- Framework: React.js
- State Management: React Hooks
- UI Library: Material-UI
- Build Tool: npm/yarn
- Key Dependencies:
- React Router
- Axios
- Material-UI
- React Query
- Jest & React Testing Library
antivirus/
├── src/
│ ├── main/
│ │ ├── java/com/antivirus/
│ │ │ ├── config/ # Configuration classes
│ │ │ ├── controller/ # REST controllers
│ │ │ ├── model/ # Data models
│ │ │ ├── repository/ # JPA repositories
│ │ │ ├── service/ # Business logic
│ │ │ └── util/ # Utility classes
│ │ └── resources/
│ │ ├── application.properties
│ │ └── static/ # Static resources
│ └── test/
│ └── java/com/antivirus/ # Test classes
├── frontend/
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API services
│ │ ├── utils/ # Utility functions
│ │ └── App.js # Main App component
│ └── public/ # Static assets
├── quarantine/ # Quarantine storage
├── logs/ # Application logs
└── flowchart/ # Project documentation
- JDK 17 or higher
- Node.js 14.x or higher
- Maven 3.6.x or higher
- npm 6.x or higher
- Navigate to the project root directory
- Run Maven build:
mvn clean install
- Start the Spring Boot application:
mvn spring-boot:run
- Backend will be available at
http://localhost:8080
- H2 Console will be available at
http://localhost:8080/h2-console
- Navigate to the frontend directory:
cd frontend
- Install dependencies:
npm install
- Start the development server:
npm start
- Frontend will be available at
http://localhost:5000
- Database configuration:
src/main/resources/application.properties
- Logging configuration:
src/main/resources/logback.xml
- Security configuration:
src/main/java/com/antivirus/config/SecurityConfig.java
- API endpoint configuration:
frontend/src/config.js
- Environment variables:
frontend/.env
- Theme configuration:
frontend/src/theme.js
- Backend: Follow Google Java Style Guide
- Frontend: Follow Airbnb React/JSX Style Guide
- Create feature branches from
develop
- Use conventional commits
- Submit PRs for review
- Merge to
develop
after approval
- Backend: JUnit 5 for unit tests
- Frontend: Jest and React Testing Library
- Run tests:
# Backend mvn test # Frontend npm test
- Real-time file monitoring using Java NIO
- Signature-based detection using virus database
- Heuristic analysis for unknown threats
- File quarantine system with isolation
- Scan history tracking and reporting
- Real-time system status monitoring
- Scan history visualization
- Quarantine management interface
- System health metrics
- Threat detection statistics
- Role-based access control
- Secure file handling
- Quarantine isolation
- API authentication
- Session management
- Application logs:
logs/
directory - Scan history:
scan_history.log
- Database logs:
antivirus_db.trace.db
- Performance metrics: Prometheus integration
- Health checks: Actuator endpoints
- File system permissions
- Quarantine isolation
- API authentication
- Secure file handling
- Input validation
- XSS protection
- CSRF protection
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Dhruv0306 - Initial work
- Sameer7188 - Front-End work
- Spring Boot team
- React team
- Material-UI team
- All contributors and maintainers