ACE VPN is a secure, enterprise-grade VPN system designed for office environments. This project simulates a complete VPN infrastructure with client-server architecture, encrypted communication, and an admin dashboard for managing connections and users.
- Overview
- Features
- Screenshots
- Architecture
- Technology Stack
- Project Structure
- Installation
- Usage
- API Documentation
- Development Roadmap
- Contributing
- License
- Contact
ACE VPN is a full-stack VPN solution built as a learning project to understand:
- Network security and encryption
- Client-server architecture
- Spring Boot backend development
- JavaFX desktop application development
- Database management with Hibernate
- JWT-based authentication
- Secure tunneling and data encryption
This project demonstrates real-world implementation of VPN concepts while maintaining production-ready code quality and architecture.
- AES & RSA Encryption - End-to-end encrypted communication
- JWT Authentication - Secure token-based user authentication
- BCrypt Password Hashing - Industry-standard password security
- SSL/TLS Support - Encrypted data transmission
- JavaFX Desktop GUI - Modern, responsive desktop interface
- Real-time Connection Status - Live monitoring of VPN connection
- Company Code Management - Flexible organization-based access
- Auto-reconnect - Automatic connection recovery
- RESTful APIs - Clean, well-documented API endpoints
- Multi-user Support - Handle multiple concurrent connections
- Session Management - Track active user sessions
- Logging & Monitoring - Comprehensive activity logs
- User Management - Add, remove, and manage users
- Connection Monitoring - View active VPN connections
- Session Logs - Detailed connection history and analytics
- Statistics - Real-time metrics and usage data
Secure authentication with Company ID and Password
Ready to establish VPN connection
Active VPN tunnel with encrypted communication
User-friendly error messages with themed modals
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β β β β
β ACE VPN Client ββββββββββΊβ ACE VPN Server ββββββββββΊβ MySQL Database β
β (JavaFX UI) β HTTPS β (Spring Boot) β JDBC β β
β β JWT β β β β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β
β β
β ββββββββΌβββββββ
β β β
βββββββββββββββββββββΊβ Admin β
Web Access β Dashboard β
β (Web UI) β
βββββββββββββββ
- Authentication: Client sends credentials β Server validates against DB β JWT token issued
- Connection: Client requests VPN tunnel β Server creates encrypted session β Tunnel established
- Data Transfer: All data encrypted with AES β Transmitted through secure tunnel β Decrypted at destination
- Monitoring: Admin dashboard queries server β Real-time connection data displayed
- Java 17+ - Core programming language
- Spring Boot 3.0+ - Application framework
- Spring Security - Authentication & authorization
- Hibernate ORM - Database object-relational mapping
- Spring Data JPA - Data persistence layer
- JWT (jjwt) - JSON Web Token authentication
- BCrypt - Password encryption
- Maven - Build automation and dependency management
- JavaFX 17+ - Desktop GUI framework
- FXML - UI markup language
- SceneBuilder - Visual UI design tool
- CSS3 - Styling and theming
- MySQL 8.0 / MariaDB - Relational database
- XAMPP - Local development environment
- AES-256 - Symmetric encryption
- RSA-2048 - Asymmetric encryption
- TCP/UDP Sockets - Network communication
- SSL/TLS - Secure transport layer
- Git - Version control
- GitHub - Code hosting and collaboration
- Postman - API testing
- IntelliJ IDEA - IDE for Java development
- Docker (optional) - Containerization
- Render/Railway - Cloud deployment platforms
ace-vpn/
βββ vpn-server/ # Spring Boot backend application
β βββ src/
β β βββ main/
β β β βββ java/
β β β β βββ com/acevpn/
β β β β βββ controller/ # REST API controllers
β β β β βββ service/ # Business logic
β β β β βββ repository/ # Data access layer
β β β β βββ model/ # Entity classes
β β β β βββ security/ # JWT & encryption
β β β β βββ config/ # Configuration classes
β β β βββ resources/
β β β βββ application.properties
β β β βββ schema.sql
β β βββ test/ # Unit and integration tests
β βββ pom.xml
β
βββ vpn-client/ # JavaFX desktop client
β βββ src/
β β βββ main/
β β β βββ java/
β β β β βββ com/acevpn/client/
β β β β βββ ui/ # JavaFX controllers
β β β β βββ network/ # Socket communication
β β β β βββ util/ # Helper classes
β β β βββ resources/
β β β βββ fxml/ # UI layouts
β β β βββ css/ # Stylesheets
β β β βββ images/ # Assets
β β βββ test/
β βββ pom.xml
β
βββ vpn-common/ # Shared libraries
β βββ src/
β β βββ main/
β β βββ java/
β β βββ com/acevpn/common/
β β βββ encryption/ # AES/RSA utilities
β β βββ dto/ # Data transfer objects
β β βββ constants/ # Shared constants
β βββ pom.xml
β
βββ vpn-admin/ # Web admin dashboard
β βββ src/
β β βββ main/
β β βββ resources/
β β β βββ templates/ # Thymeleaf/React
β β β βββ static/ # CSS, JS, images
β βββ pom.xml
β
βββ docs/ # Documentation
β βββ API.md # API documentation
β βββ ARCHITECTURE.md # System architecture
β βββ DEPLOYMENT.md # Deployment guide
β
βββ screenshots/ # Project screenshots
βββ .gitignore
βββ README.md
βββ pom.xml # Parent POM
- Java JDK 17 or higher
- Maven 3.6+
- MySQL 8.0 or MariaDB
- XAMPP (for local MySQL)
- Git
git clone https://github.com/yourusername/ace-vpn.git
cd ace-vpn- Start XAMPP and launch MySQL
- Create database:
CREATE DATABASE acevpn_db;
USE acevpn_db;- Run the schema script:
mysql -u root -p acevpn_db < vpn-server/src/main/resources/schema.sqlEdit vpn-server/src/main/resources/application.properties:
# Database Configuration
spring.datasource.url=jdbc:mysql://localhost:3306/acevpn_db
spring.datasource.username=root
spring.datasource.password=yourpassword
# Server Port
server.port=8080
# JWT Secret (change this!)
jwt.secret=your-secret-key-here
jwt.expiration=86400000# Build all modules
mvn clean install
# Or build specific modules
cd vpn-server && mvn clean install
cd vpn-client && mvn clean installcd vpn-server
mvn spring-boot:runcd vpn-client
mvn javafx:run-
Launch the Client Application
- Double-click the ACE VPN executable or run via Maven
-
Login
- Enter your Company ID:
GR01120999 - Enter your Password:
Ganesh@1120999 - Click "Login"
- Enter your Company ID:
-
Configure Company Code
- The default code is pre-filled:
company.com/slrc/connectgroup - You can modify this to connect to different company servers
- The default code is pre-filled:
-
Connect to VPN
- Click the "Connect" button
- Wait for status to change to "Connected"
- Your connection is now encrypted and secure
-
Disconnect
- Click "Disconnect" to end the VPN session
- Click "Logout" to return to login screen
-
Access Admin Dashboard
- Navigate to
http://localhost:8080/admin - Login with admin credentials
- Navigate to
-
Manage Users
- Add new users with company codes
- Remove or disable user accounts
- Reset passwords
-
Monitor Connections
- View all active VPN sessions
- Check connection logs
- Analyze usage statistics
Authenticate user and receive JWT token.
Request:
{
"companyId": "GR01120999",
"password": "Ganesh@1120999"
}Response:
{
"token": "eyJhbGciOiJIUzI1NiIs...",
"userId": "123",
"expiresIn": 86400
}Establish VPN tunnel connection.
Headers:
Authorization: Bearer <jwt_token>
Request:
{
"companyCode": "company.com/slrc/connectgroup"
}Response:
{
"sessionId": "abc123",
"status": "connected",
"encryptionKey": "encrypted_aes_key"
}Terminate VPN session.
Check current VPN connection status.
List all registered users (Admin only).
View active VPN sessions (Admin only).
Create new user account (Admin only).
Remove user account (Admin only).
- Java Socket Programming basics
- TCP/UDP communication
- Multi-module Maven project structure
- Basic client-server connection
- Spring Boot setup
- REST API endpoints
- JSON handling
- Postman testing
- MySQL/MariaDB setup
- Hibernate configuration
- JPA repositories
- User entity and authentication
- AES & RSA implementation
- JWT authentication
- BCrypt password hashing
- Encrypted communication
- JavaFX UI design
- Login screen
- Connection management
- Status monitoring
- Web-based admin panel
- User management
- Session monitoring
- Analytics and logs
- Packet encryption/decryption
- Network routing simulation
- Multi-threading implementation
- Data flow visualization
- Error handling & validation
- Cloud deployment (Render/Railway)
- Complete documentation
- Demo video and screenshots
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m "Add amazing feature" - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow Java naming conventions
- Write unit tests for new features
- Document public APIs with Javadoc
- Keep code coverage above 80%
- Use meaningful commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
Your Name
- GitHub: @GaneshRenuse
- LinkedIn: Ganesh Renuse
- Email: ganesh21renuse3@gmail.com
- Spring Boot Documentation
- JavaFX Documentation
- Baeldung Tutorials
- GeeksforGeeks Networking Guide
- Cisco AnyConnect VPN (inspiration)
If you have any questions or need help, please:
- Open an issue
- Email: ganesh21renuse3@gmail.com
- Join our Discord community
If you find this project useful, please give it a β!
Made with β€οΈ by Ganesh Renuse
Β© 2025 ACE VPN. All rights reserved.