Skip to content

System Architecture

┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Landing Page │ │ Console │ │ Seller Portal │
│ (Next.js 16) │ │ (React + Vite) │ │ (React + Vite) │
│ Product │ │ End user │ │ Reseller │
│ landing page │ │ dashboard │ │ dashboard │
│ │ │ │ │ │
└────────┬────────┘ └────────┬─────────┘ └────────┬─────────┘
│ │ │
│ ┌────────▼──────────┐ │
└──────────────► API Backend ◄──────────────┘
│ (api.prx.network)│
│ Go + Encore │
└───────────────────┘
  • Stack: Next.js 16, React 19, TypeScript, Tailwind CSS 4
  • Purpose: Product showcase page to attract customers
  • Features: 14 languages, dark mode, animations (Framer Motion, GSAP), SEO
  • Deploy: Cloudflare Pages (recommended) or Vercel
  • Repo: github.com/lebachhiep/netproxy-index-v2
  • Stack: React 19, Vite 6, TypeScript 5.8, Tailwind CSS 4, SCSS
  • Purpose: End-user control panel
  • Features: Purchase proxies, manage subscriptions, e-wallet, order history, 14 languages
  • Deploy: Vercel (recommended) or Cloudflare Pages
  • Repo: github.com/lebachhiep/netproxy-console-v2
  • URL: seller.prx.network
  • Purpose: Reseller control panel — operated by NetProxy
  • Features: Manage pricing, users, orders, branding, payments, and reports
  • URL: api.prx.network
  • Purpose: Single API system serving all frontends
  • Operated by NetProxy — resellers do not need to deploy the backend
  1. Visitor lands on the reseller’s Landing Page
  2. Clicks “Sign Up” and is redirected to the Console
  3. Registers an account on the Console
  4. The backend automatically associates the user with the reseller based on the domain
  1. User logs in to the Console
  2. Selects proxy type, country, and duration, then adds to cart
  3. Pays through the payment gateway configured by the reseller
  4. Backend receives a webhook confirmation and processes the order
  5. A worker purchases the proxy from the provider and creates a subscription
  6. User receives proxy credentials (IP, port, username, password)
  1. NetProxy sets the base price for each proxy plan
  2. Reseller sets a multiplier on the Seller Portal
  3. User sees the price = base price x multiplier
  4. Coupons apply an additional discount on top of the final price
  1. Reseller configures domain + logo + favicon on the Seller Portal
  2. Console fetches branding information from the API based on the request domain
  3. The interface automatically displays the reseller’s branding
  • Uses JWT (JSON Web Token)
  • Access token: expires after 15 minutes
  • Refresh token: expires after 30 days
  • Automatically refreshes the token upon receiving a 401 error
  • Supports “Remember me” — Persists the login session for subsequent visits. The account is automatically logged out if the user does not check “Remember me”