vroute: A Local DNS and SSL Router for Modern Web Development
"Local development should not feel completely different from production. When localhost limits your architecture, local DNS and reverse proxies bridge the gap."
⚡ TL;DR
vroute is an open-source local DNS and SSL router that maps custom domains (like https://app.test or *.app.test) to local development ports. It automates local Root CA SSL trust, CORS header injection, analytics shielding (preventing test data pollution), and network fault/latency simulation without requiring manual /etc/hosts editing or backend code modifications.
For many web developers, the first version of an application runs on something like http://localhost:3000. That works until the application needs HTTPS, custom domains, wildcard subdomains, OAuth callbacks, payment integrations, webhooks, CORS handling, or realistic network conditions.
At that point, local development often becomes a collection of manual workarounds: editing /etc/hosts, generating certificates with openssl, configuring reverse proxies (like NGINX), changing backend code, and repeatedly fixing environment-specific problems.
vroute was built by Vivago Technologies to remove much of that friction. It is publicly available on GitHub.
What is vroute?
vroute is a local development infrastructure tool designed to make applications running on localhost behave more like applications running behind real domains.
Instead of working exclusively with http://localhost:3000, you can create a local route such as https://app.test and proxy that domain to your local application. The project handles local DNS, SSL certificates, operating-system trust, routing, and traffic proxying from a single tool.
# Map custom domain to local port vroute add app.test 3000 ✔ Created local route: https://app.test → http://localhost:3000
Why localhost Becomes a Problem for Modern Applications
localhost is convenient, but modern applications frequently depend on infrastructure that behaves differently from a basic local development server. For example, you may need to test:
- OAuth and social login callbacks (Google, GitHub, Auth0) that demand HTTPS.
- Payment gateway webhooks and secure cookies (Stripe, SSLCommerz).
- HTTPS-only browser APIs (Service Workers, Web Crypto, WebAssembly).
- Multi-tenant subdomains (e.g.,
tenant-a.app.test,tenant-b.app.test). - Frontend applications calling separate backend APIs across different ports without triggering CORS errors.
- Simulating slow 3G networks or 500 server errors for UI resilience testing.
Wildcard Domains for Multi-Tenant SaaS Applications
Wildcard routing is particularly useful when developing SaaS applications. Suppose an application uses customer-specific subdomains in production:
company-b.example.com
company-c.example.com
Reproducing that structure locally typically requires creating and maintaining individual host entries in /etc/hosts. vroute supports wildcard routes out of the box:
# Map wildcard subdomain to local port vroute add *.app.test 3000
That means you can immediately test tenant1.app.test, tenant2.app.test, or any arbitrary subdomain without adding each one manually.
Built-in Local DNS & Auto-SSL
vroute includes a local DNS server running on UDP port 53. It intercepts local development traffic dynamically so you don't have to manually edit /etc/hosts for every new route or wildcard pattern.
Furthermore, vroute generates a local Root Certificate Authority (CA) during initial setup and injects it into your operating system's trust store (Linux update-ca-certificates, macOS Keychain, or Windows CertUtil). Once trusted, all generated SSL certificates for *.test domains are recognized natively by your browser without red "Untrusted Certificate" warnings.
Need Scalable SaaS or Custom Web Architecture?
At Vivago Technologies, we design and build high-performance SaaS platforms, enterprise web apps, and custom digital products tailored for scaling businesses.
Advanced Proxy Features: Analytics Shield & Chaos Engineering
Beyond routing and SSL, vroute includes specialized proxy middlewares for frontend and full-stack development:
Firing tracking events to Mixpanel, Google Analytics, or Stripe webhooks during local testing pollutes your production metrics. The vroute Shield intercepts these external calls via Local DNS and returns mock 200 OK responses with CORS headers, keeping production data 100% clean.
Testing loading skeletons or error handlers usually requires writing temporary setTimeout() or throwing errors in backend code. With Chaos Monkey, you can inject 1000ms latency or 50% HTTP failure rates directly in the proxy dashboard without modifying backend source code.
Feature Comparison: Local Development Approaches
| Feature | Plain localhost | Manual NGINX + /etc/hosts | vroute |
|---|---|---|---|
| Custom Domains | ❌ No (localhost only) | ⚠️ Manual per-entry | ✅ Auto Instant |
| Wildcard Subdomains | ❌ No | ⚠️ Complex DNSmasq | ✅ Built-in UDP 53 |
| Trusted Local SSL | ❌ Browser Warnings | ⚠️ Manual mkcert setup | ✅ Auto OS Trust |
| Analytics Protection | ❌ No | ❌ No | ✅ Analytics Shield |
| Fault / Latency Injection | ❌ Code Changes Required | ❌ No | ✅ Chaos Monkey UI |
Quick Start Workflow
Getting started with vroute takes less than a minute via npm:
# 1. Install globally npm install -g vroute# 2. Setup local CA trust & start daemon vroute setup vroute start# 3. Add a route and launch dashboard UI vroute add myapp.test 3000 vroute ui
Visit https://myapp.test in your browser — it is proxied directly to localhost:3000 with a valid, trusted SSL certificate!
Open Source & Community
vroute is an open-source initiative created and maintained by Vivago Technologies under the ISC license. The codebase is written in Node.js, Express, React 19, Vite, and Tailwind CSS.
🔗 Explore vroute on GitHub: https://github.com/nowshadabir/vroute
Explore our specialized SaaS Engineering and Web Development Services to see how Vivago builds scalable infrastructure and modern web applications for clients worldwide.