Next-generation, cross-platform desktop VPN application.
WireGuard® · OpenVPN · AES-256-GCM · Kill Switch · DNS Protection · Animated Globe UI
Windows · macOS · Linux — single codebase, native packages
- Features
- Architecture
- Directory Structure
- Installation
- Usage & Build
- Screens
- Security & Protocols
- Server Network
- Design System
- Requirements
- Author
- License
| Layer | Technology | Details |
|---|---|---|
| UI Framework | Jetpack Compose Desktop 1.6.1 | Declarative, GPU-accelerated rendering |
| Animated Globe | Compose Canvas API | Rotating 3D sphere, orbit rings, floating info chips |
| Particle Background | Custom Canvas renderer | Continuously animated particle system |
| VPN Protocol | WireGuard® / OpenVPN / IKEv2 / RERO Custom | User-selectable per session |
| Encryption | AES-256-GCM · ChaCha20-Poly1305 · AES-128-GCM | NSA-approved algorithms |
| Kill Switch | Automatic internet cutoff | All traffic blocked instantly when VPN drops |
| DNS Protection | DNS over HTTPS + Leak Protection | ISP can never see your queries |
| IPv6 Protection | IPv6 traffic blocking | Zero tolerance for real IP leakage |
| Split Tunneling | Per-app routing | Choose which apps go through the VPN |
| Live Statistics | Coroutines-based poll — 900ms | Download/upload speed, ping, connection time |
| Cross-Platform | Windows EXE/MSI · macOS DMG · Linux AppImage | Single codebase, native packages |
| No-Log Policy | Zero logging | User activity is never stored |
┌──────────────────────────────────────────────────────────────┐
│ Main.kt — Entry Point │
│ Window(undecorated=true, 1280×820dp, minSize=960×640) │
└────────────────────────────┬─────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ AppWindow (root composable) │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ ParticleBackground (Canvas — full-size layer) │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────┐ │
│ │ TitleBar │ Draggable custom window bar │
│ │ (draggable) │ Close · Minimize · Maximize │
│ └──────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ NavBar │ │
│ │ HOME · SERVERS · ABOUT · SETTINGS | clock · status │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Crossfade(tween=220ms) — page transition animation │ │
│ │ │ │
│ │ ┌─────────────┐ ┌──────────────┐ │ │
│ │ │ HomeScreen │ │ ServersScreen│ │ │
│ │ │ Globe + │ │ Server grid │ │ │
│ │ │ Controls │ │ 500+ · 50+ │ │ │
│ │ └─────────────┘ └──────────────┘ │ │
│ │ ┌─────────────┐ ┌──────────────┐ │ │
│ │ │ AboutScreen │ │SettingsScreen│ │ │
│ │ │ Team · │ │ Protocol │ │ │
│ │ │ Values · │ │ Security │ │ │
│ │ │ Tech │ │ Privacy │ │ │
│ │ └─────────────┘ └──────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
VpnState (mutableStateOf — Compose reactivity)
│
├── status: VpnStatus DISCONNECTED → CONNECTING → CONNECTED → DISCONNECTING
├── selectedServer: ServerInfo Active server (flag, city, protocol, pingMs)
├── currentPage: NavPage HOME / SERVERS / ABOUT / SETTINGS
│
├── downloadSpeed: Double Coroutine poll — 900ms interval
├── uploadSpeed: Double Simulated ± random variance
├── currentPing: Int selectedServer.pingMs ± 4ms jitter
├── connectedSeconds: Int 1s timer coroutine
│
├── killSwitch: Boolean toggle
├── dnsProtection: Boolean toggle
├── ipv6Protection: Boolean toggle
├── splitTunneling: Boolean toggle
├── autoConnect: Boolean toggle
└── protocol: String WireGuard® / OpenVPN UDP / OpenVPN TCP / IKEv2 / RERO Custom
ReroVPN/
├── src/
│ └── main/
│ ├── kotlin/com/rerovpn/
│ │ ├── Main.kt # Application entry point, Window configuration
│ │ ├── model/
│ │ │ └── VpnModel.kt # ServerInfo, VpnState, VpnStatus, SERVERS list
│ │ └── ui/
│ │ ├── AppWindow.kt # Root composable, page routing, live clock
│ │ ├── TitleBar.kt # Custom frameless window bar (close/min/max)
│ │ ├── NavBar.kt # Navigation bar + VPN status indicator + clock
│ │ ├── HomeScreen.kt # Home — Globe + PowerButton + live statistics
│ │ ├── ServersScreen.kt # Server list grid view
│ │ ├── SettingsScreen.kt # Protocol · Security · Privacy settings
│ │ ├── AboutScreen.kt # Features · Team · Technology badges
│ │ ├── GlobeCanvas.kt # Animated 3D globe Canvas renderer
│ │ ├── ParticleBackground.kt # Continuous particle animation layer
│ │ ├── PageHeader.kt # Shared page header component
│ │ ├── Components.kt # PowerButton, StatTile, SignalBars, ReroSwitch
│ │ ├── SharedComponents.kt # SectionLabel, GlowDivider, StatsMegaRow
│ │ └── Theme.kt # ReroColors palette + Material3 dark theme
│ └── resources/
│ └── assets/
│ ├── icon.ico # Windows icon
│ └── icon.png # Linux / general icon
│
├── build.gradle.kts # Gradle build configuration (Kotlin DSL)
├── settings.gradle.kts # Project name settings
├── gradlew / gradlew.bat # Gradle wrapper scripts
├── SETUP.bat # Windows setup & build wizard
├── SETUP.sh # macOS/Linux setup script
└── JAR_SORUNU_COZUM.txt # gradle-wrapper.jar troubleshooting guide
- JDK 17+ — download from adoptium.net
- Gradle 8.5 — downloaded automatically via the wrapper, no separate install needed
- Windows EXE/MSI only: WiX Toolset 3.x
Windows:
SETUP.batmacOS / Linux:
chmod +x SETUP.sh && ./SETUP.shThe script checks for Java, downloads Gradle dependencies, and presents a build menu.
git clone https://github.com/WHY-RERO/ReroVPN.git
cd ReroVPN# Windows
gradlew.bat run
# macOS / Linux
./gradlew run| Platform | Command | Output |
|---|---|---|
| Windows EXE | gradlew.bat packageExe |
build/compose/binaries/main/exe/ |
| Windows MSI | gradlew.bat packageMsi |
build/compose/binaries/main/msi/ |
| Portable EXE | gradlew.bat createDistributable |
build/compose/binaries/main/app/ |
| macOS DMG | ./gradlew packageDmg |
build/compose/binaries/main/dmg/ |
| Linux AppImage | ./gradlew packageAppImage |
build/compose/binaries/main/app/ |
EXE/MSI: WiX Toolset must be installed. For a WiX-free portable build use
createDistributable.
First build: Gradle downloads dependencies and a JVM runtime — expect ~10 minutes. Subsequent builds are much faster.
┌─────────────────────────────────┬──────────────────────┐
│ │ // Connect │
│ Animated 3D Globe │ │
│ ┌────────────────────┐ │ [ POWER BUTTON ] │
│ │ Orbit Rings (3 layers) │ │
│ │ 22s / 32s / 54s │ │ // Live Stats │
│ │ │ │ Download Upload │
│ │ ● Frankfurt 12ms │ │ Ping Duration │
│ │ ● New York 94ms │ │ │
│ │ ● Tokyo 138ms │ │ // Select Server │
│ └────────────────────┘ │ (first 4 servers) │
│ │ │
└─────────────────────────────────┴──────────────────────┘
- Power Button: One-click connect/disconnect. 2.4s connecting animation, 1.2s disconnecting animation.
- Live statistics: Updated every 900ms after connection is established.
- Orbit rings: 3 independent rings rotating at different speeds (22 000ms / 32 000ms / 54 000ms).
- Globe chips: Frankfurt · New York · Tokyo — floating animated info labels.
- 500+ servers · 50+ countries · 10Gbps bandwidth · 99.9% uptime
- All servers displayed in a 3-column grid
- Ping color coding: green (<50ms) · cyan (50–99ms) · orange (100ms+)
- Signal bar indicator with hover and selection animations
| Section | Options |
|---|---|
| Connection Protocol | WireGuard® · OpenVPN UDP · OpenVPN TCP · IKEv2/IPsec · RERO Custom |
| Encryption | AES-256-GCM · ChaCha20-Poly1305 · AES-128-GCM |
| Security | Kill Switch · DNS Leak Protection · IPv6 Protection · Split Tunneling |
| Privacy | No-Log Policy (always active) · Auto Connect |
| About | Version · Protocol · Platform · Java version |
- 2M+ active users · 500+ servers · 50+ countries · AES-256 encryption
- 6 core value cards: Zero Logs · Ultra Speed · Military Encryption · Kill Switch · DNS Protection · Split Tunneling
- Team cards: 3-person founding team
- Technology badges: WireGuard® · OpenVPN 3.0 · AES-256-GCM · RSA-4096 · ChaCha20-Poly1305 · DNS over HTTPS · Perfect Forward Secrecy · IPv6 Leak Protection
| Protocol | Speed | Security | Recommended For |
|---|---|---|---|
| WireGuard® | Fastest | Very high | Daily use (default) |
| OpenVPN UDP | Fast | High | General purpose |
| OpenVPN TCP | Moderate | High | Firewalled networks |
| IKEv2 / IPsec | Fast | High | Mobile connections |
| RERO Custom | High | Maximum | RERO-optimized infrastructure |
Data Packet
│
▼
AES-256-GCM (or ChaCha20-Poly1305 / AES-128-GCM)
│ Symmetric encryption — unique key per packet
▼
RSA-4096
│ Key exchange
▼
Perfect Forward Secrecy
│ Unique session key per connection
▼
DNS over HTTPS
│ DNS queries routed through encrypted tunnel
▼
Destination Server
- Kill Switch: The moment the VPN tunnel drops, all internet traffic is blocked. Your IP address is never exposed.
- DNS Leak Protection: DNS queries are routed through the encrypted VPN tunnel instead of your ISP's servers.
- IPv6 Protection: IPv6 traffic is fully blocked to prevent real IP leakage through IPv6 channels.
- Split Tunneling: Choose which applications route through the VPN; others connect directly.
- No-Log Policy: IP address, connection timestamps, visited sites, and downloaded content are never recorded.
| Flag | Country | City | Ping | Protocol |
|---|---|---|---|---|
| 🇹🇷 | Turkey | Istanbul | 12 ms | WireGuard® |
| 🇩🇪 | Germany | Frankfurt | 28 ms | WireGuard® |
| 🇳🇱 | Netherlands | Amsterdam | 32 ms | WireGuard® |
| 🇬🇧 | United Kingdom | London | 38 ms | WireGuard® |
| 🇫🇷 | France | Paris | 34 ms | WireGuard® |
| 🇨🇭 | Switzerland | Zurich | 30 ms | WireGuard® |
| 🇸🇪 | Sweden | Stockholm | 44 ms | WireGuard® |
| 🇺🇸 | United States | New York | 95 ms | OpenVPN |
| 🇨🇦 | Canada | Toronto | 108 ms | OpenVPN |
| 🇯🇵 | Japan | Tokyo | 142 ms | WireGuard® |
| 🇸🇬 | Singapore | Central | 118 ms | WireGuard® |
| 🇦🇺 | Australia | Sydney | 165 ms | WireGuard® |
Displayed ping values are base values. Live values update with ±4ms jitter during an active connection.
| Token | HEX | Usage |
|---|---|---|
| Background | #020810 |
Window background |
| Surface | #060F20 |
Cards, panel backgrounds |
| SurfaceVariant | #0A1628 |
Hover states |
| Cyan | #00E5FF |
Accent, connection, active state |
| Blue | #1A6CFF |
Secondary accent |
| Teal | #00FFD0 |
Duration indicator |
| Green | #00FF9D |
Connected state, low ping |
| Orange | #FFB300 |
Connecting / disconnecting |
| Red | #FF2D55 |
Error, warning |
| TextPrimary | #CCE8FF |
Primary text |
| TextSecondary | #6A90AA |
Secondary text |
| TextDim | #3A6080 |
Dim text, labels |
| Border | #1E00E5FF |
Borders (~12% alpha) |
| Component | Duration | Easing |
|---|---|---|
| Page transition (Crossfade) | 220ms | Default |
| Color transitions (hover/select) | 200ms | Default |
| VPN status color | 400ms | tween |
| Orbit ring 1 | 22 000ms | LinearEasing |
| Orbit ring 2 | 32 000ms | LinearEasing (reverse) |
| Orbit ring 3 | 54 000ms | LinearEasing |
| Globe chip float | 3 800ms | FastOutSlowInEasing |
- JDK 17+ (required for build and runtime)
- Gradle 8.5 (downloaded automatically via wrapper)
- WiX Toolset 3.x for Windows EXE/MSI packaging
- Internet connection for first-time Gradle dependency download (~300MB cache)
| Platform | Format | Minimum |
|---|---|---|
| Windows | EXE · MSI · Portable | Windows 10 64-bit |
| macOS | DMG | macOS 11 Big Sur |
| Linux | AppImage | glibc 2.17+ |
- Default: 1280 × 820 dp
- Minimum: 960 × 640 px
- Full-screen: supported
Software Developer · AI Researcher
| Platform | Link |
|---|---|
| GitHub | @WHY-RERO |
| YouTube | @why_reronuzzz |
| @why_reronuzzz | |
| RERO AI | reroai.com.tr |
| Axon Data Relations | axondatarel.org |
| R1 | r1.net.tr |
This project was designed and built from scratch by RERO.
Copyright (c) 2024 RERO — All Rights Reserved.
This software and all associated source code, assets, and documentation
("Software") are the exclusive property of RERO.
The following actions are STRICTLY PROHIBITED without prior written
permission from the owner:
- Copying, reproducing, or redistributing the Software or any part of it
- Using the Software for any commercial or non-commercial purpose
- Modifying, refactoring, or creating derivative works
- Sublicensing, selling, renting, or transferring the Software
- Integrating the Software into any other system, product, or service
- Reverse engineering, decompiling, or disassembling the Software
- Removing or altering this license notice or copyright attribution
THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.
THE AUTHOR SHALL NOT BE LIABLE FOR ANY DAMAGES ARISING FROM ITS USE.
Contact for licensing or collaboration:
GitHub : https://github.com/WHY-RERO
Web : https://reroai.com.tr
See LICENSE for the full license text.