5.4.0
Prima release pubblicaIl sito pubblico va online: un motore di commissioni con una ripartizione completa, un catalogo di metodi di pagamento con limiti reali, un'architettura URL basata su corridoi e le pagine di trasparenza che rendono tutto verificabile. Questo log inizia qui, nella data di pubblicazione reale.
Aggiunto(21)
src/lib/pricing.ts
Motore di commissioni con ripartizione completa. Il costo di rete è prelevato in natura sull'asset prima della conversione, poi il nostro margine e la commissione del metodo di pagamento hanno ciascuno la propria riga. Un invariante contabile verifica su ogni preventivo che il lordo meno la somma delle righe sia esattamente uguale al netto, fino all'unità minima: se non torna, solleviamo un errore e rifiutiamo di quotare piuttosto che lasciar passare un margine nascosto.
src/lib/pricing.ts
Policy di spread pubblicata e applicata dal codice: 90 punti base di base, 35 in più su un asset volatile, 25 in più su un corridoio beta, meno 15, 30 o 45 punti base su tre livelli di volume. Nessun'altra commissione esiste dalla nostra parte.
src/lib/pricing.ts
Input inverso: puoi digitare ciò che vuoi RICEVERE e il deposito richiesto viene risolto con ricerca binaria. Le commissioni fisse rendono la funzione non lineare: un'inversione algebrica sbaglierebbe di qualche centesimo ogni volta.
src/lib/money.ts
Ogni importo di denaro viaggia come intero di unità minime (bigint) e ogni tasso come Decimal. Nessun importo passa attraverso un float JavaScript, dove 0.1 + 0.2 non è 0.3.
src/lib/rates.ts
La freschezza del tasso viene verificata prima di ogni preventivo fermo. Oltre l'età massima tollerata dalla fonte, il motore solleva un errore di tasso obsoleto e rifiuta di quotare. Servire un prezzo obsoleto da una cache è trattato qui come un bug finanziario, non di performance.
src/app/api/quote/route.ts
Endpoint pubblico di preventivo. Input validato da schema, risposta no-store, ripartizione completa riga per riga con il tasso di mercato medio, il tasso effettivo e il divario totale in punti base. Le violazioni dei limiti del metodo di pagamento sono restituite nel corpo della risposta piuttosto che come errore HTTP, con il limite esatto.
src/data/payout-rails.ts
Catalogo dei metodi di pagamento che riporta, per ciascuno, la valuta di regolamento, i paesi serviti, i ritardi p50 e p95, le regole sui giorni lavorativi e sui cut-off, gli importi minimi e massimi in unità minime, le commissioni reali e lo schema dei campi del beneficiario.
src/data/corridors.ts
Architettura URL basata su corridoi. Un metodo di pagamento multi-paese produce una singola pagina per asset: SEPA è identico in Francia e Belgio, due pagine direbbero la stessa cosa. Un metodo locale — PIX, SPEI, M-Pesa, NIP, Interac — produce una pagina per paese, perché il paese porta il formato dell'identificatore, i limiti e il trattamento fiscale. La matrice grezza di ~2.200 combinazioni si riduce di un ordine di grandezza, e ogni pagina sopravvissuta porta fatti che solo lei può portare.
src/data/corridors.ts
Ondate di lancio e un gate di indicizzazione. Un corridoio è offerto per l'indicizzazione solo quando il contenuto della sua ondata è effettivamente scritto; gli altri restano raggiungibili e funzionali ma fuori dall'indice. Non chiediamo a un motore di ricerca di indicizzare una pagina che non abbiamo ancora scritto.
src/data/assets.ts
Catalogo degli asset con decimali dell'unità base, reti accettate, il deposito minimo sotto il quale le commissioni di rete mangiano l'operazione e la durata del blocco del tasso — più lunga su una stablecoin che su un asset volatile.
src/data/networks.ts
Catalogo delle reti con il numero di conferme richiesto, il tempo medio di blocco, il pattern di validazione dell'indirizzo e, per XRP, Stellar e TON, il campo memo la cui omissione fa perdere i fondi.
src/data/geo.ts
Dati geografici di riferimento: paesi aperti, paesi in preparazione e paesi rifiutati con il motivo — sanzioni internazionali, misure restrittive o un rischio di riciclaggio inaccettabile. Il motivo è pubblicato paese per paese.
src/config/company.ts
Registro unico delle affermazioni fattuali sull'azienda. Ragione sociale, registrazione, anno di costituzione, stato normativo, volumi, recensioni: ogni valore è compilato o contrassegnato come in sospeso — e un valore in sospeso non viene mai visualizzato. Il sito può affermare solo ciò che è calcolato dai propri dati.
src/components/JsonLd.tsx
Dati strutturati che omettono ogni campo non compilato. Nessuna data di fondazione, nessun numero di licenza e nessuna valutazione aggregata sono dichiarati ai motori di ricerca finché non sono reali.
src/i18n/routing.ts
Prefisso locale su ogni lingua, francese incluso. Servire la stessa pagina su "/" e "/fr/" finisce sempre in duplicati; la simmetria rimuove ogni caso speciale nei tag hreflang e canonical.
src/app/[locale]/statut
Pagina di stato del servizio: un componente per ogni metodo di pagamento e per ogni rete monitorata, la descrizione esatta di cosa controllerà la sonda, la policy di gravità e il modello di report degli incidenti. Nessuna percentuale di disponibilità appare lì finché non è misurata.
src/app/[locale]/docs
Documentazione API pubblica: autenticazione, paginazione, idempotenza, catalogo errori e webhook firmati. Le risposte di esempio sono risposte reali dell'endpoint di preventivo, non mock-up.
src/app/[locale]/reclamations
Procedura scritta per i reclami: cosa distingue un reclamo da una richiesta di supporto, i tre livelli di escalation, i tempi che rispettiamo e cosa succede se la risposta non ti soddisfa.
src/app/[locale]/presse
Media kit: loghi scaricabili generati dal codice, palette con valori esatti, descrizioni brevi e lunghe pronte da citare. Nessuna copertura stampa è elencata, per mancanza di copertura da citare.
src/app/[locale]/affiliation
Programma di affiliazione pagato sul margine effettivamente incassato, mai sul volume lordo: un partner non guadagna nulla spingendo un corridoio che costa di più al cliente.
src/app/[locale]/plan-du-site
Mappa del sito generata dai dati, con un filtro di ricerca istantaneo. Ogni pagina pubblicata appare lì: se una pagina esiste e manca da questa mappa, è un difetto.
Sicurezza(3)
src/lib/rates.ts
Protezione di produzione: la fonte di tasso deterministica usata in sviluppo non può avviarsi in produzione. Il processo rifiuta di partire piuttosto che quotare prezzi congelati.
src/middleware.ts
Rifiuto geografico prima di qualsiasi render, con un HTTP 451 esplicito piuttosto che un 404: quando rifiutiamo, diciamo perché. Il rifiuto viene ricontrollato lato server alla creazione dell'ordine, poiché un indirizzo IP da solo non prova nulla.
next.config.ts
Header di sicurezza su ogni risposta: HSTS con preload, framing negato, MIME sniffing bloccato, referrer policy ristretta, isolamento cross-origin e permessi di microfono, geolocalizzazione e pagamento disattivati.
Policy(5)
src/data/payout-rails.ts
I metodi di pagamento per la raccolta — iDEAL, Bizum, BLIK, TWINT, Satispay, MB WAY, QRIS — sono dichiarati non disponibili con il loro motivo invece di essere nascosti. Permettono di pagare un commerciante, non di ricevere fondi; ciascuno indica il metodo che usiamo al suo posto.
src/data/payout-rails.ts
Zelle è contrassegnato come permanentemente non disponibile: le sue regole vietano contrattualmente l'erogazione commerciale a terzi. Nessun fornitore può spingere fondi attraverso di esso in modo conforme per noi, e dirlo è meglio che lasciare sperare la gente.
src/data/payout-rails.ts
I metodi di pagamento costruiti ma chiusi portano il loro motivo normativo esatto: ritenuta TDS e registrazione FIU-IND per UPI, licenza MAS per PayNow, segnalazione SARB per il Sudafrica, registrazione AUSTRAC per PayID, un partner autorizzato per PromptPay. Preferiamo nominare l'ostacolo piuttosto che annunciare una data.
src/data/assets.ts
Monero è nel catalogo, contrassegnato come asset a anonimato potenziato e non offerto. La normativa europea antiriciclaggio richiede ai fornitori di delistarlo dal 10 luglio 2027; lo mostriamo e lo spieghiamo piuttosto che farlo sparire silenziosamente.
docs/CONVENTIONS.md
Regola editoriale applicabile: nessun anno di fondazione, nessun numero di licenza, nessun volume elaborato, nessun numero di clienti, nessuna testimonianza e nessun logo di partner è codificato in una pagina. La maturità deve derivare dalla profondità di ciò che è scritto, mai da prove inventate.