secretgit
how it works

two rows. no accounts. real anonymity.

the two content rows

Confessions are short anonymous entries — usually a single paragraph, occasionally longer. You pick a category (love, family, work, regret, and 23 others), a country tag (optional, used for the country pages), and you post. The body stays in your language; we don't translate it.

Escapes are structured a little differently: a one-sentence situation (the question, the bind), followed by a tactic (what you actually did or said), tagged with whether it worked, failed, or was mixed. Other readers vote on whether the tactic helped them too. Escapes are how you find out what real people said when they wanted out of a real situation, instead of what wikiHow's editorial team thinks they should have said.

posting

Hit "confess" anywhere on the site. A modal opens. You pick a row (secret or escape), a category, optionally a country, and you write. Submit. There is no signup. There is no email confirmation. The post appears in the feed.

Rate limits: 5 posts per hour, 20 per day, per browser session. This is the only thing we keep across your visits — a one-way SHA-256 hash of (IP + user-agent + a salt that rotates). The hash lets us catch obvious spam without ever storing or being able to recover your IP.

One submission control: a Cloudflare Turnstile challenge. It runs invisibly for most users; if your traffic looks bot-shaped, you'll see a one-tap checkbox. Turnstile doesn't track you across sites; we use it strictly for this one challenge.

reading and voting

The home feed shows the most recent confessions or escapes (you toggle which row you're in). Filter by category, by country, or by sort mode (trending, new, top, all). Open a post to read its full body, drop comments (anonymous, same rules), or like it.

Liking is local: we keep your liked-post IDs in your browser's localStorage so the heart icons stick across visits. We don't sync them to a server account because there is no account. If you clear your browser data, your likes reset.

the technical floor

The site runs on Next.js + Supabase (PostgreSQL with Row-Level Security). Reads are anonymous; writes are restricted to a server-side service role that runs the Turnstile + rate-limit checks before insertion. The anon-key clients in your browser cannot insert posts directly.

We use Cloudflare in front of the origin (DNS + DDoS protection). Cloudflare's edge sees your IP, like every CDN does — that's how the request gets routed. We don't pull Cloudflare's analytics into our application database, and we don't query it for moderation.

For complete operational anonymity, use a VPN and a private window. The defaults here protect you against the ordinary cases (a curious person, a casual lookup, a leaked database). The defense-in-depth is yours to add for the rare cases.

languages and locales

The interface is available in seven languages: English, Turkish, Spanish, German, French, Arabic (RTL), Russian. URL prefix selects the locale (e.g., /tr for Turkish). Switching languages preserves your filters and the post you're reading.

Confessions and escapes themselves are kept in their source language — we don't translate user-generated content. The category/country tags and the surrounding interface translate; the entry text doesn't.