役割 & スコープ
アーキテクチャから本番環境まで、完全に設計・構築しました。プラットフォームはHTTP Host-headerを介してドメイン名を自動検出し、ドメインごとに固有のオークションページを生成し、最初の入札からStripe決済とドメイン移管まで、オークションプロセス全体を管理します。
- Host-headerルーティングによる自動ドメイン検出と登録 — 1つのプラットフォームで無制限の数のドメインに対応。
- クーリング期間オークションシステム:新しい入札ごとにタイマーがリセットされ、スナイピングを防止し、最高入札者が落札します。
- クレジットカードとiDEALに対応したStripe統合。.nlドメインにはEUR、その他にはUSD。
- 完全な制御を備えた出品者ダッシュボード:ドメインごとの最低入札額、リザーブ価格、クーリング期間、ログイン要件。
- cronjobsによる自動請求、支払いリマインダー、ライフサイクル管理。
インパクト
- 出品者にとってセットアップ不要:DNSを設定すればプラットフォームが残りをすべて処理 — オークションページ、入札、決済が完全に自動化されています。
- スナイピングを防ぎ、真の市場価値を保証するクーリング期間を備えた公平なオークションシステム。
- 参入しやすい収益モデル:固定費なし、Stripeを通じた販売成功時に10%の手数料のみ。
- 信頼性の高い同時入札を実現するため、PostgreSQLと行レベルロックを用いてスケーラブルに構築。
Architectuur
Eén Node.js-codebase kan een onbeperkt aantal domeinen bedienen via HTTP Host-header routing, waardoor geen aparte uitrol per domein nodig is. PostgreSQL slaat biedingen, veilingstatus en gebruikersinformatie op, met row-level locking zodat gelijktijdige biedingen op dezelfde veiling geen race conditions veroorzaken. De logica van de afkoelperiode is geïntegreerd in de database: elk nieuw bod verlengt het sluitingstijdstip, en een cronjob controleert regelmatig welke veilingen kunnen worden afgerond. Stripe-webhooks met handtekeningverificatie zorgen ervoor dat de betalingsstatus betrouwbaar gesynchroniseerd blijft.
Modelkeuze
Bewust geen AI/LLM als fundament van dit platform. De veilingstructuur en betalingsprocessen vereisen voorspelbaarheid en controleerbaarheid, niet de flexibiliteit die een taalmodel biedt — dit systeem is deterministisch. De enige automatisering betreft regelgebaseerde facturatie en betalingsherinneringen die via cronjobs worden verzonden.
Kosten & latency
- Lage hostingkosten: Node.js met PostgreSQL op een enkele of kleine virtuele machine in plaats van serverless per domein.
- Stripe hanteert een standaardtarief per transactie, naast het eigen platformcommissie van 10% bij succesvolle verkoop.
- Row-level locking houdt de biedingslatency laag (meestal onder 100 ms), ook bij meerdere gelijktijdige biedingen op dezelfde veiling.
Lessons learned
De eerste veilingimplementatie had geen afkoelperiode en was daardoor kwetsbaar voor sniping — een bod in de laatste seconde. Het toevoegen van een cooling-period (elk nieuw bod verlengt de sluitingstijd) loste dit op. Host-header routing bleek achteraf cruciaal: nieuwe domeinen toevoegen vereist geen extra infrastructuur, alleen een DNS-wijziging bij de verkoper.
Concept — cijfers ter illustratie, nog te verifiëren tegen het daadwerkelijke project vóór publicatie.