Alle Projekte

Case Study05

PinnDeals Business-Matching-Plattform

Reverse-Marktplatz für Expertengesuche, Geschäftspartnerschaften, Mitgründer und Unternehmensnachfolge

Business & MarktplatzPinnProject GmbH
PinnDeals Business-Matching-Plattform, Ansicht 1
Ansicht 01

Partner

PinnProject GmbH

Branche

Business & Marktplatz

Kerntechnologien

Next.js · Supabase · Stripe

Auf einen Blick

Für die PinnProject GmbH hat DuoByte PinnDeals neu aufgebaut: eine zweisprachige Business-Matching-Plattform, auf der Unternehmen, Gründer und Privatpersonen Gesuche statt Angebote veröffentlichen. Inserate, Expertenbörse, ein anonymer Echtzeit-Chat und ein gestuftes Abo-Modell mit Stripe laufen auf Next.js und Supabase. Die Plattform ist live und wird laufend weiterentwickelt.

Unsere Rolle: DuoByte hat die Plattform auf Grundlage der bestehenden Anwendung neu konzipiert und entwickelt und betreut Deployment und Weiterentwicklung.

Projektarbeit

Von der Anforderung zur belastbaren Lösung.

Wie das Projekt entstanden ist: vom Kontext und den Anforderungen über die Umsetzung bis zum heutigen Stand.

01

Ausgangslage

Gesuche statt Angebote: das Prinzip hinter PinnDeals

Die PinnProject GmbH betreibt mit PinnDeals einen Reverse-Marktplatz für Geschäftskontakte. Wer einen Steuerberater, einen Geschäftspartner, einen Mitgründer oder einen Käufer für sein Unternehmen sucht, vergleicht dort nicht endlos Angebote, sondern veröffentlicht ein Gesuch. Passende Anbieter und Interessenten melden sich dann direkt.

Entsprechend gemischt sind die Nutzer: Unternehmen und Selbstständige, Gründer mit einer Idee, Privatpersonen und Dienstleister vom Berater bis zum Programmierer. Viele Vorhaben sind vertraulich, etwa ein geplanter Unternehmensverkauf oder eine Nachfolge, die noch nicht öffentlich werden soll.

Ausgangspunkt war eine bestehende Anwendung auf Basis von React, Vite und Firebase. Für den Neuaufbau hat DuoByte deren Datenmodell, Seitenstruktur und Geschäftsregeln dokumentiert und daraus die Zielarchitektur auf Next.js und Supabase abgeleitet.

02

Herausforderung

Vertrauliche Kontakte, Kontingente und Abos sicher abbilden

Die Plattform muss vier sehr unterschiedliche Inseratstypen tragen. Ein Unternehmensverkauf braucht Angaben wie den zu verkaufenden Anteil, Kaufpreis, Umsatz und EBIT, eine Expertensuche dagegen Projektstart, Budget oder Stundensatz und die gesuchte Fachrichtung. Trotzdem sollen alle Inserate in einer gemeinsamen Übersicht durchsuchbar bleiben.

Hinzu kommt das Geschäftsmodell. Fünf Pakete von Standard (kostenlos) bis Partner legen fest, wie viele Inserate, Erstanschreiben, Service-Pakete und Blogbeiträge ein Konto nutzen darf und ob ein öffentliches Expertenprofil möglich ist. Diese Grenzen dürfen sich nicht im Browser umgehen lassen, und jede Zahlung, Kündigung oder Rückbuchung bei Stripe muss sich zuverlässig im Konto niederschlagen.

Am anspruchsvollsten ist die Anonymität. Wer anonym inseriert oder schreibt, darf weder über öffentliche Abfragen noch im Chat anhand interner Kennungen identifizierbar sein, und die Freigabe der eigenen Identität muss für jedes Gespräch einzeln steuerbar bleiben.

  • Zweisprachige Oberfläche in Deutsch und Englisch
  • Paketgrenzen, die serverseitig durchgesetzt werden
  • Anonymität bis auf die Ebene der Datenbankabfragen
  • Einwilligung, Kontolöschung und Aufbewahrung nach den Vorgaben der DSGVO
03

Lösung

Inserate, Expertenbörse und Chat in einem Konto

Nach der Registrierung erstellen Nutzer Inserate über eigene Formulare je Typ: Expertensuche, Geschäftspartnersuche, Mitgründersuche und Unternehmensverkauf, ganz oder teilweise. Die öffentliche Übersicht lässt sich nach Typ und Freitext filtern, Expertensuchen zusätzlich nach bis zu drei Fachrichtungen. Fotos werden schon im Browser verkleinert und in WebP umgewandelt, auch HEIC-Aufnahmen vom iPhone.

In der Expertenbörse präsentieren sich Anbieter mit Profil, Kategorien, Referenzen, Standorten, Kontaktpersonen und Service-Paketen. Die Suche über Hashtags beherrscht eine Und- wie eine Oder-Verknüpfung, und Profile höherer Pakete werden in der Ausspielung bevorzugt.

