Where craft meets curiosity

Born from a shared passion, we roast small batches with bold flavour and creative intent. Every bean reflects careful experimentation, creative obsession, and a love for exploring beans from around the world.
From our roaster to your cup, DC Beans is about more than coffee - it’s about connection, storytelling, and the joy of a great cup.

async function updateStockButtons() { console.log("🟢 DC Beans stock script started"); try { const res = await fetch("https://live-stock.dane-grant.workers.dev"); const stock = await res.json(); console.log("📦 Stock loaded:", stock); document.querySelectorAll("[data-price-id]").forEach(wrapper => { const priceId = wrapper.getAttribute("data-price-id"); const button = wrapper.querySelector("a.button"); if (!priceId || !button) return; const product = Object.values(stock).find(p => p.price_id === priceId); console.log(`🔎 Checking price_id: ${priceId}`, product); if (!product) return; if (product.qty <= 0) { button.innerText = "Out of Stock"; button.href = "#out-of-stock"; button.classList.add("soldout"); button.style.pointerEvents = "none"; } else { button.href = product.link; button.classList.remove("soldout"); button.style.pointerEvents = "auto"; } }); } catch (err) { console.error("❌ Failed to fetch stock:", err); } } document.addEventListener("DOMContentLoaded", updateStockButtons); window.addEventListener("hashchange", () => { if (location.hash === "#coffee") { const tryUpdate = () => { const found = document.querySelectorAll("[data-price-id]").length > 0; if (found) { updateStockButtons(); } else { setTimeout(tryUpdate, 100); } }; tryUpdate(); } });

DC Beans began as a quiet ritual and a bold leap, born from curiosity, creativity, and a shared love for extraordinary coffee. What started with Dane's experimental home setup soon became a passion to explore bolder flavours and improve on each cup.From the first sample batches in an electric roaster to the beans you see today roasted in a gas drum roaster, DC Beans is a celebration of craft and connection. Every cup is a story of where we’ve been, where we're going - inviting you to join our journey.We Roast with Purpose & Share with Heart.

Each batch is carefully roasted by hand, elevating every cup into a crafted artisan experience.The Odd Bag Collection
One-of-a-kind batches, premium grade beans that didn’t fit our signature blends but shine on their own. No two bags are alike.
First Light
The blend that started it all. Bold, balanced, rich bright notes. Smooth, expressive, endlessly drinkable.
Gentle Nudge
Subtle, steady, full of depth. Smooth layered notes with gentle complexity - balanced and just bold enough to move you.

Got a question, idea, or craving?
We’re always keen to chat beans. Drop us a line below or follow along on Instagram @DC BEANS

☕ Coffee Usage Estimator

function calculateCoffeeUsage() { const cups = parseInt(document.getElementById('cupsPerDay').value || 0, 10); const shotSize = parseInt(document.getElementById('shotSize').value, 10); const gramsPerShot = parseInt(document.getElementById('machineType').value, 10); const dailyGrams = cups * shotSize * gramsPerShot; const weeklyGrams = dailyGrams * 7; const resultText = `→ Estimated weekly usage: ~${weeklyGrams}g`; document.getElementById('result').textContent = resultText; } ['cupsPerDay', 'shotSize', 'machineType'].forEach(id => { document.getElementById(id).addEventListener('input', calculateCoffeeUsage); }); calculateCoffeeUsage();