1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169 | <!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>ardegazu — p2p apps that don't want your soul</title>
<meta name="description" content="a catalog of p2p apps — no accounts, no ads, no servers, nothing sold. Everything runs in your browser, end-to-end encrypted.">
<meta name="theme-color" content="#171520">
<!-- the SW caches the catalog shell ONLY — everything under /id/ is
network-only, never cached (three redundant exclusions in the workbox
config, all must be preserved): /id/ is the identity bridge every app
embeds and staleness there would freeze the suite's identity protocol -->
<link rel="manifest" href="./manifest.webmanifest">
<link rel="apple-touch-icon" href="./icons/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="192x192" href="./icons/icon-192.png">
<!-- theme first, then the hub's own sheet: the same cascade order main.ts's
two CSS imports gave them. theme.css is copied verbatim from the sha-pinned
ardegazu-theme dep by scripts/build.mjs (house rule 10). -->
<link rel="stylesheet" href="./theme.css">
<link rel="stylesheet" href="./style.css">
</head>
<body>
<div class="horizon" aria-hidden="true">
<!-- distant pastel monument -->
<svg width="520" height="560" viewBox="0 0 520 560" xmlns="http://www.w3.org/2000/svg">
<g>
<polygon points="330,60 430,110 330,160 230,110" fill="#f4c8c4"/>
<polygon points="230,110 330,160 330,300 230,250" fill="#e8a09a"/>
<polygon points="330,160 430,110 430,250 330,300" fill="#d98b85"/>
<polygon points="330,240 400,275 330,310 260,275" fill="#f9dcb4"/>
<polygon points="260,275 330,310 330,420 260,385" fill="#f0b877"/>
<polygon points="330,310 400,275 400,385 330,420" fill="#dda45f"/>
<polygon points="330,370 480,445 330,520 180,445" fill="#c4dfcf"/>
<polygon points="180,445 330,520 330,560 180,485" fill="#93c1a5"/>
<polygon points="330,520 480,445 480,485 330,560" fill="#7fae93"/>
<circle cx="150" cy="90" r="34" fill="#f9dcb4"/>
</g>
</svg>
</div>
<main>
<nav id="tabs" aria-label="sections" data-i18n-attr="aria-label:nav.aria">
<a href="#/apps" data-i18n="nav.apps">apps</a>
<a href="#/about" data-i18n="nav.about">why</a>
<a href="#/you" data-i18n="nav.you">you</a>
<a href="#/boards" data-i18n="nav.boards">boards</a>
<a href="#/bots" data-i18n="nav.bots">bots</a>
</nav>
<section class="view" id="view-apps">
<header>
<h1>ardegazu.ro</h1>
<p class="tag" data-i18n="header.tag">p2p apps that don't want your soul — no accounts, no ads,
no servers, nothing sold.</p>
</header>
<div class="rule" aria-hidden="true">
<i style="background:var(--rose)"></i>
<i style="background:var(--peach)"></i>
<i style="background:var(--sage)"></i>
<i style="background:var(--lilac)"></i>
<i style="background:var(--sky)"></i>
<i style="background:var(--gold)"></i>
</div>
<!-- cards render here from catalog.json (src/home/catalog.cljs) -->
<div class="apps"></div>
<footer>
<a href="https://git.ardegazu.ro" data-i18n="footer.source">source</a> · <span data-i18n="footer.built">built quietly</span>
<span id="footer-lang"></span>
</footer>
</section>
<section class="view" id="view-about">
<section class="manifesto" aria-label="why" data-i18n-attr="aria-label:aria.about">
<h3 data-i18n="about.h1">what this is</h3>
<p data-i18n="about.p1a">a small constellation of p2p apps. Every one of them runs entirely
in your browser, and your browsers talk directly to each other — there
is no company in the middle, no database, nothing between you and the
people you invited.</p>
<p data-i18n="about.p1b">an invite link is the only door there is. Share it and someone is
in; don't, and no one is.</p>
<h3 data-i18n="about.h2">no accounts</h3>
<p data-i18n="about.p2">there is nothing to sign up for. One key, created here in the you
tab, is you everywhere — chat, board and the games all recognize it
automatically. It never leaves your browsers, so there's no password
to reset and no one who can lock you out.</p>
<h3 data-i18n="about.h3">no servers</h3>
<p data-i18n="about.p3">no database to breach, no feed to optimize, no outage to wait
through. A room exists because your people have its link; what happens
there lives in your devices and theirs, nowhere else.</p>
<h3 data-i18n="about.h4">sealed end to end</h3>
<p data-i18n="about.p4">everything is encrypted between the people in the room. There is
no "we" that receives it — not to keep it safe, not to study it, not
to hand it over. We couldn't read your rooms if we wanted to, and we
like it that way.</p>
<h3 data-i18n="about.h5">nothing is for sale</h3>
<p data-i18n="about.p5">no ads, no tracking, no engagement metrics, no data going anywhere.
Nothing here is trying to keep you scrolling or measure how long you
stayed. These apps only want to be useful, and then to get out of the
way.</p>
<h3 data-i18n="about.h6">how to take part</h3>
<p data-i18n="about.p6">install this page as an app — your browser will offer it, or use
"add to home screen". Then bring one friend; everything here is better
with someone in the room.</p>
<!-- inline markup — per-language blocks, not key swaps -->
<p data-lang-block lang="en">all of it is open source — every repo clones straight from
<a href="https://git.ardegazu.ro">git.ardegazu.ro</a>:</p>
<p data-lang-block lang="ro" hidden>totul e open source — orice repo se clonează direct de pe
<a href="https://git.ardegazu.ro">git.ardegazu.ro</a>:</p>
<p data-lang-block lang="hu" hidden>az egész nyílt forráskódú — minden repó közvetlenül a
<a href="https://git.ardegazu.ro">git.ardegazu.ro</a>-ról klónozható:</p>
<p><code>git clone https://git.ardegazu.ro/chat.git</code></p>
<h3 data-i18n="about.h7">the fine print, honestly</h3>
<p data-i18n="about.p7a">a few things this design honestly costs. Presence lasts only while
a tab is open — close it and you quietly go dark. Leaderboards show
what your browser has verified from other players, not one central
truth. One small signal server helps browsers find each other and
holds sealed invites for friends who are offline — it carries
envelopes it cannot open, and no room ever passes through it. And
your key is your identity: lose it and there is no recovery desk —
save it in a password manager, or keep the export file somewhere
safe.</p>
<p data-i18n="about.p7b">more apps are coming. If you have an idea for something that
should exist without accounts or ads, talk it over in a room with
your people — that is where these apps come from.</p>
</section>
</section>
<section class="view" id="view-you">
<section class="id-card" id="identity" aria-label="your identity" data-i18n-attr="aria-label:aria.identity"></section>
<section class="soc" id="social" aria-label="friends" data-i18n-attr="aria-label:aria.friends"></section>
<section class="soc on" id="you-lang"></section>
</section>
<section class="view" id="view-boards">
<section class="soc" id="lb" aria-label="leaderboards" data-i18n-attr="aria-label:aria.boards"></section>
</section>
<section class="view" id="view-bots">
<section class="soc" id="bots" aria-label="resident bots" data-i18n-attr="aria-label:aria.bots"></section>
</section>
</main>
<script defer src="./assets/main.js"></script>
</body>
</html>
|