☕ Brew Haven
Live demo: https://coffee-app-ruddy.vercel.app/
What this project does
Brew Haven is a modern, front-end-focused coffee shop web app built with Next.js and TypeScript. It showcases a responsive menu, featured carousel, subtle motion effects, and a clean UI for browsing coffees and pastries. The app is static/SSR-ready and uses a small client-side state store for UI state.
Key features
- Image carousel for featured items (Keen Slider)
- Responsive menu with category filtering and item pages
- Smooth UI animations using Framer Motion
- Lightweight state management with Zustand
- Skeleton loading UI for better perceived performance
Why it’s useful
This repo is a compact example of a production-ish Next.js app using modern tooling (React 19, Next 15, TypeScript, Tailwind). It's useful as:
- A starter/template for marketing or small product sites
- A showcase of accessible, responsive UI patterns and animations
- A learning reference for integrating Keen Slider, Framer Motion, and Zustand in Next.js
Tech stack
- Next.js 15
- React 19
- TypeScript
- Tailwind CSS
- Framer Motion
- Keen Slider
- Zustand
- Lucide icons
See package.json for full dependency versions.
Quick start
Prerequisites:
- Node.js 18+ (or compatible with the Next.js version in
package.json) - npm (or yarn/pnpm)
Clone and run locally:
git clone https://github.com/yourusername/brew-haven.git
cd brew-haven
npm install
npm run dev
Open http://localhost:3000 in your browser.
Scripts
npm run dev— development servernpm run build— production build (--turbopackenabled)npm run start— start production servernpm run lint— run ESLint
Project layout (high level)
app/— Next.js app routes and pages (server/client components)components/— shared UI componentssections/— page sections (home, about, menu)data/&public/— content and static assetsstore/— Zustand store (store/menuStore.tsx)
Explore the app/ and components/ folders to find UI entry points.
Usage examples
Example: start the dev server and view the carousel and menu.
Example snippet (Framer Motion usage already in the codebase):
import { motion } from "framer-motion";
const fadeIn = {
hidden: { opacity: 0, y: 24 },
visible: { opacity: 1, y: 0, transition: { duration: 0.5 } },
};
export default function AnimatedHeader() {
return (
<motion.h1 initial="hidden" animate="visible" variants={fadeIn}>
Welcome to Brew Haven
</motion.h1>
);
}
Where to get help
- Open an issue in this repository for bugs or feature requests
- Email the maintainer:
rashidvisda@gmail.com
If you need more detailed developer docs, consider adding a /docs folder or a project wiki.
Maintainers & Contributing
Maintainer: Rashid Visda — rashidvisda@gmail.com
Contributions are welcome. For contribution guidelines, see CONTRIBUTING.md.
Basic contribution flow:
- Fork the repo and create a feature branch
- Run tests (if any) and linting
- Open a PR with a clear description of changes
Please keep pull requests small and focused.
Security & License
This repository does not include a LICENSE file. Add a LICENSE in the root if you intend to open-source the project.
Next steps (suggested)
- Add
CONTRIBUTING.mdandCODE_OF_CONDUCT.mdfor clear contributor expectations - Add CI (build/test) badges to the README after setting up GitHub Actions or another CI
- Add runtime environment docs if the app requires environment variables
If you'd like, I can also create a minimal CONTRIBUTING.md (recommended so the README link works). Want me to add that now?

