Kako ravnam z zaupanjem. Po domače.
Zaupaš mi svoj seznam strank. To ni malenkost. Tukaj je, kaj s tem počnem, iskreno.
Varnost
- 🔐 TLS 1.3 povsod (wildcard certifikat, se sam obnavlja). HTTP se preusmerja na HTTPS, HSTS je vklopljen.
- 🔑 Prijava brez gesla, preko magične povezave v e-pošti. Ni gesla, ki bi ga izgubil, ni gesla, ki bi ga kdo ukradel.
- 🧾 CSRF žetoni na vsakem obrazcu, ki kaj spremeni. Stroga kontrola Referer na HTTPS.
- 🛡️ Content Security Policy preko Talismana (stroge omejitve izvora skript). Prijava in registracija sta omejeni po hitrosti prek Redisa.
- 🗄️ Baza je vezana samo na 127.0.0.1, noben javni port ni odprt. Vsako noč šifrirana rezervna kopija na disk.
- 🕵️ Vsako pomembno dejanje pristane v revizijskem dnevniku (dodan obisk, unovčena nagrada, spremenjene nastavitve, ghost prijava).
Zanesljivost
- ⏱️ Gostovanje na Hetznerju, Frankfurt, v EU. Javni health check na /healthz.
- 💾 Vsako noč rezervna kopija pg_dump, hranjena 14 dni. Enkrat na mesec sam preizkusim obnovitev.
- 📉 Če se kaj pokvari, popravek gre ven še isti dan. Vodim en izdelek, ne petdeset.
- 📊 Cilj razpoložljivosti 99,5 odstotka (v najslabšem primeru okoli 3,5 ure izpada na mesec). SLA dobropisov še ni - podpisal ga bom s prvim salonom, ki ga bo zahteval.
Zasebnost in GDPR
- 🇪🇺 Vsi podatki živijo v EU (Hetzner, Frankfurt). Nič ne zapusti EU/EGP, razen dostave e-pošte prek Brevo, ki je prav tako v EU.
- 🚫 Nobenih analitičnih orodij tretjih oseb s piškotki. Ni Google Analytics, ni Facebook Pixla, ni snemanja sej.
- 📤 Vsako stranko, obisk in nagrado lahko izvoziš kot CSV iz Nastavitev, kadarkoli želiš.
- 🗑️ Stranka želi biti pozabljena: en klik v Strankah pobriše njen zapis in celotno zgodovino z njim vred.
- ⏳ Zapreš račun in dobiš 30-dnevno okno s polnim CSV izvozom. Potem se vse za vedno izbriše.
- 📄 Vse podrobnosti v moji Politika zasebnosti.
Sub-processors
These are the third parties that help me run fidel. Nothing else touches your data.
| Who | Why | Where |
|---|---|---|
| Hetzner | Application server, database, backups | Frankfurt (EU) |
| Cloudflare | DNS + TLS certificate (DNS-only, no traffic proxy) | EU edge |
| Brevo | Transactional + lifecycle emails to your clients | Paris (EU) |
| Stripe | Your subscription billing (never your clients) | Dublin (EU) + US |
| Anthropic (Claude) | Auto-translation of UI strings + weekly-digest rewrite. Never sees your client list. | USA (SCCs) |
Full details, transfer basis, change notification policy in SUBPROCESSORS.md.
Cookies I set
| Cookie | What for | Lasts |
|---|---|---|
| session | Signed session (login, language, flash messages) | 30 dni |
| csrf_token | CSRF protection on forms | per session |
| fidel_theme | Your dark / light theme choice | permanent (localStorage) |
| _asid | Anonymous session id for our own funnel analytics | per session |
First-party only. No third-party cookies, no cross-site trackers, no advertising IDs.
How long I keep things
- 👥 Client records - until you cancel your account (or click 🗑 on a specific client). Then 30-day grace window, then hard-deleted.
- 📊 Analytics events - 90 dni (funnel windows are 7 and 30 days; the extra buffer allows year-over-year sanity checks and is auto-purged nightly.)
- 📱 Kiosk QR tokens - 5 minutes (rotating anti-fraud); 1 day audit trace after expiry.
- 💾 Encrypted backups - 14 dni on disk, then rotated out.
- 📜 Web + app logs - 14-30 dni.
Full retention grid in RETENTION.md.
If something goes wrong
I have a written breach response plan with a 72-hour notification deadline to the Romanian supervisory authority (ANSPDCP) per GDPR Art 33, plus direct notification to every affected tenant. RTO 4 hours, RPO 24 hours, tested quarterly.
Full playbook in INCIDENT-RESPONSE.md.
Kdo je lastnik podatkov
Ti. Tvoj seznam strank je tvoj posel, ne moj. Nikoli ga ne prodam, nikoli ne delim z nikomer drugim, nikoli ne treniram ML modelov na njem, nikoli ne gledam posameznih zapisov strank, razen če me prosiš za pomoč pri odpravljanju napake. Izvozi kadar koli, odnesi kamor koli.
Oseba za strežniki
Živjo, jaz sem Narcis. Fidel.club sem zgradil, potem ko je bližnja prijateljica po tiho izgubljala svoje redne stranke, vse možnosti na trgu pa so bile ali aplikacije, ki jih njene stranke nikoli ne bi namestile, ali 200 evrov na mesec drage stvari za velika podjetja. Sam vodim to iz svoje domače pisarne v Bukarešti. Ko pišeš na podporo, jaz to preberem. Ko najdeš napako, jo popravim. Ko imaš idejo, ki se mi zdi odlična, jo izdam še isti teden. To je celotno podjetje.
Piši mi: nark@nark.ro