
متجر إلكتروني أنيق وعصري لأزياء الرجال، مبني باستخدام Next.js 15 و Sanity CMS و Tailwind CSS 4.
🔗 نسخة مباشرة: mensty.vercel.app
/product/[slug]) مع معرض صور واختيار المقاس واللون ووصف تفصيلي.next-themes.الطبقة
التقنية
الإطار
Next.js 15 (App Router، Turbopack)
اللغة
TypeScript
الواجهة
React 19، Tailwind CSS 4، shadcn/ui، Radix UI، أيقونات Lucide
الحركات
Framer Motion
إدارة المحتوى
Sanity (next-sanity + Sanity Studio)
البريد
Nodemailer (متوفر أيضًا Resend و Formspree)
التنبيهات
react-hot-toast
النشر
Vercel
├── app/ # Next.js App Router (الصفحات، مسارات الـ API، التخطيط)
│ ├── api/send-order/ # نقطة إرسال الطلبات (Nodemailer)
│ ├── checkout/ # صفحة إتمام الشراء
│ ├── product/[slug]/ # صفحة تفاصيل المنتج
│ ├── products/ # صفحة قائمة المنتجات
│ └── components/ # الهيدر، الفوتر، واجهة السلة، إلخ
├── components/ui/ # مكونات shadcn/ui
├── lib/ # عميل Sanity، استعلامات GROQ، أدوات مساعدة
├── sanity/ # Sanity Studio (المخططات: المنتجات، الأقسام، الألوان)
├── public/ # الملفات الثابتة
└── types.ts # أنواع TypeScript المشتركة
# استنساخ المستودع
git clone https://github.com/rezk20/mensty-store.git
cd mensty-store
# تثبيت الاعتماديات
npm install
أنشئ ملف .env.local في جذر المشروع:
# الرابط الأساسي للموقع (يُستخدم في إيميلات الطلبات)
NEXT_PUBLIC_BASE_URL=http://localhost:3000
# إعدادات SMTP لإرسال إيميلات الطلبات
EMAIL_HOST=smtp.example.com
EMAIL_PORT=587
EMAIL_SECURE=false
EMAIL_USER=your@email.com
EMAIL_PASS=your-password
EMAIL_FROM=noreply@example.com
EMAIL_TO=shop@example.com
# اضبطها على "true" لإرسال إيميل تأكيد للعميل أيضًا
SEND_CUSTOMER_CONFIRMATION=false
معرّف مشروع Sanity (oioxmpkn) وقاعدة البيانات (production) مضبوطان حاليًا فيlib/sanity.tsوsanity/sanity.config.ts. يُفضّل نقلها إلى متغيرات بيئة (NEXT_PUBLIC_SANITY_PROJECT_ID،NEXT_PUBLIC_SANITY_DATASET) كأفضل ممارسة للإنتاج.
npm run dev
افتح http://localhost:3000 لعرض المتجر.
شغّل الاستوديو محليًا لإدارة المنتجات والأقسام والألوان:
cd sanity
npm install
npx sanity dev
ثم افتح http://localhost:3333.
npm run build
npm start
الأمر
الوصف
npm run dev
تشغيل خادم التطوير مع Turbopack
npm run build
البناء للإنتاج
npm start
تشغيل خادم الإنتاج
npm run lint
تشغيل ESLint
/api/send-order.المساهمات مرحّب بها! لا تتردد في فتح مشكلة (issue) أو إرسال طلب دمج (pull request).
هذا المشروع خاص.