diff --git a/site/README.md b/site/README.md new file mode 100644 index 0000000..8695c49 --- /dev/null +++ b/site/README.md @@ -0,0 +1,35 @@ +# goon-foss.org + +Statyczna strona domowa (jeden plik, Tailwind z CDN, bez builda). + +**Do 2026-08-13 istniała WYŁĄCZNIE na serwerze**, a jedyną historią były kopie +`index.html.bak-*` leżące obok. Stąd ten katalog: zmiany idą przez repo, kopia +zapasowa na serwerze zostaje jako awaryjne cofnięcie, nie jako historia. + +## Deploy + +Serwuje ją `infisical-caddy` z wolumenu, NIE z kontenerów Goona: + +``` +D=/var/lib/docker/volumes/infisical_caddy-data/_data/goon-foss +ssh "cp $D/index.html $D/index.html.bak-$(date +%Y%m%d-%H%M%S)" +scp site/index.html :$D/index.html +``` + +Bez restartu, Caddy czyta plik z dysku przy każdym żądaniu. + +## Zawartość katalogu na serwerze + +- `index.html` — ta strona +- `goon-v*.apk` — buildy do pobrania (link w hero i w stopce wskazuje najnowszy) +- `logo.png`, `favicon.png` +- `shots/` — zrzuty z apki do sekcji „In the app", kopiowane z + `app/static/marketing/`. Miniaturki scen są na nich rozmyte, bo strona jest publiczna. + +## Uwaga przy aktualizacji liczb + +Liczby w hero (sceny/performerzy/filmy/źródła) są wpisane na sztywno. Świeże: + +``` +docker compose exec -T db psql -U goon -d goon -c "SELECT (SELECT count(*) FROM scenes), (SELECT count(*) FROM performers), (SELECT count(*) FROM movies), (SELECT count(DISTINCT origin) FROM playback_sources);" +``` diff --git a/site/index.html b/site/index.html new file mode 100644 index 0000000..f32d40d --- /dev/null +++ b/site/index.html @@ -0,0 +1,389 @@ + + + + + + + + + + goon · self-hosted adult content aggregator + + + + + + + + + + +
+
+
+

18+ Adults Only

+

+ This site discusses software for indexing adult content. You must be of legal + age in your jurisdiction to enter. +

+
+ + + Take me out + +
+
+
+ + +
+
+
+ goon + + goon + +
+ +

+ Self-hosted
+ scene catalog
+ for grown-ups. +

+ +

+ Goon indexes scene and movie metadata from TPDB & StashDB, deduplicates it + across 46 public sources, and serves a fast mobile client. Zero ads. Zero tracking. + Download, open, browse. No account, no setup. +

+ + + +
+
3.8M scenes
+
108k performers
+
45k movies
+
46 sources
+
+ +

+ Android 7+ · no setup, no login · 18+ +

+
+
+ + +
+
+

What it does

+

+ Goon is not a tube. It does not host, transcode, or proxy content. + It is a metadata aggregator + mobile UI for finding scenes that are + already publicly available. +

+ +
+
+
⌬
+

Multi-source ingest

+

+ TPDB & StashDB metadata plus 46 public sources, scenes and full movies. + Cross-source deduplication via perceptual-hash thumbnails and title matching, + so the same scene from six tubes stays one entry. +

+
+ +
+
⌖
+

Per-performer backfill

+

+ A continuous worker walks performers by staleness and back-fills tube scenes + for the longest-stale first. Completeness over recency. +

+
+ +
+
⌥
+

Smart stream resolution

+

+ yt-dlp for mainstream tubes + P.A.C.K.E.R. unpacker for JWPlayer hosters + + WebView fallback for IP-bound CDNs. Streams direct from source, no transcoding. +

+
+ +
+
⌗
+

Mobile-first UI

+

+ React Native + Expo. Separate tabs for scenes, movies, sites and JAV, + plus performer pages, watch history, favorites and hold-to-preview + thumbnails. Built for thumb scrolling. +

+
+ +
+
⌘
+

Privacy by default

+

+ App lock (PIN + biometrics), FLAG_SECURE screenshot block, age gate. + No analytics. No telemetry unless YOU configure Sentry with your own DSN. +

+
+ +
+
⌬
+

Works out of the box

+

+ Download the APK and it connects automatically, no account, no + config. Power users can point it at their own self-hosted backend. +

+
+
+
+
+ + +
+
+

In the app

+

Screenshots from a real install. Thumbnails are blurred here, not in the app.

+ +
+
+ Scenes screen +
+
Scenes
+
Grid with search, tag filters and favourites.
+
+
+
+ Scene screen +
+
Scene
+
Cast, studio, tags and every source that has it.
+
+
+
+ Performer screen +
+
Performer
+
Everything indexed for one performer.
+
+
+
+ App lock screen +
+
App lock
+
PIN and biometrics, screenshots blocked.
+
+
+
+
+
+ + +
+
+

What's new

+

+ The catalog keeps growing. Recent additions, newest first. +

+ +
+
+
August 2026
+

Animation and 3D

+

+ Six new sources covering hentai and 3D animation, each with its own + catalogue rather than reposts of the others. Series, episode numbers and + genres come along with them. +

+
+ +
+
August 2026
+

45,000 movies

+

+ Full-length movies now sit in their own tab, enriched with cast, studio + and categories, and deduplicated against each other. +

+
+ +
+
July 2026
+

JAV in its own tab

+

+ JAV is a separate namespace that does not deduplicate against the western + catalogue, so it lives in its own tab instead of mixing into the main feed. +

+
+
+
+
+ + +
+
+

Get started

+

Three steps. No account, no server, no config.

+ +
+

Already have Goon installed? Read this first.

+

+ 0.2.2 is signed with a new key, so Android will not install it over the old app. + You have to uninstall first, and that wipes what is stored on the phone. + Before you uninstall, open Goon, go to Settings, + Backup & sync, and copy your sync code. Install this APK, then paste the code into + Restore. Without it your favourites, saved searches, hidden list and watch progress + cannot be found again. A one-off: later updates install themselves as usual. +

+
+
    +
  1. + 1 + + Download the APK + and open it. Allow "install from unknown sources" for your browser if Android asks. + +
  2. +
  3. + 2 + + Open the app, accept the 18+ gate. It connects automatically, no login. + +
  4. +
  5. + 3 + + Browse. That's it. + +
  6. +
+
+
+ + + + + +
+
+
+
+
+ goon +
+

Adult content metadata aggregator. FOSS, ad-free.

+

MIT license. No warranty. 18+ jurisdictions only.

+
+ +
+

+ Goon does not host, transcode, store, or distribute any media. It scrapes + publicly-available metadata and links out to the source. Users are + responsible for complying with local law. +

+
+ + + +