فروشگاه آنلاین مدرن

فروشگاه آنلاین مدرن

این پروژه یک فروشگاه آنلاین کامل با قابلیت‌های سبد خرید، پرداخت و مدیریت محصولات است که با استفاده از Next.js، Redux و MongoDB پیاده‌سازی شده است.

Next.jsReduxMongoDBTailwind CSSNextAuth.jsStripeReact Query

صفحه اصلی فروشگاه

صفحه اصلی فروشگاه

صفحه محصول

صفحه محصول

ویژگی‌ها

  • صفحه اصلی با نمایش محصولات ویژه و پرفروش
  • صفحه محصولات با قابلیت فیلتر و جستجو
  • صفحه جزئیات محصول با گالری تصاویر و نظرات
  • سبد خرید با قابلیت افزودن، حذف و تغییر تعداد محصولات
  • فرآیند پرداخت چند مرحله‌ای
  • پنل مدیریت برای کنترل محصولات، سفارشات و کاربران
  • سیستم احراز هویت کاربران
  • طراحی ریسپانسیو برای تمام دستگاه‌ها

جزئیات فنی

این فروشگاه آنلاین با استفاده از Next.js و App Router پیاده‌سازی شده است. برای مدیریت state از Redux استفاده شده و برای ذخیره‌سازی داده‌ها از MongoDB بهره گرفته‌ایم. همچنین برای احراز هویت کاربران از NextAuth.js و برای پرداخت آنلاین از Stripe استفاده شده است.

این فروشگاه به صورت کامل ریسپانسیو طراحی شده و در تمام دستگاه‌ها به خوبی نمایش داده می‌شود. همچنین از قابلیت‌های SSR در Next.js برای بهبود عملکرد و SEO استفاده شده است.

کد نمونه

// نمونه کد برای صفحه محصول
import { useState } from 'react';
import { useDispatch } from 'react-redux';
import { addToCart } from '@/redux/cartSlice';
import { useQuery } from 'react-query';
import { getProduct } from '@/lib/api';

export default function ProductPage({ params }) {
  const { id } = params;
  const [quantity, setQuantity] = useState(1);
  const dispatch = useDispatch();
  
  const { data: product, isLoading, error } = useQuery(['product', id], () => getProduct(id));
  
  if (isLoading) return <div>در حال بارگذاری...</div>;
  if (error) return <div>خطا در بارگذاری محصول</div>;
  
  const handleAddToCart = () => {
    dispatch(addToCart({
      id: product._id,
      name: product.name,
      price: product.price,
      image: product.images[0],
      quantity
    }));
  };
  
  return (
    <div className="container mx-auto px-4 py-8">
      <div className="grid grid-cols-1 md:grid-cols-2 gap-8">
        <div className="relative h-96">
          <img src={product.images[0] || "/placeholder.svg"} alt={product.name} className="object-cover rounded-lg" />
        </div>
        <div>
          <h1 className="text-3xl font-bold mb-4">{product.name}</h1>
          <p className="text-2xl text-blue-600 mb-4">{product.price.toLocaleString()} تومان</p>
          <p className="mb-6">{product.description}</p>
          <div className="flex items-center mb-6">
            <button 
              onClick={() => setQuantity(q => Math.max(1, q - 1))}
              className="px-3 py-1 border border-gray-300 rounded-l-md"
            >
              -
            </button>
            <span className="px-4 py-1 border-t border-b border-gray-300">{quantity}</span>
            <button 
              onClick={() => setQuantity(q => q + 1)}
              className="px-3 py-1 border border-gray-300 rounded-r-md"
            >
              +
            </button>
          </div>
          <button 
            onClick={handleAddToCart}
            className="w-full bg-blue-600 text-white py-3 rounded-md hover:bg-blue-700"
          >
            افزودن به سبد خرید
          </button>
        </div>
      </div>
    </div>
  );
}

پروژه‌های مرتبط

داشبورد مدیریت

داشبورد مدیریت

داشبورد مدیریتی با انواع چارت‌ها و نمودارها برای تحلیل داده‌ها

مشاهده جزئیات
اپلیکیشن مدیریت وظایف

اپلیکیشن مدیریت وظایف

اپلیکیشن مدیریت وظایف با قابلیت‌های پیشرفته

مشاهده جزئیات
وب‌سایت شرکتی

وب‌سایت شرکتی

وب‌سایت شرکتی با طراحی مدرن و ریسپانسیو

مشاهده جزئیات