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]>
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.