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]>
This commit is contained in:
commit
9abf266444
31 files changed
+2602
No files matched your search
@@ -0,0 +1,78 @@
|
||||
# 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.
|
||||
Reference in new issue
Block a user