No description
  • TypeScript 60.5%
  • HTML 17.9%
  • CSS 9.8%
  • JavaScript 9.1%
  • Shell 1.8%
  • Other 0.9%
Find a file
florian e6e2361bd2
All checks were successful
CI / Install, Lint, Test, Build (push) Successful in 21s
Merge pull request 'Configure Renovate' (#36) from renovate/configure into main
Reviewed-on: #36
2026-06-14 02:48:46 +02:00
.github/workflows Add GHCR-backed Portainer activation path (#35) 2026-03-26 11:36:13 +01:00
apps Add newsletter mail crawler slice (#34) 2026-03-26 11:19:31 +01:00
artifacts/readme-screenshots Implement delayed archive homepage states 2026-03-26 03:11:12 +01:00
docs Add GHCR-backed Portainer activation path (#35) 2026-03-26 11:36:13 +01:00
ops Add GHCR-backed Portainer activation path (#35) 2026-03-26 11:36:13 +01:00
packages Merge pull request #24 from beisel-it/clawteam/rauchbar-dev/data-domain 2026-03-26 07:49:11 +01:00
tools/ux-preview Implement delayed archive homepage states 2026-03-26 03:11:12 +01:00
.dockerignore Restore web Dockerfiles for Render sync 2026-03-25 19:15:41 +01:00
.env.deploy.example Add GHCR-backed Portainer activation path (#35) 2026-03-26 11:36:13 +01:00
.env.example Add deployment descriptor skeleton 2026-03-25 17:54:56 +01:00
.gitignore chore: initialize rauchbar monorepo scaffold 2026-03-25 14:59:48 +01:00
docker-compose.deploy.yml Bind Caddy only on public IPv4 2026-03-26 08:10:06 +01:00
docker-compose.portainer.yml Add GHCR-backed Portainer activation path (#35) 2026-03-26 11:36:13 +01:00
docker-compose.yml Align compose ports with site and admin runtimes 2026-03-25 19:22:16 +01:00
Dockerfile Implement initial docker container setup 2026-03-25 15:57:32 +01:00
package.json Add automatic doc asset refresh workflow 2026-03-25 19:23:48 +01:00
pnpm-lock.yaml Update lockfile for worker notifications dependency 2026-03-26 02:41:56 +01:00
pnpm-workspace.yaml chore: initialize rauchbar monorepo scaffold 2026-03-25 14:59:48 +01:00
README.md Add local-machine staging deployment pack 2026-03-26 08:01:34 +01:00
render.yaml Fix Render domains and readiness checks 2026-03-25 19:22:37 +01:00
renovate.json Add renovate.json 2026-06-14 00:48:21 +00:00
tsconfig.base.json chore: initialize rauchbar monorepo scaffold 2026-03-25 14:59:48 +01:00

Rauchbar

Rauchbar ist ein produktorientiertes Monorepo fuer einen kuratierten Deal-Service rund um Zigarrenangebote deutscher Online-Haendler. Das MVP kombiniert eine oeffentliche Site mit 24h Verzoegerung, einen mitgliederorientierten Signup- und Preference-Flow, eine interne Admin-Konsole fuer Freigaben und Versand, sowie Worker-Pipelines fuer Scraping, Matching und Benachrichtigungen.

Produktversprechen

  • kuratierter Wochen-Digest statt manueller Deal-Jagd
  • optionale Hot-Deal-Alerts per E-Mail oder WhatsApp
  • Mitglieder sehen relevante Angebote vor der oeffentlichen Freigabe
  • klare Trennung zwischen interner Freigabe, Mitgliederfenster und oeffentlicher Publikation

MVP im Ueberblick

Rauchbar fokussiert sich im ersten Schnitt auf drei Kernoberflaechen und gemeinsame Systembausteine:

  • apps/site: Homepage, Signup, Preference-Onboarding, Mitgliedereinstieg und zeitverzoegertes Deal-Archiv
  • apps/admin: Operations-Oberflaeche fuer Shops, Deals, Freigaben, Versand und Monitoring
  • apps/worker: Scraping, Normalisierung, Hot-Deal-Erkennung, Digest-Erstellung und Versand-Jobs
  • packages/deals-core: gemeinsame Domainmodelle und Regelgrundlagen
  • packages/design-system: visuelle Sprache fuer Site, Admin und Mailings
  • packages/notifications: Kanalabstraktionen fuer E-Mail und WhatsApp

Produkt in Bildern

Homepage und Mitgliederwert

Rauchbar Homepage mit Hero, Delayed-Deal-Preview und Mitgliedervorteil

Die Startseite erklaert das Produktversprechen, zeigt den 24h-Mitgliedervorsprung und macht den Signup-Einstieg sichtbar.

Admin und Operations

Admin-Ops-Board mit Shop-Health, Freigaben und Versandstatus

Das Ops-Board verdichtet Merchant-Monitoring, Freigabe-Queue und Dispatch-Kontrolle in einer internen Arbeitsansicht.

Personalisierte Mitgliedersurface

Mitgliederansicht mit Digest, Alerts und Praeferenzsteuerung

Die Mitgliedersurface zeigt, dass Rauchbar ueber eine Marketing-Seite hinausgeht und Digests, Alerts und Praeferenzpflege verbindet.

Lifecycle und Statuslogik

Lifecycle-State-Lab mit Deal-, Versand- und Sichtbarkeitszustaenden

Die Statusansicht macht die Trennung zwischen interner Freigabe, Mitgliederfenster und oeffentlicher Publikation nachvollziehbar.

Der Screenshot-Satz und die Reproduktionsschritte sind in docs/ux/readme-screenshot-plan.md dokumentiert.

Nutzer- und Surface-Modell

Das Produkt trennt klar zwischen drei Perspektiven:

  • Oeffentliche Besucher verstehen das Angebot schnell, sehen verzoegerte Deals und werden in den Signup gefuehrt.
  • Mitglieder erhalten relevante Digests, koennen Alerts steuern und ihre Praeferenzen leicht nachschaerfen.
  • Admin-Operatoren pruefen Deals, ueberwachen Shop- und Versandstatus und greifen bei Fehlern gezielt ein.

Leitprinzipien fuer alle Oberflaechen:

  • Relevanz vor Browsing-Tiefe
  • Mitglieder-Vorteil an jeder passenden Stelle sichtbar machen
  • Status, Versand und Freigaben immer explizit darstellen
  • eine gemeinsame Designsprache fuer Site, Admin und Notifications nutzen

Informationsarchitektur

Die aktuelle UX- und Design-Handoff definiert fuer das MVP unter anderem:

  • Site-Navigation: Deals entdecken, So funktioniert's, Mitglied werden, Login
  • Mitgliedsbereich: Fuer dich, Alerts, Praeferenzen, Konto
  • Admin-Navigation: Uebersicht, Shops, Deals, Freigaben, Versand
  • Homepage mit Hero, Cadence-Proof, "So funktioniert's", Delayed-Deal-Preview, Personalisierungsmodul, Digest/Alert-Erklaerung, FAQ und Final-CTA
  • konsistente Lifecycle- und Statussprache fuer Deals, Mitglieder, Shop-Health und Versand

Repository-Struktur

apps/
  admin/        Interne Operations-Oberflaeche
  site/         Oeffentliche Site und Mitgliedersurface
  worker/       Datenpipeline, Matching und Versand
packages/
  deals-core/   Domainmodelle, Regeln, Normalisierung
  design-system/ Design-Tokens und UI-/Mailing-Sprache
  notifications/ Benachrichtigungskanaele und Versandlogik
docs/
  architecture/ Systemaufbau und Leitplanken
  design/       Eingebettete Design-Guidance fuer Delivery
  product/      PRD und produktnahe Surface-Definitionen
  roadmap/      MVP-Mission und Streams
  ux/           IA, Wireframes, Journeys und State-Maps

Schluesseldokumente

Wenn du neu in das Repo kommst, starte hier:

App-spezifische Readmes bleiben die lokale Einstiegsebene fuer einzelne Workstreams:

Entwicklung

Das Monorepo nutzt pnpm Workspaces.

pnpm install
pnpm dev
pnpm build
pnpm lint
pnpm test
pnpm typecheck

Root-Skripte:

  • pnpm dev: startet aktuell die Site (@rauchbar/site)
  • pnpm build: baut alle Workspace-Pakete
  • pnpm lint: fuehrt Linting fuer alle Pakete aus
  • pnpm test: fuehrt alle Tests aus
  • pnpm typecheck: prueft alle TypeScript-Pakete

Lokale Demo

Fuer Walkthroughs gibt es einen expliziten localhost-only Pfad fuer die aktuelle site-App:

  1. Abhaengigkeiten installieren: npm run install:local
  2. Demo auf 127.0.0.1:4173 starten: npm run demo:dev
  3. Produktionsbuild pruefen: npm run demo:build

Die App bindet dabei bewusst nur an 127.0.0.1. Der detaillierte Ablauf steht in docs/demo/local-demo.md.

Delivery-Status

Fertig definierte Handoffs liegen fuer Produkt, UX, Admin-Surface und embedded Design vor. Die groessten verbleibenden Integrationsrisiken liegen aktuell bei:

  • Notification-Payloads und Template-Vertraegen
  • gemeinsamer Status- und Copy-Glossary fuer alle Oberflaechen

Nicht Teil des ersten Schnitts

  • Community-Features
  • nativer Mobile-App-Scope
  • Checkout oder In-App-Kauf
  • vollautomatische Preisprognosen

Docker Setup

Fuer die lokale Monorepo-Entwicklung liegt ein initiales Container-Setup im Repo:

  • Dockerfile baut eine gemeinsame Node-22-/pnpm-Basis fuer alle Apps
  • docker-compose.yml startet getrennte Services fuer site, admin und worker
  • persistente Volumes halten pnpm-Store und node_modules ausserhalb des Bind-Mounts

Beispiele:

docker compose up site
docker compose up admin worker
docker compose run --rm worker pnpm install

Die aktuellen App-Skripte sind noch Platzhalter. Das Compose-Setup ist deshalb als Bootstrap fuer die naechsten Implementierungsschritte gedacht, nicht als produktionsreifes Runtime-Layout.

Host Staging Deployment

Fuer den festen Staging-Host 65.21.2.149 liegen jetzt dedizierte Artefakte fuer einen lokalen Maschinen-Deploy vor:

  • docker-compose.deploy.yml
  • ops/caddy/Caddyfile
  • .env.deploy.example
  • docs/operations/local-machine-staging-runbook.md

Zielhostnamen:

  • staging.rauchbar.genussgesellschaft-neckartal.de
  • admin.rauchbar.genussgesellschaft-neckartal.de

UX Testing Preview

Fuer lokale UX-Reviews ohne kompletten App-Scaffold gibt es einen separaten Preview-Server:

  • pnpm ux:preview
  • pnpm ux:preview:host fuer Browserzugriff ueber 0.0.0.0:4173

Die Artefakte und Review-Ablauf sind in docs/ux/testing-setup.md dokumentiert.