StealThis .dev
Pages Medium

DIY — Project Sharing Landing

A photo-first landing page for MAKELOG, a fictional project-sharing community, built with plain HTML, CSS and vanilla JavaScript. It pairs a featured hero card with a channel navigation bar, a dense grid of sixteen project cards with hover quick-view overlays, a dark contests band with live countdown timers, a trending makers row, and a newsletter band with inline validation. Every thumbnail is drawn with CSS gradients, so nothing loads from the network.

Open in Lab
html css vanilla-js
Targets: JS HTML

Code

Project Sharing Landing

MAKELOG is a fictional community where people post step-by-step builds. The page opens with a sticky header — wordmark, search field, Publish call to action — sitting above a channel bar for Circuits, Workshop, Craft, Cooking and Living, each marked with its own colour dot. Below that, a wide featured card carries a diagonal “Featured” ribbon, a gradient-overlaid illustration, the author chip and the usual step/view/favorite counters.

The feed itself is sixteen project cards in an auto-filling grid, some deliberately taller so the layout reads as masonry-ish rather than a rigid table. Each card has a channel-coloured top strip, a lift on hover that fades in a quick-view overlay with the build’s hook and step count, and a dashed footer with view and favorite counts in monospace. Cards are keyboard-operable buttons with visible focus.

Switching channels re-filters and re-staggers the grid, the sort pills reorder by views or favorites, and typing in the search box (or pressing /) narrows by title, author or channel. The dark contests band runs three independent countdown timers down to the second, the trending makers row toggles follow state, and the newsletter band validates inline as you type and confirms on submit. A single toast() helper acknowledges every action.

How this look is built

The information architecture is in the spirit of Instructables-style project communities — channel navigation over a dense photo grid with contests running alongside — but the brand, copy and art are original. Modern CSS does the heavy lifting: grid-template-columns: repeat(auto-fill, minmax(...)) gives a responsive feed with no breakpoint math, layered linear-gradient/radial-gradient/ repeating-conic-gradient on ::before and ::after synthesise every thumbnail so the page has zero image requests, position: sticky keeps the header and channel bar in reach, and a padding-bottom aspect box plus an opacity-transitioned overlay produce the hover quick view without layout shift. The staggered entrance is a tiny per-card setTimeout adding an .in class, which keeps the animation in CSS and disables cleanly under prefers-reduced-motion — far lighter than the old approach of a JS masonry library measuring and absolutely positioning every tile on resize.

Illustrative UI only — always follow real safety guidance when working with tools, electronics, or repairs.