For a friend, I developed a VPN application, called LoonaVPN, built in WPF .NET with the MVVM design pattern. This application provides a user-friendly interface that allows users to easily connect to a VPN server, with support for both OpenVPN and WireGuard.
Github: Private
Key Features of the Application:
Authentication (Auth): The app uses an API from LoonaVPN for secure user authentication, ensuring that only authorized users can access the VPN services.
Auto-login: After startup, the app automatically logs in after 5 seconds, making the user experience faster and more efficient.
Dynamic Servers: The application owner can easily add or remove servers. The server configurations are automatically retrieved from an API.
Select Last Selected Server: The app remembers the last selected server, so it is automatically selected upon startup, speeding up the process for the user.
VPN Connection with OpenVPN or WireGuard: The application works with both OpenVPN or WireGuard configurations.
Discord RPC Support: The application integrates with Discord Rich Presence (RPC) and displays the VPN app as a "game" status in Discord. This allows sharing your current VPN activity with your Discord friends.
Technical Approach:
WPF & MVVM: By using WPF for the user interface and the MVVM design pattern for separated logic, the application remains well-structured and easily extendable.
API Integration: The dynamic server functionality uses an API that retrieves and manages server configurations, providing a flexible and easily customizable experience.
OpenVPN & WireGuard: The application supports both OpenVPN and WireGuard, two of the most popular VPN protocols, for a reliable and secure connection to the server.
Discord RPC: The integration with Discord RPC adds an extra layer of interaction, allowing users to share their VPN status with their friends.
With LoonaVPN, I have further strengthened my skills in networking, VPN technologies, and API integration. I have learned how to set up reliable connections via OpenVPN and WireGuard, and how to improve the user experience with dynamic server settings and Discord integration.