Mini tools

Hey, I’m Mark and I build prototypes and demos of my ideas, or things to build for fun. I’m learning as I go.

These are all hand-coded, with help from Claude Code. Together we move fast and solve tricky bits. Every intentional design and function choice is still mine.

— Mark Bowley

Subscribe for updates, insights and early access


Featured


Working Tools


Quick prototypes & ideas


fun demos


A collection by markbowley.com

const scroller = document.getElementById('scroller'); const prevBtn = document.getElementById('prevBtn'); const nextBtn = document.getElementById('nextBtn'); const cards = document.querySelectorAll('.card'); let currentIndex = 0; function updateNav() { prevBtn.disabled = currentIndex === 0; nextBtn.disabled = currentIndex === cards.length - 1; } function scrollToCard(index) { const card = cards[index]; const scrollLeft = card.offsetLeft - (window.innerWidth - card.offsetWidth) / 2; scroller.scrollTo({ left: scrollLeft, behavior: 'smooth' }); currentIndex = index; updateNav(); } prevBtn.addEventListener('click', () => { if (currentIndex > 0) { scrollToCard(currentIndex - 1); } }); nextBtn.addEventListener('click', () => { if (currentIndex < cards.length - 1) { scrollToCard(currentIndex + 1); } }); // Keyboard navigation document.addEventListener('keydown', (e) => { if (e.key === 'ArrowLeft') prevBtn.click(); if (e.key === 'ArrowRight') nextBtn.click(); }); updateNav();