Freeport — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Freeport (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Freeport — a peer-to-peer marketplace on Nostr</title> <meta name="description" content="Freeport is a decentralized peer-to-peer marketplace for rides, services and goods. No middleman, no commission, no account — your keys, your price." /> <meta name="theme-color" content="#06080c" /> <link rel="icon" type="image/png" href="favicon.png" /> <meta property="og:title" content="Freeport — peer-to-peer marketplace on Nostr" /> <meta property="og:description" content="Rides, services & goods, directly between people. No middleman, no commission, your price." /> <meta property="og:image" content="icon.png" /> <meta property="og:type" content="website" /> <style> :root{ --bg:#06080c; --bg2:#0b0f16; --card:#11161f; --border:#1c2532; --text:#e7ecf3; --text2:#aab4c2; --text3:#7c8796; --accent:#3b82f6; --accent2:#60a5fa; --green:#10b981; } *{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;background:var(--bg);color:var(--text); font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; -webkit-font-smoothing:antialiased;} a{color:var(--accent2);text-decoration:none} a:hover{text-decoration:underline} .wrap{max-width:1040px;margin:0 auto;padding:0 22px} .btn{display:inline-block;padding:13px 26px;border-radius:12px;font-weight:700;font-size:16px;border:1px solid transparent} .btn-primary{background:var(--accent);color:#fff} .btn-primary:hover{background:#2f6fe0;text-decoration:none} .btn-ghost{background:transparent;color:var(--text);border-color:var(--border)} .btn-ghost:hover{border-color:var(--text3);text-decoration:none} .btn-appstore{background:#000;color:#fff;border-color:#2b2b2b} .btn-appstore:hover{background:#161616;text-decoration:none}
/ Language switch / .langbar{position:absolute;top:16px;right:22px;font-size:14px;color:var(--text3);z-index:5} .langbar a{color:var(--text3);padding:0 6px} .langbar a.on{color:var(--text);font-weight:700}
/ Hero / header{position:relative;padding:64px 0 40px;text-align:center;background: radial-gradient(1100px 460px at 50% -120px,rgba(59,130,246,.18),transparent 70%);} .logo{width:92px;height:92px;border-radius:22px;box-shadow:0 12px 40px rgba(59,130,246,.35)} h1{font-size:clamp(34px,6vw,56px);line-height:1.05;margin:22px 0 10px;letter-spacing:-.02em;font-weight:800} .tag{font-size:clamp(17px,2.4vw,21px);color:var(--text2);max-width:640px;margin:0 auto 28px} .cta{display:flex;gap:14px;justify-content:center;flex-wrap:wrap} .soon{display:block;margin-top:16px;color:var(--text3);font-size:13.5px}
/ Sections / section{padding:54px 0} h2{font-size:clamp(24px,3.4vw,32px);margin:0 0 8px;letter-spacing:-.01em} .lead{color:var(--text2);margin:0 0 34px;max-width:680px}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px} @media(max-width:760px){.grid{grid-template-columns:1fr}} .feat{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:22px} .feat .ic{font-size:24px;margin-bottom:10px} .feat h3{margin:0 0 6px;font-size:17.5px} .feat p{margin:0;color:var(--text2);font-size:15px}
/ Steps / .steps{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;counter-reset:s} @media(max-width:760px){.steps{grid-template-columns:1fr}} .step{position:relative;background:var(--bg2);border:1px solid var(--border);border-radius:16px;padding:24px 22px 22px} .step::before{counter-increment:s;content:counter(s);display:inline-grid;place-items:center; width:34px;height:34px;border-radius:10px;background:var(--accent);color:#fff;font-weight:800;margin-bottom:12px} .step h3{margin:0 0 6px;font-size:17.5px} .step p{margin:0;color:var(--text2);font-size:15px}
/ Whitepaper band / .paper{background:var(--bg2);border-top:1px solid var(--border);border-bottom:1px solid var(--border);text-align:center} .paper .lead{margin-left:auto;margin-right:auto}
/ Showcase / .shots{display:flex;gap:26px;justify-content:center;flex-wrap:wrap;margin-top:8px} .shots img{width:248px;border-radius:26px;border:1px solid var(--border); box-shadow:0 24px 60px rgba(0,0,0,.55)}
/ Footer / footer{border-top:1px solid var(--border);padding:40px 0 56px;text-align:center;color:var(--text3)} footer .links{margin-bottom:16px;display:flex;gap:22px;justify-content:center;flex-wrap:wrap} footer .support{color:var(--text2);font-size:15px;margin:0 0 6px} footer .support a{font-weight:700} footer .copy{font-size:13px;margin-top:10px} .pill{display:inline-block;font-size:12.5px;color:var(--green);border:1px solid rgba(16,185,129,.4); border-radius:999px;padding:3px 11px;margin-bottom:18px;background:rgba(16,185,129,.08)} </style> </head> <body>
<div class="langbar"> <a href="?lang=en" data-lang-en>EN</a><span>·</span><a href="?lang=vi" data-lang-vi>VI</a> </div>
<header> <div class="wrap"> <img class="logo" src="icon.png" alt="Freeport" /> <h1 data-i18n="h1">The marketplace with no middleman.</h1> <p class="tag" data-i18n="tag">Freeport is a decentralized, peer-to-peer marketplace for rides, services and goods — built on Nostr. No company in the middle, no commission, no account. Your keys, your price.</p> <div class="cta"> <a class="btn btn-appstore" href="https://apps.apple.com/us/app/freeport-p2p-marketplace/id6781200901" target="_blank" rel="noopener" data-i18n="cta_ios"> Download on the App Store</a> <a class="btn btn-primary" href="https://freeport.trinh.uk" data-i18n="cta_open">Open the web app</a> <a class="btn btn-ghost" href="#how" data-i18n="cta_how">How it works</a> <span class="soon" data-i18n="soon">🤖 Android app coming soon</span> </div> </div> </header>
<section> <div class="wrap"> <h2 data-i18n="why_h">Why Freeport</h2> <p class="lead" data-i18n="why_lead">A real peer-to-peer network — not another platform taking a cut and holding your data.</p> <div class="grid"> <div class="feat"><div class="ic">🤝</div><h3 data-i18n="f1_h">No middleman</h3><p data-i18n="f1_p">Deal directly with the other person and agree your own price. No platform fee, no surge pricing.</p></div> <div class="feat"><div class="ic">🔑</div><h3 data-i18n="f2_h">No sign-up</h3><p data-i18n="f2_p">Your identity is a secure key created on your device — no email, no phone-number account, no password.</p></div> <div class="feat"><div class="ic">💸</div><h3 data-i18n="f3_h">Your price</h3><p data-i18n="f3_p">Negotiate openly with a built-in estimator. Zero commission means more stays with you.</p></div> <div class="feat"><div class="ic">🔒</div><h3 data-i18n="f4_h">Private by design</h3><p data-i18n="f4_p">Messages are end-to-end encrypted. Listings carry only a coarse, neighborhood-level location — never your exact spot.</p></div> <div class="feat"><div class="ic">🌐</div><h3 data-i18n="f5_h">Built on Nostr</h3><p data-i18n="f5_p">Runs on an open protocol, not a private server — so no single company can shut it down, censor it, or sell your data.</p></div> <div class="feat"><div class="ic">⭐</div><h3 data-i18n="f6_h">Earn reputation</h3><p data-i18n="f6_p">A transparent, peer-rated karma system builds trust between strangers, with no central authority.</p></div> </div> </div> </section>
<section id="how" style="background:var(--bg2);border-top:1px solid var(--border);border-bottom:1px solid var(--border)"> <div class="wrap"> <h2 data-i18n="how_h">How it works</h2> <p class="lead" data-i18n="how_lead">Post or browse, negotiate, done — all between you and the other party.</p> <div class="steps"> <div class="step"><h3 data-i18n="s1_h">Post or browse</h3><p data-i18n="s1_p">Request a ride or service, or browse what people nearby are offering.</p></div> <div class="step"><h3 data-i18n="s2_h">Negotiate</h3><p data-i18n="s2_p">Offers and counter-offers go back and forth privately until you both agree.</p></div> <div class="step"><h3 data-i18n="s3_h">Make the deal</h3><p data-i18n="s3_p">Confirm, swap contact details over an encrypted message, and meet up.</p></div> </div> </div> </section>
<section class="paper"> <div class="wrap"> <h2 data-i18n="wp_h">Read the whitepaper</h2> <p class="lead" data-i18n="wp_lead">The full protocol: signed intents, encrypted negotiation, co-signed deal receipts, and reputation as a subjective quantity that makes fake identities weightless.</p> <a class="btn btn-primary" id="wp-link" href="whitepaper.pdf" target="_blank" rel="noopener" data-i18n="wp_btn">Open the whitepaper (PDF)</a> </div> </section>
<section> <div class="wrap" style="text-align:center"> <span class="pill" data-i18n="live">Live now on iOS & the web</span> <h2 data-i18n="see_h">See it in action</h2> <p class="lead" style="margin-left:auto;margin-right:auto" data-i18n="see_lead">Request a ride, set your price, and negotiate directly — right from your browser.</p> <div class="shots"> <img src="shot-request.png" alt="Posting a ride request in Freeport" /> <img src="shot-deals.png" alt="A passenger's requests and a confirmed deal" /> </div> </div> </section>
<footer> <div class="wrap"> <div class="links"> <a href="https://apps.apple.com/us/app/freeport-p2p-marketplace/id6781200901" target="_blank" rel="noopener" data-i18n="ft_ios">iOS app</a> <a href="https://freeport.trinh.uk" data-i18n="ft_app">Web app</a> <a id="wp-foot" href="whitepaper.pdf" target="_blank" rel="noopener" data-i18n="ft_wp">Whitepaper</a> <a href="https://freeport.trinh.uk/privacy" data-i18n="ft_privacy">Privacy Policy</a> <a href="#how" data-i18n="ft_how">How it works</a> </div> <p class="support" data-i18n-html="ft_support">Support & questions: <a href="mailto:[email protected]">[email protected]</a></p> <p class="copy" data-i18n="ft_copy">© Phil Trinh · Freeport — a peer-to-peer marketplace on Nostr</p> </div> </footer>
<script> const I18N = { vi: { h1: "Chợ không có trung gian.", tag: "Freeport là một chợ ngang hàng, phi tập trung cho xe cộ, dịch vụ và hàng hóa — xây trên Nostr. Không công ty đứng giữa, không hoa hồng, không tài khoản. Khóa của bạn, giá của bạn.", cta_ios: " Tải trên App Store", cta_open: "Mở ứng dụng web", cta_how: "Cách hoạt động", soon: "🤖 Ứng dụng Android sắp ra mắt", why_h: "Vì sao chọn Freeport", why_lead: "Một mạng ngang hàng thực sự — không phải thêm một nền tảng ăn phần trăm và giữ dữ liệu của bạn.", f1_h: "Không trung gian", f1_p: "Giao dịch trực tiếp với người kia và tự thỏa thuận giá. Không phí nền tảng, không tăng giá giờ cao điểm.", f2_h: "Không cần đăng ký", f2_p: "Danh tính của bạn là một khóa an toàn tạo ngay trên thiết bị — không email, không tài khoản theo số điện thoại, không mật khẩu.", f3_h: "Giá của bạn", f3_p: "Thương lượng công khai với công cụ ước tính tích hợp. Không hoa hồng nghĩa là bạn giữ lại nhiều hơn.", f4_h: "Riêng tư từ thiết kế", f4_p: "Tin nhắn được mã hóa đầu-cuối. Bài đăng chỉ kèm vị trí thô ở mức khu phố — không bao giờ là điểm chính xác của bạn.", f5_h: "Xây trên Nostr", f5_p: "Chạy trên một giao thức mở, không phải máy chủ riêng — nên không công ty nào có thể đóng cửa, kiểm duyệt hay bán dữ liệu của bạn.", f6_h: "Tích lũy uy tín", f6_p: "Hệ thống karma minh bạch do người dùng đánh giá xây dựng niềm tin giữa người lạ, không cần cơ quan trung tâm.", how_h: "Cách hoạt động", how_lead: "Đăng hoặc duyệt, thương lượng, xong — tất cả chỉ giữa bạn và bên kia.", s1_h: "Đăng hoặc duyệt", s1_p: "Yêu cầu một chuyến xe hay dịch vụ, hoặc duyệt những gì người gần bạn đang chào.", s2_h: "Thương lượng", s2_p: "Đề nghị và đối-đề nghị qua lại riêng tư cho đến khi cả hai đồng ý.", s3_h: "Chốt giao dịch", s3_p: "Xác nhận, trao đổi thông tin liên hệ qua tin nhắn mã hóa, rồi gặp nhau.", wp_h: "Đọc whitepaper", wp_lead: "Toàn bộ giao thức: ý định đã ký, thương lượng mã hóa, biên nhận giao dịch đồng ký, và uy tín như một đại lượng chủ quan khiến danh tính giả trở nên vô trọng lượng.", wp_btn: "Mở whitepaper (PDF)", live: "Đã có trên iOS & web", see_h: "Xem thử", see_lead: "Yêu cầu một chuyến xe, đặt giá của bạn, và thương lượng trực tiếp — ngay trên trình duyệt.", ft_ios: "Ứng dụng iOS", ft_app: "Ứng dụng web", ft_wp: "Whitepaper", ft_privacy: "Chính sách riêng tư", ft_how: "Cách hoạt động", ft_support: 'Hỗ trợ & câu hỏi: <a href="mailto:[email protected]">[email protected]</a>', ft_copy: "© Phil Trinh · Freeport — chợ ngang hàng trên Nostr", } };
(function(){ const params = new URLSearchParams(location.search); const lang = (params.get('lang') || 'en').toLowerCase() === 'vi' ? 'vi' : 'en'; const sw = document.querySelector('[data-lang-' + lang + ']'); if (sw) sw.classList.add('on'); // whitepaper links per language const wpFile = lang === 'vi' ? 'whitepaper.vi.pdf' : 'whitepaper.pdf'; document.getElementById('wp-link').setAttribute('href', wpFile); document.getElementById('wp-foot').setAttribute('href', wpFile); if (lang === 'en') return; // English is the markup default document.documentElement.lang = 'vi'; const dict = I18N.vi; document.querySelectorAll('[data-i18n]').forEach(el => { const k = el.getAttribute('data-i18n'); if (dict[k] != null) el.innerHTML = dict[k]; }); document.querySelectorAll('[data-i18n-html]').forEach(el => { const k = el.getAttribute('data-i18n-html'); if (dict[k] != null) el.innerHTML = dict[k]; }); document.title = "Freeport — chợ ngang hàng trên Nostr"; })(); </script>
</body> </html>
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.