Build dasbes.de — community "das beste X" voting app (Bun + Supabase) #1
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Build dasbes.de — a small community "das beste X" voting app. Per topic, visitors see the top-voted answer, can submit their own suggestion (optionally with a link), and upvote others. Replaces the throwaway static SPA currently at
m/onepagersites/dasbes.de/(use it as seed/reference; the original dynamic app's source was lost and is unrecoverable).m's canonical format (verbatim example): "Das beste Fahrrad ist das, das du gerne fährst." → full sentences "Das/Der/Die beste <Thema> ist …", correct gender per noun. NOT "das Beste an X".
Routing
dasbes.de/<thema>→ shows that topic: the current top-voted suggestion big, then the rest with vote counts + upvote buttons, then a form "eigenen Vorschlag + optionalen Link".dasbes.de/(root) → a random topic that already has content + the explore input.Features
ADMIN_TOKEN) unlocks hide/delete on any suggestion (for spam/junk). Simple:?admin=<token>reveals delete buttons, server checks the token. Basic anti-spam: rate-limit submissions per IP/device, max length, strip HTML./fernseher→ "Der beste Fernseher ist …" with a link to the product (Amazon/Hersteller). Render as a clickable "→" next to the suggestion.Stack & deploy
GET /api/<thema>,POST /api/suggest,POST /api/vote). Keep it lean, no heavy framework needed.100.99.98.203:6789(same instance the other HL apps now use — get thepostgrespassword from an existing app's Dokploy compose env, e.g.hlckm/mcompete-app-z7ejqq, or.env.age). Create a dedicateddasbesschema with tablestopics/suggestions(id, topic, text, url, votes, created_at, hidden). Use asearch_path=dasbes,publicconnection string like the paliad/mgmt apps do.m/dasbes(already created, this repo) — keep it versioned (unlike the lost original).docker-compose.ymlin repo, Bun container on port 3000,dokploy-network. Then point dasbes.de at it: dasbes.de is currently an onepager Dokploy domain — move the routing to this app (add the domain to the new compose / file-based Traefik route likemeinepfer-racetrack.yml, and remove the dasbes block from onepager so they don't conflict). Keepwww.dasbes.deworking too if trivial.Seed content (correct format; keep m's Fahrrad verbatim)
Design
German UI. Clean, slim, mobile-first (the static SPA's dark/yellow look is a fine starting point — dark bg, one accent). Big sentence, understated voting UI. noindex is fine.
Definition of Done
dasbesschema), dasbes.de routed to it (old onepager dasbes block removed, no route conflict), build/deploy green, verified live.status:done.Notes
http://100.99.98.201:3000(key inmai-dokployskill), mLake serves public web (Traefik), mRiver100.99.98.203hosts the migrated Supabase (msupabase-dbon :6789). mlake shell is fish (grep = ripgrep, no-E). passwordless sudo on mlake for/etc/dokploy/traefik/dynamic/.✅ dasbes.de ist live
Live: https://dasbes.de · z.B. https://dasbes.de/fahrrad ·
www.dasbes.deläuft auch.Verifiziert gegen die echte Domain:
/fahrradzeigt „Das beste Fahrrad ist das, das du gerne fährst." (verbatim),/leitet auf ein zufälliges Thema mit Inhalt um, Vorschlag→Vote→Admin-Delete laufen end-to-end durch (Testdaten wieder entfernt).Was gebaut wurde
server.ts) — SSR der Themenseite + schlanke JSON-API (GET /api/<thema>,POST /api/suggest|vote|delete). Kein Framework, keine DB-Treiber-Dependency (Buns eingebautesSQL).ADMIN_TOKEN(in der Dokploy-Compose-Env gesetzt).dasbes.de/<thema>?admin=<token>blendet Delete-Buttons ein, Server prüft den Token (constant-time).noindex.Daten
Dediziertes
dasbes-Schema auf der geteilten mRiver-Supabase (100.99.98.203:6789). Tabellentopics,suggestions,votes,submissions— alle Queries schema-qualifiziert. Geseedet mit den 12 Sätzen aus dem Issue (fahrrad verbatim, korrekte Umlaute).Deploy & Routing
dasbes-e271636b-njhors), Bun-Container :3000 amdokploy-network, Traefik-Labels fürdasbes.de+www.dasbes.de, Let's-Encrypt-Cert.dasbes.de-Domain am onepager-Caddy-App wurde aus Dokploy entfernt (Traefik-Dynamic-File regeneriert, kein Konflikt mehr). Traefik routetdasbes.dejetzt auf die neue App.dokploy-network(kein eigenesdefault-Bridge).Commits
693fd2600da98fadb174mai/hopper/remove-dasbes-route: https://mgit.msbls.de/m/onepager/commits/branch/mai/hopper/remove-dasbes-routeFür @m / head — noch zu mergen
mai/hopper/issue-1-dasbes-voting→main. ⚠️ Das Dokploy-Compose deployt aktuell von diesem Feature-Branch. Nach dem Merge bitte die Compose-Branch in Dokploy aufmainumstellen, bevor der Feature-Branch gelöscht wird, sonst bricht der nächste Rebuild.mai/hopper/remove-dasbes-route→main(reine Hygiene, der Block ist schon tot). Diesites/dasbes.de/-SPA ist damit obsolet und kann separat entfernt werden.Issue bleibt offen (nur du schließt Issues).