CoffeeShop is a visually rich, fully responsive static frontend webpage built with Next.js 14, React.js, TypeScript, and TailwindCSS. This project simulates a modern coffee shopβs digital presence, featuring smooth animations, custom components, advanced scrolling effects, and a mobile-first design. It leverages Framer Motion, Locomotive Scroll, GSAP, React Icons, Split-Type, Swiper, and more, making it an excellent learning resource for web developers interested in advanced UI/UX and modern frontend technologies.
- Live Demo: https://coffeeshop-arnob.vercel.app/
Note: View my Coffee Shop 2 template for another showcase of my design and development skills:
- Live Demo: https://coffeelover-cafe.netlify.app/
- GitHub Repo: https://github.com/arnobt78/CoffeeShop-2--TailwindCSS-Fundamental-Project-9
- Project Summary
- Features
- Tech Stack
- Project Structure
- Key Components
- How to Run the Project
- API, Routes & Functionality
- Learning & Examples
- Useful Links & Tutorials
- Deployment
- Conclusion
- β¨ Modern UI with smooth animations and transitions
- π― Responsive and mobile-friendly design
- π Fast static site powered by Next.js 14
- π₯ Scroll-based and motion animations using Framer Motion, Locomotive Scroll, and GSAP
- π§© Modular component-based architecture
- π± Mobile navigation bar and touch-friendly sliders (Swiper)
- πΌοΈ SVG icons with React Icons
- π‘ Code splitting and font optimization with next/font
- π₯ Custom Google Fonts integration
- π Easy to deploy on Vercel or Netlify
- Frameworks: Next.js 14, React.js
- Styling: TailwindCSS
- Animations: Framer Motion, GSAP, Locomotive Scroll
- Icons: React-Icons
- Slider: Swiper
- Typography: Split-Type, next/font
- Type Checking: TypeScript
- Other: ESLint, PostCSS
.
βββ app/ # Next.js app directory (routes, pages)
βββ components/ # Reusable React components
β βββ About.tsx
β βββ Badge.tsx
β βββ Footer.tsx
β βββ Header.tsx
β βββ Hero.tsx
β βββ OpeningHours.tsx
β βββ Separator.tsx
β βββ Testimonials.tsx
β βββ Explore/ # Subcomponents
β βββ Menu/
β βββ Nav/
βββ public/ # Static assets (images, icons)
βββ styles/ # Tailwind and global styles
βββ .eslintrc.json # Linting configuration
βββ netlify.toml # Netlify deployment config
βββ next.config.mjs # Next.js configuration
βββ package.json # Project dependencies
βββ postcss.config.mjs # PostCSS config
βββ tailwind.config.ts # TailwindCSS config
βββ tsconfig.json # TypeScript config
βββ type.d.ts # TypeScript type definitions
- For a full list, see the GitHub repo file tree.
- Header.tsx: Top navigation bar, branding, and links.
- Hero.tsx: Hero section with eye-catching imagery and main call-to-action.
- About.tsx: Info about the coffee shop, mission, and values.
- Menu/: Menu component(s) showing products or offerings.
- Explore/: Call-to-action and exploration features.
- Testimonials.tsx: Customer testimonials with Swiper slider.
- Footer.tsx: Closing section with contact info and links.
- Nav/: Handles the mobile and desktop navigation.
Each component is written in TypeScript for safety and clarity, and is styled with TailwindCSS utility classes.
- Node.js: Install from nodejs.org
- npm (comes with Node.js), yarn, pnpm, or bun
npm install
# or
yarn install
# or
pnpm install
You may need to install additional packages:
npm i gsap react-icons split-type swiper
npm install locomotive-scroll@beta
npm i framer-motion
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Open http://localhost:3000 in your browser.
This project is a static frontendβit does not connect to a backend API. All content and interactivity are handled on the client-side using React components and Next.js routing.
- Routing: Uses Next.js App Router (
app/
directory). Page editing starts inapp/page.js
orapp/page.tsx
. - Fonts: Uses Next.js
next/font
for Google font optimization. - Scroll Animation: Locomotive Scroll and GSAP provide advanced scroll effects (parallax, smooth scrolling).
- Sliders: Swiper.js implements interactive testimonial and product sliders.
- Responsiveness: TailwindCSS ensures the site looks great on all devices.
- Motion/Transitions: Framer Motion animates elements for engaging UI/UX.
Hereβs how you might add a new section to the homepage:
// components/NewSection.tsx
import React from "react";
export default function NewSection() {
return (
<section className="py-12 bg-gray-100">
<div className="container mx-auto">
<h2 className="text-3xl font-bold mb-4">Our Special Roasts</h2>
<p className="text-lg">Explore our exclusive coffee blends handpicked by our experts.</p>
</div>
</section>
);
}
Import and use it in your main page:
import NewSection from "@/components/NewSection";
export default function HomePage() {
return (
<main>
{/* ...other sections... */}
<NewSection />
{/* ...other sections... */}
</main>
);
}
import { motion } from "framer-motion";
<motion.div
className="p-6 bg-white rounded shadow"
initial={{ opacity: 0, y: 50 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5 }}
>
Animated Section!
</motion.div>
- Live Demo
- Next.js Documentation
- Learn Next.js
- Framer Motion Docs
- Locomotive Scroll Docs
- GSAP Docs
- Swiper Docs
- TailwindCSS Docs
- React Icons
- Project Tutorial Video
- Flex Property Explanation
- Vercel: Click here to deploy on Vercel in seconds.
- Netlify: Use
netlify.toml
for Netlify configuration. - See the Next.js deployment docs for more options.
Next.js, React, TailwindCSS, Coffee Shop Website, Framer Motion, Locomotive Scroll, GSAP, Swiper, TypeScript, Static Site, Modern UI, Responsive Design, Web Animations, Component Architecture, Frontend, Web Development, Teaching Project, Learning Resource
This project is a robust example of modern frontend engineering using the React and Next.js ecosystem, packed with animations and best practices in component design, styling, and deployment.
It is a perfect resource for both learning and teaching advanced frontend concepts, as well as a solid template for real-world coffee shop/business websites.
Thank you for checking out this project. Enjoy building and learning!