Files
revoltvpnweb/README.md
T
esefandClaude Opus 5 9abf266444 ReVoltVPN website
The landing page for ReVoltVPN, live at userevolt.app.

Vanilla HTML, CSS and JavaScript: no framework, no build step, no
dependencies. Every claim on the page is checked against the app it
describes, which is the reason this is public.

GPL-3.0, same as the app.

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

79 lines
3.0 KiB
Markdown

# ReVoltVPN — website
The landing page for [ReVoltVPN](https://github.com/esefxdz/ReVoltVPN), a free,
no-logs VPN for Android. Live at **[userevolt.app](https://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](https://github.com/esefxdz/ReVoltVPN).
## 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
_headers Cloudflare Pages: JSON content type for the Matrix files
.well-known/matrix/ Matrix delegation for chat.userevolt.app
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](https://github.com/esefxdz/ReVoltVPN) rather than against the
surrounding paragraph.
The privacy policy on the site must stay identical to
[`PRIVACY_POLICY.md`](https://github.com/esefxdz/ReVoltVPN/blob/main/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`](LICENSE).
The ReVoltVPN name, logo and brand images are not covered by that grant.