Inspiration
A modern, cozy coffee shop experience focusing on handcrafted coffee and fresh-baked goods. The design aims to evoke warmth, slow mornings, and neighborhood connection through serif headlines, soft neutrals, and tactile layouts.
What it does
- Presents a landing site for a small artisan coffee & bakery: hero, about, menu highlights, experience, visit information and newsletter signup.
- Includes a decorative, CSS-only coffee machine animation to add personality without JavaScript.
- Fully responsive layout using CSS Grid and flexible units so it looks good across desktop and mobile.
How we built it
- Plain static site: HTML5 + semantic markup in
index.htmland styling instyle.css. - No JavaScript — interactions use CSS only (mobile menu via a checkbox toggle, CSS animations for the coffee machine).
- Fonts loaded from Google Fonts (Cormorant Garamond, Inter). Images use Unsplash links for placeholder photography.
- Key techniques: CSS Grid, responsive media queries, custom properties (CSS variables), pseudo-elements for decorative shapes, and CSS keyframe animations for the machine liquid and steam.
Challenges we ran into
- Positioning the coffee-machine animation: initially centered using absolute positioning which made it overlay the hero; fixed by switching the machine wrapper to a centered, relatively positioned container inside the Experience section.
- Balancing visual detail for the machine while keeping markup simple and accessible (no SVGs or external assets for the animated parts).
Accomplishments that we're proud of
- A visually rich hero layout with elegant typography and clear CTAs, built without complex frameworks.
- A whimsical, CSS-only coffee machine illustration and animation that gives the page character while remaining performant.
- Clean, accessible HTML structure and responsive CSS that adapts well across screen sizes.
What we learned
- Small selector mistakes or mismatched class names can silently break visual features — careful cross-checking between HTML and CSS is essential.
- CSS alone can create surprisingly expressive animations and UI patterns when combined with pseudo-elements and keyframes.
- Relative positioning is important: absolute elements without a positioned ancestor will anchor to the viewport, which affects layout in unexpected ways.
What's next for Ember and Grain
- Polish responsiveness and accessibility: add better keyboard focus states and ARIA labels where appropriate.
- Replace placeholder images with optimized assets and add srcset for responsive image loading.
- Create SVG versions of the machine illustration for crisper scaling, then animate using CSS or inline SMIL/JS only if needed.
- Add content-driven pages (full menu, events, contact form) or a lightweight CMS integration for dynamic updates.
Log in or sign up for Devpost to join the conversation.