5.4.0
Перший публічний релізПублічний сайт запускається: рушій комісій з повною деталізацією, каталог платіжних рейків з реальними лімітами, архітектура URL на основі коридорів і сторінки прозорості, які роблять усе це перевірним. Цей журнал починається тут, у реальну дату публікації.
Додано(21)
src/lib/pricing.ts
Рушій комісій з повною деталізацією. Мережева вартість стягується натурою в активі перед конвертацією, потім наша маржа та комісія рейку отримують окремі рядки. Бухгалтерський інваріант перевіряє кожну котирування, що валова сума мінус сума рядків точно дорівнює чистій, до меншої одиниці: якщо не сходиться, ми піднімаємо помилку та відмовляємося котирувати, а не пропускаємо приховану маржу.
src/lib/pricing.ts
Політика спреду опублікована та забезпечена кодом: 90 базисних пунктів базова, ще 35 на волатильний актив, ще 25 на бета-коридор, мінус 15, 30 або 45 базисних пунктів за трьома обсяговими рівнями. Жодних інших комісій з нашого боку не існує.
src/lib/pricing.ts
Зворотне введення: ви можете ввести суму, яку хочете ОТРИМАТИ, і необхідний депозит визначається бінарним пошуком. Фіксовані комісії роблять функцію нелінійною — алгебраїчна інверсія щоразу помилялася б на кілька центів.
src/lib/money.ts
Кожна сума грошей передається як ціле число менших одиниць (bigint), а кожен курс — як Decimal. Жодна сума не проходить через JavaScript float, де 0.1 + 0.2 не дорівнює 0.3.
src/lib/rates.ts
Свіжість курсу перевіряється перед кожною твердою котируванням. Після максимально допустимого віку джерела рушій видає помилку застарілого курсу та відмовляється котирувати. Подача застарілої ціни з кешу розглядається тут як фінансова помилка, а не продуктивності.
src/app/api/quote/route.ts
Публічна кінцева точка котирування. Введення, перевірене за схемою, відповідь без зберігання, повний детальний розбивка з середньоринковим курсом, ефективним курсом і загальним розривом у базисних пунктах. Порушення лімітів рейку повертаються в тілі відповіді, а не як помилка HTTP, з точним лімітом.
src/data/payout-rails.ts
Каталог методів виплат, що містить для кожного: валюту розрахунків, країни обслуговування, затримки p50 і p95, правила робочих днів і часу відсікання, мінімальні та максимальні суми в менших одиницях, реальні комісії та схему полів бенефіціара.
src/data/corridors.ts
Архітектура URL на основі коридорів. Багатокраїнний рейк дає одну сторінку на актив: SEPA ідентичний у Франції та Бельгії, дві сторінки говорили б одне й те саме. Локальний рейк — PIX, SPEI, M-Pesa, NIP, Interac — дає одну сторінку на країну, оскільки країна несе формат ідентифікатора, ліміти та податковий режим. Сира матриця з ~2200 комбінацій зменшується на порядок, і кожна сторінка, що залишилася, несе факти, які може нести лише вона.
src/data/corridors.ts
Хвилі запуску та ворота індексації. Коридор пропонується для індексації лише після того, як контент його хвилі фактично написаний; інші залишаються доступними та функціональними, але поза індексом. Ми не просимо пошукову систему індексувати сторінку, яку ще не написали.
src/data/assets.ts
Каталог активів із десятковими знаками базової одиниці, прийнятими мережами, мінімальним депозитом, нижче якого мережеві комісії з'їдають операцію, і тривалістю фіксації курсу — довшою для стейблкоїна, ніж для волатильного активу.
src/data/networks.ts
Каталог мереж із необхідною кількістю підтверджень, середнім часом блоку, шаблоном перевірки адреси та, для XRP, Stellar і TON, полем memo, пропуск якого втрачає кошти.
src/data/geo.ts
Географічні довідкові дані: відкриті країни, країни в підготовці та відмовлені країни з причиною — міжнародні санкції, обмежувальні заходи або неприйнятний ризик відмивання грошей. Причина публікується по кожній країні.
src/config/company.ts
Єдиний реєстр фактичних тверджень про компанію. Юридична назва, реєстрація, рік заснування, регуляторний статус, обсяги, відгуки: кожне значення або заповнене, або позначене як очікує — і очікуване значення ніколи не відображається. Сайт може стверджувати лише те, що обчислено з його власних даних.
src/components/JsonLd.tsx
Структуровані дані, які опускають кожне незаповнене поле. Жодна дата заснування, номер ліцензії чи загальний рейтинг не оголошуються пошуковим системам, поки вони не стануть реальними.
src/i18n/routing.ts
Префікс локалі для кожної мови, включно з французькою. Подача однієї сторінки за адресою «/» та «/fr/» завжди закінчується дублікатами; симетрія усуває всі особливі випадки в тегах hreflang і canonical.
src/app/[locale]/statut
Сторінка статусу послуг: один компонент для кожного рейку виплат і кожної відстежуваної мережі, точний опис того, що перевірятиме зонд, політика серйозності та шаблон звіту про інцидент. Жоден відсоток доступності не з'являється там, поки його не виміряно.
src/app/[locale]/docs
Публічна документація API: автентифікація, пагінація, ідемпотентність, каталог помилок і підписані вебхуки. Зразкові відповіді є реальними відповідями від кінцевої точки котирування, а не макетами.
src/app/[locale]/reclamations
Письмова процедура розгляду скарг: що відрізняє скаргу від запиту в підтримку, три рівні ескалації, терміни, яких ми дотримуємось, і що станеться, якщо відповідь вас не задовольнить.
src/app/[locale]/presse
Медіакіт: завантажувані логотипи, згенеровані з коду, палітра з точними значеннями, короткі та довгі описи, готові до цитування. Жодних згадок у пресі не перелічено через відсутність згадок, які можна цитувати.
src/app/[locale]/affiliation
Партнерська програма, що оплачується з фактично зібраної маржі, а не з валового обсягу: партнер не отримує вигоди від просування коридору, який коштує клієнту більше.
src/app/[locale]/plan-du-site
Карта сайту, згенерована з даних, з миттєвим фільтром пошуку. Кожна опублікована сторінка з'являється там: якщо сторінка існує і відсутня на цій карті, це дефект.
Безпека(3)
src/lib/rates.ts
Виробничий захист: детерміноване джерело курсу, яке використовується в розробці, не може запуститися у виробництві. Процес відмовляється запускатися, а не котирує заморожені ціни.
src/middleware.ts
Географічна відмова перед будь-яким рендером, з явним HTTP 451, а не 404: коли ми відмовляємо, ми пояснюємо чому. Відмова повторно перевіряється на сервері під час створення замовлення, оскільки IP-адреса сама по собі нічого не доводить.
next.config.ts
Заголовки безпеки на кожній відповіді: HSTS з попереднім завантаженням, заборона фреймінгу, блокування MIME-сніфінгу, обмежена політика реферера, ізоляція між джерелами та вимкнені дозволи на мікрофон, геолокацію та платежі.
Політика(5)
src/data/payout-rails.ts
Рейки збору — iDEAL, Bizum, BLIK, TWINT, Satispay, MB WAY, QRIS — оголошені недоступними з причиною, а не приховані. Вони дозволяють платити продавцю, а не отримувати кошти; кожен вказує на рейк, який ми використовуємо замість нього.
src/data/payout-rails.ts
Zelle позначено як постійно недоступний: його правила контрактно забороняють комерційні виплати третім особам. Жоден провайдер не може відповідно до законодавства просувати через нього кошти для нас, і сказати це краще, ніж давати людям надію.
src/data/payout-rails.ts
Рейки, які створені, але закриті, несуть точну регуляторну причину: утримання TDS та реєстрація FIU-IND для UPI, ліцензія MAS для PayNow, звітність SARB для Південної Африки, реєстрація AUSTRAC для PayID, ліцензований партнер для PromptPay. Ми воліємо назвати перешкоду, ніж оголошувати дату.
src/data/assets.ts
Monero є в каталозі, позначений як актив із підвищеною анонімністю і не пропонується. Європейське регулювання боротьби з відмиванням грошей вимагає від провайдерів виключити його з 10 липня 2027 року; ми показуємо його та пояснюємо, а не даємо йому тихо зникнути.
docs/CONVENTIONS.md
Застосовне редакційне правило: жоден рік заснування, жоден номер ліцензії, жоден обсяг оброблених операцій, жодна кількість клієнтів, жоден відгук і жоден логотип партнера не зашиті в сторінку. Зрілість має випливати з глибини написаного, а не з вигаданих доказів.