5.4.0
Erste öffentliche VeröffentlichungDie öffentliche Website geht live: eine Gebühren-Engine mit vollständiger Aufschlüsselung, ein Auszahlungskanal-Katalog mit echten Limits, eine korridorbasierte URL-Architektur und die Transparenzseiten, die all dies überprüfbar machen. Dieses Protokoll beginnt hier, am tatsächlichen Veröffentlichungsdatum.
Hinzugefügt(21)
src/lib/pricing.ts
Gebühren-Engine mit vollständiger Aufschlüsselung. Die Netzkosten werden vor der Umrechnung in Form des Vermögenswerts abgezogen, dann erhalten unsere Marge und die Kanalgebühr jeweils eine eigene Zeile. Eine buchhalterische Invariante prüft bei jedem Angebot, dass Brutto minus Summe der Zeilen exakt dem Netto entspricht, bis auf die kleinste Einheit: Wenn es nicht aufgeht, melden wir einen Fehler und verweigern das Angebot, anstatt eine versteckte Marge durchzulassen.
src/lib/pricing.ts
Spread-Richtlinie veröffentlicht und vom Code durchgesetzt: 90 Basispunkte Basis, 35 mehr bei einem volatilen Vermögenswert, 25 mehr bei einem Beta-Korridor, minus 15, 30 oder 45 Basispunkte in drei Volumenstufen. Es gibt keine anderen Gebühren auf unserer Seite.
src/lib/pricing.ts
Umgekehrte Eingabe: Sie können eingeben, was Sie ERHALTEN möchten, und die erforderliche Einzahlung wird per binärer Suche ermittelt. Feste Gebühren machen die Funktion nichtlinear – eine algebraische Umkehrung wäre jedes Mal um ein paar Cent daneben.
src/lib/money.ts
Jeder Geldbetrag wird als Ganzzahl von Untereinheiten (BigInt) übertragen und jeder Kurs als Decimal. Kein Betrag durchläuft einen JavaScript-Float, bei dem 0,1 + 0,2 nicht 0,3 ist.
src/lib/rates.ts
Die Aktualität des Kurses wird vor jedem verbindlichen Angebot geprüft. Überschreitet die Quelle das maximal zulässige Alter, löst die Engine einen Stale-Rate-Fehler aus und verweigert das Angebot. Die Auslieferung eines veralteten Preises aus einem Cache wird hier als finanzieller Fehler behandelt, nicht als Leistungsproblem.
src/app/api/quote/route.ts
Öffentlicher Angebots-Endpunkt. Schema-validierte Eingabe, No-store-Antwort, vollständige zeilenweise Aufschlüsselung mit dem Mittelkurs, dem effektiven Kurs und der Gesamtdifferenz in Basispunkten. Verstöße gegen Kanal-Limits werden im Antworttext zurückgegeben und nicht als HTTP-Fehler, mit dem genauen Limit.
src/data/payout-rails.ts
Auszahlungskanal-Katalog mit für jeden Kanal: Abwicklungswährung, bediente Länder, p50- und p95-Verzögerungen, Regeln zu Werktagen und Annahmeschluss, Mindest- und Höchstbeträge in Untereinheiten, echte Gebühren und das Schema der Begünstigtenfelder.
src/data/corridors.ts
Korridorbasierte URL-Architektur. Ein länderübergreifender Kanal ergibt eine einzige Seite pro Vermögenswert: SEPA ist in Frankreich und Belgien identisch, zwei Seiten würden dasselbe sagen. Ein lokaler Kanal – PIX, SPEI, M-Pesa, NIP, Interac – ergibt eine Seite pro Land, weil das Land das Identifikatorformat, die Limits und die steuerliche Behandlung bestimmt. Die rohe Matrix von ~2.200 Kombinationen schrumpft um eine Größenordnung, und jede verbleibende Seite enthält nur Fakten, die nur sie enthalten kann.
src/data/corridors.ts
Einführungswellen und ein Indexierungs-Gate. Ein Korridor wird erst zum Indexieren angeboten, wenn der Inhalt seiner Welle tatsächlich geschrieben ist; die anderen bleiben erreichbar und funktionsfähig, aber außerhalb des Index. Wir bitten eine Suchmaschine nicht, eine Seite zu indexieren, die wir noch nicht geschrieben haben.
src/data/assets.ts
Vermögenswertkatalog mit Dezimalstellen der Basiseinheit, akzeptierten Netzwerken, der Mindesteinzahlung, unter der Netzwerkgebühren die Operation auffressen, und der Dauer der Kursbindung – länger bei einem Stablecoin als bei einem volatilen Vermögenswert.
src/data/networks.ts
Netzwerkkatalog mit der erforderlichen Bestätigungsanzahl, durchschnittlicher Blockzeit, dem Adressvalidierungsmuster und für XRP, Stellar und TON das Memo-Feld, dessen Weglassen die Gelder verliert.
src/data/geo.ts
Geografische Referenzdaten: offene Länder, Länder in Vorbereitung und abgelehnte Länder mit dem Grund – internationale Sanktionen, restriktive Maßnahmen oder ein inakzeptables Geldwäscherisiko. Der Grund wird länderspezifisch veröffentlicht.
src/config/company.ts
Einziges Register sachlicher Behauptungen über das Unternehmen. Rechtsname, Registrierung, Gründungsjahr, regulatorischer Status, Volumina, Bewertungen: Jeder Wert ist entweder ausgefüllt oder als ausstehend markiert – und ein ausstehender Wert wird nie angezeigt. Die Website darf nur behaupten, was aus ihren eigenen Daten berechnet wird.
src/components/JsonLd.tsx
Strukturierte Daten, die jedes nicht ausgefüllte Feld weglassen. Kein Gründungsdatum, keine Lizenznummer und keine Gesamtbewertung werden Suchmaschinen gemeldet, bis sie real sind.
src/i18n/routing.ts
Gebietsschema-Präfix auf jeder Sprache, einschließlich Französisch. Dieselbe Seite unter „/“ und „/fr/“ auszuliefern, endet immer in Duplikaten; Symmetrie entfernt jeden Sonderfall in hreflang- und canonical-Tags.
src/app/[locale]/statut
Dienststatusseite: eine Komponente pro Auszahlungskanal und pro überwachtem Netzwerk, die genaue Beschreibung dessen, was die Prüfung prüfen wird, die Schweregradrichtlinie und die Vorlage für den Vorfallbericht. Kein Verfügbarkeitsprozentsatz erscheint dort, bis er gemessen ist.
src/app/[locale]/docs
Öffentliche API-Dokumentation: Authentifizierung, Paginierung, Idempotenz, Fehlerkatalog und signierte Webhooks. Die Beispielantworten sind echte Antworten vom Angebots-Endpunkt, keine Attrappen.
src/app/[locale]/reclamations
Schriftliches Beschwerdeverfahren: Was eine Beschwerde von einer Supportanfrage unterscheidet, die drei Eskalationsstufen, die Fristen, an die wir uns halten, und was passiert, wenn die Antwort Sie nicht zufriedenstellt.
src/app/[locale]/presse
Medienkit: herunterladbare Logos, die aus Code generiert werden, Palette mit exakten Werten, kurze und lange Beschreibungen, die zum Zitieren bereit sind. Es wird keine Presseberichterstattung aufgeführt, da es keine zu zitieren gibt.
src/app/[locale]/affiliation
Partnerprogramm, das auf tatsächlich erhobener Marge basiert, niemals auf Bruttovolumen: Ein Partner gewinnt nichts, wenn er einen Korridor bewirbt, der den Kunden mehr kostet.
src/app/[locale]/plan-du-site
Aus den Daten generierte Sitemap mit einem Sofortsuchfilter. Jede veröffentlichte Seite erscheint dort: Wenn eine Seite existiert und in dieser Karte fehlt, ist das ein Fehler.
Sicherheit(3)
src/lib/rates.ts
Produktionsschutz: Die deterministische Kursquelle, die in der Entwicklung verwendet wird, kann in der Produktion nicht starten. Der Prozess weigert sich zu starten, anstatt eingefrorene Preise anzubieten.
src/middleware.ts
Geografische Ablehnung vor jedem Rendern, mit einem expliziten HTTP 451 statt einer 404: Wenn wir ablehnen, sagen wir warum. Die Ablehnung wird bei der Auftragserstellung serverseitig erneut geprüft, da eine IP-Adresse allein nichts beweist.
next.config.ts
Sicherheitsheader auf jeder Antwort: HSTS mit Preload, Framing verweigert, MIME-Sniffing blockiert, eingeschränkte Referrer-Richtlinie, Cross-Origin-Isolation und Mikrofon-, Geolokalisierungs- und Zahlungsberechtigungen deaktiviert.
Richtlinie(5)
src/data/payout-rails.ts
Einzugskanäle – iDEAL, Bizum, BLIK, TWINT, Satispay, MB WAY, QRIS – werden als nicht verfügbar mit ihrem Grund deklariert, anstatt versteckt zu werden. Sie ermöglichen es Ihnen, einen Händler zu bezahlen, nicht Gelder zu empfangen; jeder verweist auf den Kanal, den wir stattdessen verwenden.
src/data/payout-rails.ts
Zelle ist als dauerhaft nicht verfügbar markiert: Seine Regeln verbieten vertraglich die kommerzielle Auszahlung durch Dritte. Kein Anbieter kann für uns konform Gelder darüber überweisen, und dies zu sagen ist besser, als den Leuten Hoffnung zu machen.
src/data/payout-rails.ts
Kanäle, die gebaut, aber geschlossen sind, tragen ihren genauen regulatorischen Grund: TDS-Quellensteuer und FIU-IND-Registrierung für UPI, eine MAS-Lizenz für PayNow, SARB-Meldepflicht für Südafrika, AUSTRAC-Registrierung für PayID, ein lizenzierter Partner für PromptPay. Wir benennen lieber das Hindernis, als ein Datum anzukündigen.
src/data/assets.ts
Monero ist im Katalog, gekennzeichnet als Vermögenswert mit erhöhter Anonymität und nicht angeboten. Die europäische Geldwäschebekämpfungsverordnung verlangt von Anbietern, es ab dem 10. Juli 2027 zu delisten; wir zeigen es und erklären es, anstatt es stillschweigend verschwinden zu lassen.
docs/CONVENTIONS.md
Durchsetzbare redaktionelle Regel: Kein Gründungsjahr, keine Lizenznummer, kein verarbeitetes Volumen, keine Kundenzahl, kein Erfahrungsbericht und kein Partnerlogo ist fest in einer Seite kodiert. Reife muss aus der Tiefe des Geschriebenen kommen, niemals aus erfundenen Beweisen.