Files
revoltvpnweb/README.md
T
esefandClaude Opus 5 524fc0f944 chore: drop the Matrix delegation
chat.userevolt.app does not resolve any more, so .well-known/matrix was
advertising a homeserver that is gone. _headers existed only to set the
JSON content type on those two files, so it goes with them.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-18 15:43:33 +03:00

2.9 KiB

ReVoltVPN — website

The landing page for ReVoltVPN, a free, no-logs VPN for Android. Live at userevolt.app.

It is open for the same reason the app is: if the page asks you to believe something, you should be able to read the page.

This repository is the home of the website. The Android client lives on GitHub.

What it is

Vanilla HTML, CSS and JavaScript. No framework, no build step, no npm, no dependencies at all. Clone it and open index.html in a browser — that is the entire development setup.

  • One page, nine tabs, routed by URL hash in assets/js/tabs.js
  • Canvas background effects — rain and lightning, matching the app
  • Mobile first, breakpoints at 576 / 768 / 992 / 1200px

Layout

index.html              every piece of copy on the site
assets/
  css/
    base.css            reset, custom properties, typography
    layout.css          shell and tab content area
    nav.css             nav bar, hamburger below 576px
    background.css      background image and canvas layers
    components.css      button variants
    tabs/*.css          one file per tab
  js/
    tabs.js             hash routing, headline rotation, hamburger
    rain.js             rain particles
    lightning.js        lightning flashes
  images/

Adding a tab means a section in index.html, a stylesheet in assets/css/tabs/, and an entry in both the TABS array and the titles object in tabs.js.

The copy is the point

Everything factual here has to be true of the shipping app. That is not a style preference — it is why the repository is public.

The copy was rewritten in October 2026 because it had drifted far enough to be false in places. It said the device identifier expired with your session (it is stored on the device and reused), that session state lived only in memory, that every line of the project was already public, and it described a server log buffer that had been deleted months earlier. None of that was written in bad faith. All of it was true once.

So: if you are changing the copy, check the claim against the app rather than against the surrounding paragraph.

The privacy policy on the site must stay identical to PRIVACY_POLICY.md in the app repository. That is the copy the app's own sidebar opens, so the two disagreeing is a real problem, not a cosmetic one.

Known issue

The rain and lightning canvases fill the viewport behind text that has no background of its own, so the effects read through the words. A dark backdrop on .tab-content fixes it and kills the look, so that is not the answer. Suggestions welcome.

License

GPL-3.0, the same as the app. See LICENSE.

The ReVoltVPN name, logo and brand images are not covered by that grant.