<!doctype html>
<html lang="ro">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Caut Partener — cod sursă</title>
<style>
:root {
--bg: #131118; --panel: #1b1823; --panel-2: #221e2c; --border: #2e2938;
--text: #ece8f4; --muted: #9b93ab; --accent: #ff8a5c; --accent-2: #8f7bff;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: var(--bg); color: var(--text);
font: 16px/1.6 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
padding: 40px 20px 80px;
}
main { max-width: 780px; margin: 0 auto; }
h1 { font-size: 34px; letter-spacing: 0.5px; }
.rings { display: inline-block; vertical-align: -4px; margin-right: 8px; }
.tag { color: var(--muted); margin: 6px 0 30px; font-size: 17px; }
h2 { margin: 44px 0 12px; font-size: 22px; color: var(--accent); }
h3 { margin: 24px 0 8px; font-size: 17px; }
p, li { color: #d5cfe1; }
ul { padding-left: 22px; margin: 10px 0; }
li { margin: 5px 0; }
a { color: var(--accent); }
pre {
background: var(--panel); border: 1px solid var(--border); border-radius: 10px;
padding: 14px 16px; overflow-x: auto; margin: 12px 0;
font: 13.5px/1.55 ui-monospace, SFMono-Regular, Menlo, monospace;
}
code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 14px;
background: var(--panel-2); border-radius: 5px; padding: 1px 6px; }
pre code { background: none; padding: 0; }
.card {
background: var(--panel); border: 1px solid var(--border); border-radius: 12px;
padding: 18px 20px; margin: 14px 0;
}
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.muted { color: var(--muted); font-size: 14px; }
.btn {
display: inline-block; background: var(--accent); color: #1a0f0a; text-decoration: none;
font-weight: 600; border-radius: 10px; padding: 12px 22px; margin: 8px 12px 8px 0;
}
.btn.ghost { background: var(--panel-2); color: var(--text); border: 1px solid var(--border); }
footer { margin-top: 60px; color: var(--muted); font-size: 13px; }
</style>
</head>
<body>
<main>
<h1>
<svg class="rings" width="30" height="30" viewBox="0 0 24 24" aria-hidden="true">
<circle cx="8.6" cy="12" r="6" fill="none" stroke="var(--accent)" stroke-width="2.6"/>
<circle cx="15.4" cy="12" r="6" fill="none" stroke="var(--accent-2)" stroke-width="2.6"/>
</svg>Caut Partener
</h1>
<p class="tag">o <strong>rețea socială peer-to-peer, criptată integral</strong> — fără servere, fără conturi centrale. Această pagină este și depozitul de cod al aplicației.</p>
<a class="btn" href="https://cautpartener.ro">deschide aplicația</a>
<a class="btn ghost" href="#clona">clonează codul</a>
<a class="btn ghost" href="browse/index.html">răsfoiește sursa</a>
<h2 id="clona">Clonează</h2>
<p>Codul sursă complet, clonabil direct de pe această pagină (protocolul git „dumb HTTP” peste fișiere statice — nu există niciun server git, sau vreun server de orice fel):</p>
<pre><code>git clone https://cod-sursa.cautpartener.ro/cautpartener.git</code></pre>
<p>Sursa poate fi citită și în browser, fără clonare: <a href="browse/index.html">vizualizatorul de cod</a>.</p>
<h2>Construiește local</h2>
<p>Ai nevoie doar de Node.js ≥ 22. Aplicația este 100% statică — rezultatul din <code>client/dist/</code> poate fi servit de orice server de fișiere (sau publicat pe IPFS, ca aici):</p>
<pre><code>cd cautpartener/client
npm install
npm run build # tsc + vite → client/dist/
npm run preview # servește build-ul local
npm run e2e # suitele end-to-end (Playwright + stub de mailbox local)</code></pre>
<p class="muted">Protocolul complet este documentat în <code>docs/PROTOCOL.md</code>, iar limitele oneste ale rețelei — în aplicație, la <a href="https://cautpartener.ro/#/despre">cautpartener.ro/#/despre</a>.</p>
<h2>Ce este</h2>
<div class="grid">
<div class="card"><h3>cu adevărat peer-to-peer</h3>
<p class="muted">Profiluri, contacte, postări și conversații replicate direct între dispozitivele membrilor, prin WebRTC. Infrastructura vede doar text cifrat.</p></div>
<div class="card"><h3>criptare integrală</h3>
<p class="muted">Conversațiile private sunt criptate end-to-end; cheile nu părăsesc niciodată browserul. Mesajele offline așteaptă într-o cutie poștală care nu le poate citi.</p></div>
<div class="card"><h3>identitate portabilă</h3>
<p class="muted">O identitate criptografică proprie, transferabilă între dispozitive prin cod QR — fără parole, fără e-mail, fără conturi pe serverele nimănui.</p></div>
<div class="card"><h3>PWA instalabilă</h3>
<p class="muted">Aplicație de ecran principal pe iPhone, iPad și Android; aceeași versiune rulează în orice browser modern, servită ca fișiere statice prin IPFS.</p></div>
</div>
<h2>English</h2>
<p><strong>Caut Partener</strong> ("looking for a partner") is a fully end-to-end-encrypted, peer-to-peer social network for finding activity partners — no servers, no central accounts. Profiles, contacts, posts and chats replicate directly between members' devices over WebRTC; offline delivery goes through a relay mailbox that cannot read private content. The app is a static PWA served over IPFS, and this page doubles as its source repository:</p>
<pre><code>git clone https://cod-sursa.cautpartener.ro/cautpartener.git
cd cautpartener/client
npm install && npm run build # Node.js ≥ 22; output in client/dist/</code></pre>
<p class="muted">Browse the source <a href="browse/index.html">in your browser</a> · protocol spec in <code>docs/PROTOCOL.md</code> · honest limits in-app at <a href="https://cautpartener.ro/#/despre">/#/despre</a>.</p>
<footer>Licență MIT / MIT license · <a href="https://cautpartener.ro">cautpartener.ro</a> · cod sursă / source: <code>git clone https://cod-sursa.cautpartener.ro/cautpartener.git</code></footer>
</main>
</body>
</html>