Help
RSS
API
Feed
Maltego
Contact
Domain > barn-door.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2022-03-22
43.129.15.60
(
ClassC
)
2026-01-29
185.199.110.153
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyConnection: keep-aliveContent-Length: 162Server: GitHub.comContent-Type: text/htmlLocation: https://barn-door.com/X-GitHub-Request-Id: BB32:267B0F:11D6D6:1213D6:697B772CAccept-Ranges: bytesAge: 0Date: Thu, 29 Jan 2026 15:05:16 GMTVia: 1.1 varnishX-Served-By: cache-bfi-kbfi7400074-BFIX-Cache: MISSX-Cache-Hits: 0X-Timer: S1769699117.776011,VS0,VE86Vary: Accept-EncodingX-Fastly-Request-ID: e52212e899cbdd8b93653924f8e69368974f8854 html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>nginx/center>/body>/html>
Port 443
HTTP/1.1 200 OKConnection: keep-aliveContent-Length: 22035Server: GitHub.comContent-Type: text/html; charsetutf-8Last-Modified: Thu, 21 Aug 2025 04:58:31 GMTAccess-Control-Allow-Origin: *Strict-Transport-Security: max-age31556952ETag: 68a6a777-5613expires: Thu, 29 Jan 2026 15:15:16 GMTCache-Control: max-age600x-proxy-cache: MISSX-GitHub-Request-Id: 4410:356B8F:10FD66:1139C9:697B772CAccept-Ranges: bytesAge: 0Date: Thu, 29 Jan 2026 15:05:16 GMTVia: 1.1 varnishX-Served-By: cache-bfi-kbfi7400021-BFIX-Cache: MISSX-Cache-Hits: 0X-Timer: S1769699117.906834,VS0,VE84Vary: Accept-EncodingX-Fastly-Request-ID: 8be3aa65b42413cfc37884ea0fbc255523730469 !doctype html>html langen>link relicon hreffavicon.png sizesany>link relapple-touch-icon hreffavicon.png>head> meta charsetutf-8 /> meta nameviewport contentwidthdevice-width, initial-scale1 /> title>BarnDoor/title> !-- meta http-equivContent-Security-Policy contentupgrade-insecure-requests> --> meta http-equivContent-Security-Policy contentdefault-src self; img-src self https: data:; script-src self unsafe-inline https://cdn.tailwindcss.com; style-src self unsafe-inline https://fonts.googleapis.com; font-src https://fonts.gstatic.com; connect-src https://script.google.com https://script.googleusercontent.com; upgrade-insecure-requests> script srchttps://cdn.tailwindcss.com>/script> link relpreconnect hrefhttps://fonts.googleapis.com> link relpreconnect hrefhttps://fonts.gstatic.com crossorigin> link hrefhttps://fonts.googleapis.com/css2?familyInter:wght@400;600;800&displayswap relstylesheet> style> :root{ --brand:#266a2e; } html,body{ font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, Apple Color Emoji,Segoe UI Emoji; } .price-old{ text-decoration: line-through; opacity: .6 } .card{ transition: transform .2s ease, box-shadow .2s ease } .card:hover{ transform: translateY(-2px) } inputtypenumber { text-align: center; appearance: textfield; -moz-appearance: textfield; } inputtypenumber::-webkit-outer-spin-button, inputtypenumber::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; } .btn-green { background-color: var(--brand); color: white; font-weight: 600; transition: transform 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease; } .btn-green:hover { background-color: #2d7a34; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0,0,0,0.15); } .skeleton { position: relative; overflow: hidden; background: #e5e7eb; border-radius: 0.75rem; } .shimmer { position: absolute; inset: 0; transform: translateX(-100%); background: linear-gradient(90deg, transparent, rgba(255,255,255,.5), transparent); animation: shimmer 1.25s infinite; } @keyframes shimmer { 100% { transform: translateX(100%); } } /style>/head>body classbg-green-50 min-h-screen> header classsticky top-0 z-40 bg-white border-b> div classmax-w-6xl mx-auto px-4 py-3 flex items-center gap-4> div classflex items-center gap-2> div classw-8 h-8 rounded-xl bg---brand>/div> span classfont-extrabold text-xl tracking-tight>BarnDoor/span> /div> div classflex-1>/div> input idsearch typesearch placeholderSearch produce, baked goods, eggs… classw-full max-w-lg border rounded-xl px-4 py-2 /> button idcartBtn classbtn-green ml-4 relative p-2 rounded-xl bg---brand text-white> svg classcart-icon w-7 h-7 viewBox0 0 24 24 xmlnshttp://www.w3.org/2000/svg fillwhite> circle cx16.5 cy18.5 r1.5/> circle cx9.5 cy18.5 r1.5/> path dM18 16H8a1 1 0 0 1-.958-.713L4.256 6H3a1 1 0 0 1 0-2h2a1 1 0 0 1 .958.713L6.344 6H21a1 1 0 0 1 .937 1.352l-3 8A1 1 0 0 1 18 16zm-9.256-2h8.563l2.25-6H6.944z/> /svg> span idcartCount classhidden absolute -top-1 -right-1 bg-red-600 text-white text-xs font-bold px-1.5 py-0.5 rounded-full>0/span> /button> /div> /header> main classmax-w-6xl mx-auto px-4 py-8> section classmb-8> h1 classtext-3xl font-extrabold>See You Saturday!/h1> p classtext-gray-600 mt-2> Order by Friday 5 p.m. for Saturday pickup at the Issaquah Farmers Market.br> strong>Address:/strong> 1730 10th Ave NW, Pickering Barn, Issaquah, WA 98027 /p> /section> section> div idproductGrid classgrid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-5>/div> /section> /main> div iddrawerOverlay classhidden fixed inset-0 bg-black/30 z-50> div iddrawer classabsolute right-0 top-0 bottom-0 w-full sm:w-28rem bg-white shadow-2xl translate-x-full transition-transform duration-300 flex flex-col> div classp-4 border-b flex items-center justify-between> h2 classtext-xl font-bold>Your Cart/h2> button idcloseDrawer classtext-gray-500>✕/button> /div> div classflex-1 overflow-y-auto idcartItems>/div> div classborder-t p-4> div classflex items-center justify-between mb-2>span>Subtotal/span>span idsubtotal classfont-semibold>$0.00/span>/div> div classflex items-center justify-between mb-2>span>Discounts/span>span iddiscount classfont-semibold>-$0.00/span>/div> div classflex items-center justify-between text-lg>span>Total (est.)/span>span idtotal classfont-extrabold>$0.00/span>/div> button idcheckoutBtn classbtn-green mt-4 w-full px-4 py-3 rounded-xl>Checkout/button> /div> /div> /div> div idmodal classhidden fixed inset-0 bg-black/30 z-50 items-center justify-center> div classbg-white rounded-2xl shadow-xl w-min(640px,90vw) p-6> h3 classtext-2xl font-bold mb-4>Your Details/h3> form idorderForm classgrid grid-cols-1 sm:grid-cols-2 gap-4> label classflex flex-col sm:col-span-2>Pickup nameinput required namename classborder rounded-xl px-3 py-2 mt-1>/label> label classflex flex-col sm:col-span-2>Emailinput required typeemail nameemail classborder rounded-xl px-3 py-2 mt-1>/label> label classflex flex-col sm:col-span-2>Mobile (for optional SMS reminders)input namephone pattern+0-9\-()\s{7,} classborder rounded-xl px-3 py-2 mt-1 placeholdere.g., (123) 456-7890>/label> label classflex flex-col sm:col-span-2>Notes for the farmertextarea namenotes rows3 classborder rounded-xl px-3 py-2 mt-1 placeholderAny substitutions or preferences>/textarea>/label> div classsm:col-span-2 mt-2> p classtext-sm text-gray-600 mb-3> You’ll pay at pickup. We’ll email you a confirmation and a Friday reminder. /p> div classgrid grid-cols-2 gap-3> button idplaceOrderBtn typesubmit classbtn-green w-full px-4 py-3 rounded-xl>Place Order/button> button typebutton idcancelModal classw-full px-4 py-3 rounded-xl border bg-white>Cancel/button> /div> /div> /form> /div> /div> footer classbg-white border-t py-5 text-sm text-gray-500> div classmax-w-6xl mx-auto px-4 flex flex-col sm:flex-row items-center justify-between gap-3> p>©span idyear>/span> BarnDoor. This platform is neither affiliated with nor endorsed by the City of Issaquah./p> p>Questions? a hrefmailto:barndoorissaquah@gmail.com classunderline>Email us/a>/p> /div> /footer> script> const APPS_SCRIPT_URL https://script.google.com/macros/s/AKfycbzXIe_Jo4xoyKW479OUczEtLD_iq6iQs3Z9PMXLJCbtTso-mBPq3IQmP4HAfpM-TKz4bw/exec; const MARKET_DATE_RULE nextSaturdayISO; let catalog ; async function loadCatalog(){ showSkeletonCards(8); try{ const res await fetch(`${APPS_SCRIPT_URL}?actioncatalog`, { method:GET }); const data await res.json(); if (!data.ok) throw new Error(Catalog fetch failed); catalog data.items || ; logInsecureCatalog(catalog); renderProducts(); }catch(err){ console.error(err); alert(Could not load catalog. Please try again later.); } } const $ sel > document.querySelector(sel); const $$ sel > Array.from(document.querySelectorAll(sel)); function fmt(n){ const v Number.isFinite(n) ? n : 0; return $ + v.toFixed(2); } function displayPrice(p){ return Number(p.price) * (1 - Number(p.discount || 0)/100); } function renderProducts(filter){ const grid $(#productGrid); grid.innerHTML ; const f filter.trim().toLowerCase(); const items catalog.filter(p > !f || p.product.toLowerCase().includes(f) || (p.tags||).some(t>String(t).toLowerCase().includes(f)) || p.farm.toLowerCase().includes(f) ); for (const p of items){ const now displayPrice(p); const img httpsOnly(p.image, { allowData:true }) || favicon.png; if (!img) console.warn(Sanitized image URL is empty for, p.product, original:, p.image); const el document.createElement(div); el.className card bg-white rounded-2xl shadow hover:shadow-lg overflow-hidden flex flex-col; el.innerHTML ` div classrelative> img src${img} alt${p.product} classh-40 w-full object-cover/> span classabsolute top-2 right-2 bg-red-600 text-white text-xs font-bold px-2 py-1 rounded-full shadow> ${p.discount}% OFF /span> /div> div classp-4 flex-1 flex flex-col> div classtext-xs text-gray-500 mb-1>${p.farm}/div> h3 classfont-semibold>${p.product}/h3> div classmt-2 flex items-baseline gap-2> span classprice-old>$${Number(p.price).toFixed(2)}/span> span classtext-lg font-extrabold>$${now.toFixed(2)}/span> /div> div classmt-auto pt-3 flex items-center gap-2> button data-product${p.product} classadd btn-green px-3 py-2 rounded-xl w-full>Add/button> /div> /div>`; grid.appendChild(el); } } const cart ; function addToCart(product){ const p catalog.find(x>x.productproduct); if (!p) return; const existing cart.find(i>i.productproduct); if (existing) existing.qty + 1; else cart.push({ product: p.product, qty: 1 }); updateCart(); } function removeFromCart(product){ const idx cart.findIndex(i>i.productproduct); if (idx>0) cart.splice(idx,1); updateCart(); } function changeQty(product, delta){ const item cart.find(i>i.productproduct); if (!item) return; item.qty Math.max(0, (item.qty|0) + delta); if (item.qty 0) removeFromCart(product); else updateCart(); } function setQty(product, q){ const item cart.find(i>i.productproduct); if (!item) return; const v Math.max(0, q|0); if (v 0) removeFromCart(product); else { item.qty v; updateCart(); } } function calcTotals(){ let subtotalOriginal 0, totalDiscount 0; for (const i of cart){ const p catalog.find(x>x.producti.product); if (!p) continue; const unitOriginal Number(p.price); const pct Number(p.discount || 0)/100; const lineOriginal unitOriginal * i.qty; const lineDiscount lineOriginal * pct; subtotalOriginal + lineOriginal; totalDiscount + lineDiscount; } const totalDue Math.max(0, subtotalOriginal - totalDiscount); return { subtotalOriginal, totalDiscount, totalDue }; } function updateCart(){ const totalItems cart.reduce((a,i)>a+i.qty,0); $(#cartCount).textContent totalItems; if (totalItems > 0) { $(#cartCount).classList.remove(hidden); } else { $(#cartCount).classList.add(hidden); } const list $(#cartItems); list.innerHTML ; for (const i of cart){ const p catalog.find(x > x.product i.product); const unitOriginal p ? Number(p.price) : 0; const row document.createElement(div); row.className p-4 flex items-center justify-between border-b gap-3; row.innerHTML ` div classflex-1> div classfont-semibold>${i.product}/div> div classtext-sm text-gray-500>$${unitOriginal.toFixed(2)} each/div> /div> div classflex items-center gap-2> button classpx-3 py-2 border rounded-lg qty-dec data-product${i.product}>−/button> input typenumber min0 value${i.qty} classw-16 text-center border rounded-lg px-2 py-2 qty data-product${i.product} /> button classpx-3 py-2 border rounded-lg qty-inc data-product${i.product}>+/button> button classml-2 px-3 py-2 border rounded-lg remove data-product${i.product}>Remove/button> /div>`; list.appendChild(row); } const t calcTotals(); $(#subtotal).textContent fmt(t.subtotalOriginal); $(#discount).textContent - + fmt(t.totalDiscount); $(#total).textContent fmt(t.totalDue); } function openDrawer(){ const overlay $(#drawerOverlay); const drawer $(#drawer); overlay.classList.remove(hidden); requestAnimationFrame(()> drawer.classList.remove(translate-x-full)); } function closeDrawer(){ const overlay $(#drawerOverlay); const drawer $(#drawer); drawer.classList.add(translate-x-full); setTimeout(()> overlay.classList.add(hidden), 300); } function openModal(){ $(#modal).classList.remove(hidden); $(#modal).classList.add(flex); } function closeModal(){ $(#modal).classList.add(hidden); $(#modal).classList.remove(flex); } let SUBMITTING false; async function submitOrder(form){ if (cart.length0){ alert(Your cart is empty.); return; } if (SUBMITTING) return; SUBMITTING true; const btn document.getElementById(placeOrderBtn); const originalText btn ? btn.textContent : ; try{ if (btn){ btn.disabled true; btn.textContent Submitting…; btn.classList.add(opacity-60, cursor-not-allowed); } const fd new FormData(form); const customer { name: (fd.get(name)||).toString().trim(), email: (fd.get(email)||).toString().trim(), phone: (fd.get(phone)||).toString().trim(), }; if (!customer.name || !customer.email){ alert(Please enter your name and email.); return; } const requestId (crypto && crypto.randomUUID) ? crypto.randomUUID() : String(Date.now()) + - + Math.floor(Math.random()*1e6); const payload { requestId, marketDate: MARKET_DATE_RULE(), customer, cart: cart.map(i>({ product:i.product, qty:i.qty })), totals: calcTotals(), paymentMethod: Pay at pickup, notes: (fd.get(notes)||).toString() }; const res await fetch(APPS_SCRIPT_URL, { method:POST, body: JSON.stringify(payload) }); const data await res.json(); if (!data.ok) throw new Error(data.error || Order failed); if (data.duplicate) { alert(Your order was already received. Thanks!); } else { alert(Thanks! Your order was submitted.); } cart.length 0; updateCart(); closeModal(); closeDrawer(); form.reset(); }catch(err){ console.error(err); alert(`Sorry, something went wrong. ${err.message || }`); }finally{ SUBMITTING false; if (btn){ btn.disabled false; btn.textContent originalText || Place Order; btn.classList.remove(opacity-60, cursor-not-allowed); } } } function nextSaturdayISO(){ const d new Date(); const day d.getDay(); const daysUntilSat (6 - day + 7) % 7 || 7; const sat new Date(d.getFullYear(), d.getMonth(), d.getDate() + daysUntilSat); return sat.toISOString().slice(0,10); } document.addEventListener(click, e>{ if (e.target.closest(.add)) addToCart(e.target.closest(.add).dataset.product); if (e.target.closest(.qty-inc)) changeQty(e.target.closest(.qty-inc).dataset.product, +1); if (e.target.closest(.qty-dec)) changeQty(e.target.closest(.qty-dec).dataset.product, -1); if (e.target.closest(.remove)) removeFromCart(e.target.closest(.remove).dataset.product); if (e.target.closest(#cartBtn)) openDrawer(); if (e.target.idcloseDrawer) closeDrawer(); if (e.target.idcheckoutBtn) { if(cart.length>0) openModal(); } if (e.target.idcancelModal) closeModal(); if (e.target.id modal) closeModal(); if (e.target.id drawerOverlay) closeDrawer(); }); document.addEventListener(input, e>{ if (e.target.idsearch) renderProducts(e.target.value); if (e.target.classList.contains(qty)) setQty(e.target.dataset.product, Number(e.target.value)); }); $(#orderForm).addEventListener(submit, e>{ e.preventDefault(); submitOrder(e.target); }); function showSkeletonCards(count 8){ const grid $(#productGrid); grid.innerHTML ; for (let i 0; i count; i++){ const card document.createElement(div); card.className card bg-white rounded-2xl shadow overflow-hidden flex flex-col; card.innerHTML ` div classrelative h-40> div classskeleton w-full h-full>/div> div classshimmer>/div> /div> div classp-4 flex-1 flex flex-col gap-3> div classskeleton h-3 w-24 rounded>/div> div classskeleton h-5 w-3/4 rounded>/div> div classflex items-baseline gap-2> div classskeleton h-4 w-16 rounded>/div> div classskeleton h-6 w-20 rounded>/div> /div> div classmt-auto pt-3> div classskeleton h-10 w-full rounded-xl>/div> /div> /div> `; grid.appendChild(card); } } function showEmpty(message No items available right now.){ $(#productGrid).innerHTML `div classcol-span-full text-center text-gray-500 py-10>${message}/div>`; } function showError(message Could not load catalog. Please try again later.){ $(#productGrid).innerHTML `div classcol-span-full text-center text-red-600 py-10>${message}/div>`; } function sizeMainToViewport() { const header document.querySelector(header); const footer document.querySelector(footer); const main document.querySelector(main); if (!main) return; const h header ? header.offsetHeight : 0; const f footer ? footer.offsetHeight : 0; main.style.minHeight `calc(100dvh - ${h + f}px)`; } function httpsOnly(u, { allowDatafalse } {}) { try { if (!u) return ; const s String(u).trim(); if (allowData && s.startsWith(data:)) return s; const normalized s.startsWith(//) ? https: + s : s; const url new URL(normalized, location.origin); if (url.protocol http:) url.protocol https:; if (url.protocol ! https:) return ; return url.toString(); } catch { return ; } } function logInsecureCatalog(items) { const offenders ; const isHttpish v > typeof v string && /^\s*http:/i.test(v); const isProtocolRelative v > typeof v string && /^\s*\/\//.test(v); for (const p of items || ) { for (const key of image, link, url) { const raw p?.key; if (!raw) continue; const v String(raw).trim(); if (isHttpish(v) || isProtocolRelative(v)) { offenders.push({ product: p.product, field: key, url: v }); } } } if (offenders.length) { console.groupCollapsed(`⚠️ Mixed-content URLs found: ${offenders.length}`); console.table(offenders); console.groupEnd(); } else { console.info(No obvious http:// or // URLs in catalog.); } } window.addEventListener(error, (e) > { const t e.target; if (t && t.tagName IMG) console.warn(Image failed to load:, t.src); }, true); window.addEventListener(load, sizeMainToViewport); window.addEventListener(resize, sizeMainToViewport); (async () > { try { await loadCatalog(); renderProducts(); updateCart(); $(#year).textContent new Date().getFullYear(); } catch (e) { console.error(e); alert(Could not load catalog. Check your Apps Script URL and permissions.); } })(); updateCart(); $(#year).textContent new Date().getFullYear(); /script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]