Kontakt entsteht über den Chat. Das erste Anschreiben eines Profils oder Inserats verbraucht einen Ping, danach läuft das Gespräch ohne weitere Kosten weiter. Nachrichten und Ungelesen-Zähler aktualisieren sich in Echtzeit, und Nachrichten aus höheren Paketen erscheinen im Posteingang weiter oben.

  • Anonymes Inserieren und Schreiben unter einem generierten Pseudonym
  • Identitätsfreigabe pro Gespräch, für beide Seiten getrennt
  • Gespräche beenden und wieder aufnehmen, ohne erneut einen Ping zu verbrauchen
  • Blogbereich für Fachbeiträge, die zugleich im Expertenprofil erscheinen
  • Paketwechsel mit anteiliger Verrechnung über das Stripe-Kundenportal
  • Kontolöschung im Self-Service, einschließlich aller Bilder und Inhalte
04

Umsetzung

Geschäftsregeln in PostgreSQL, Zahlungen über Stripe-Webhooks

Das Frontend basiert auf Next.js 15 mit App Router, React 19, TypeScript, Tailwind CSS 4 und next-intl. Datenbank, Anmeldung, Dateiablage und Echtzeitkanäle liefert Supabase. Die zentrale Entscheidung: Geschäftsregeln liegen nicht nur im Anwendungscode, sondern in PostgreSQL selbst.

Row Level Security ist auf allen Tabellen aktiv. Datenbankfunktionen ermitteln den Nutzer ausschließlich aus der Sitzung und nehmen nie eine Nutzer-ID als Parameter entgegen, sodass niemand Aktionen im Namen anderer auslösen kann. Pings werden in derselben Funktion atomar geprüft und verbraucht, die ein Gespräch eröffnet, und Trigger setzen die Paketgrenzen für Inserate, Service-Pakete und Blogbeiträge auch dann durch, wenn jemand die Oberfläche umgeht. Öffentliche Seiten lesen über eigene Views, die interne Eigentümerkennungen nicht herausgeben.

Stripe Checkout, Billing und das Kundenportal decken Abschluss, Verlängerung und Paketwechsel ab. Ein Webhook-Handler als Supabase Edge Function prüft jede Signatur, verarbeitet jedes Ereignis nur einmal und leitet das Paket aus dem tatsächlich bezahlten Preis ab. Auch individuell verhandelte Partner-Pakete werden nach der Zahlung automatisch freigeschaltet.

Weitere Edge Functions versenden Systemmails per SMTP und räumen die Dateiablage auf. Ein zeitgesteuerter Job weist kostenlose Konten nach drei Jahren Inaktivität auf die anstehende Löschung hin und löscht sie 30 Tage später. GA4, Meta Pixel und Google Ads werden erst nach Einwilligung geladen, und die Einwilligung wird versioniert in der Datenbank gespeichert.

Ausgeliefert wird die Anwendung als Docker-Image hinter Caddy mit automatischem HTTPS und Sicherheits-Headern. Getrennte GitHub-Actions-Pipelines für Entwicklung und Produktion beziehen die Konfiguration aus Doppler, deployen die Edge Functions mit und warten auf den Health-Check des neuen Containers. Im Code gelten feste Regeln für Dateigröße und Modularität, und Logs maskieren personenbezogene Daten.

05

Ergebnis

Eine Plattform im Live-Betrieb mit Regeln, die mitwachsen

PinnDeals ist live. Nutzer veröffentlichen Gesuche, finden Anbieter über die Expertenbörse und führen vertrauliche Gespräche, ohne ihre Identität vorab preiszugeben. Partner-Konditionen mit eigenem Preis und eigenen Kontingenten vergibt die PinnProject GmbH, ohne die Anwendung zu ändern.

Weil Kontingente, Sichtbarkeit und Anonymität in der Datenbank durchgesetzt werden, lassen sich neue Funktionen ergänzen, ohne diese Regeln jedes Mal neu absichern zu müssen. Die Plattform wird laufend weiterentwickelt; zuletzt kamen unter anderem einwilligungsbasiertes Conversion-Tracking und der automatisierte Partner-Abschluss hinzu.

Systemarchitektur

Die technische Basis, klar gegliedert.

Technologien wurden passend zur Aufgabe, zum Betriebsmodell und zur langfristigen Wartbarkeit kombiniert.

01

Frontend

Next.js 15React 19TypeScriptTailwind CSS 4next-intl
02

Backend

Next.js Server ActionsSupabase RPCSupabase Edge Functions
03

Datenbank

PostgreSQLRow Level SecurityDatabase Triggers
04

Cloud

Supabase AuthSupabase StorageSupabase Realtime
05

Zahlungsabwicklung

Stripe CheckoutStripe BillingCustomer PortalWebhooks
06

Integrationen

SMTPMeta PixelGoogle AnalyticsGoogle Ads
07

Infrastruktur

DockerCaddyGitHub ActionsDoppler

Weiter entdecken

Nächste Case Study

Poco Brass Vereinswebsite

Poco Brass Vereinswebsite

Ihr Projekt

Aus einer komplexen Aufgabe wird ein klarer nächster Schritt.

Erzählen Sie uns, was Ihr System leisten muss. Wir bringen Struktur in Anforderungen, Architektur und Umsetzung.

Projekt besprechen