واتساب ستور بيلدر

خطة المشروع الكاملة · من الفكرة للإطلاق والربح
🚀 SaaS 📱 Flutter 💬 واتساب 🌍 السوق العربي 💰 B2B
3 شهور للإطلاق
$20 متوسط الاشتراك
50M+ محل صغير في العالم العربي
إمكانية التوسع
وثيقة استراتيجية شاملة · 2025
1الفكرة — المشكلة والحل💡 2السوق المستهدف والجمهور🎯 3المنتج — الشاشات والميزات📱 4هيكل قاعدة البيانات🗄️ 5Tech Stack والبنية التقنية🛠️ 6خطة التطوير — 3 شهور🗓️ 7موديل الربح والتسعير💰 8استراتيجية التسويق والنمو📣 9المنافسون والميزة التنافسية⚔️ 10التحديات والحلول⚠️ 11Flutter كود الـ MVP💻 12الخطوات الفورية🚀

المشكلة الحقيقية

ملايين أصحاب المحلات الصغيرة في العالم العربي يبيعون على واتساب يومياً، لكنهم يعانون من نفس المشاكل:

😤

فوضى الطلبات

طلبات جاية في رسائل مبعثرة بدون أي تنظيم أو ترتيب، وبتتضيع وسط المحادثات

📸

إرسال صور عشوائي

بيبعتوا صور كتير بدون عرض منظم للمنتجات والأسعار، والعميل بيتوه

ضياع وقت يومي

بيردوا على نفس الأسئلة مئات المرات — "إيه عندك؟" "كام سعره؟" "فيه قياس M؟"

💸

خسارة عملاء

عملاء بيسألوا ومش بيلاقوا رد سريع فبيمشوا للمنافس اللي عنده كتالوج جاهز

الحل

واتساب ستور بيلدر — متجرك في 10 دقايق

منصة SaaS تخلي أي صاحب محل يعمل كتالوج منتجات إلكتروني احترافي في دقائق. العميل بيتصفح الكتالوج، يختار المنتجات، وبضغطة واحدة الطلب بييجي على واتساب صاحب المحل منظم وجاهز تماماً — من غير أي تعقيد.

كيف بتشتغل؟

1️⃣

يسجل المحل

اسم المحل، اللوجو، رقم الواتساب — في أقل من دقيقتين

2️⃣

يضيف المنتجات

صور، أسعار، تفاصيل — رابط الكتالوج بيتولد تلقائياً فوراً

3️⃣

يشارك الرابط

على واتساب، انستجرام، فيسبوك، أو في أي مكان تاني

4️⃣

الطلبات تييجي

العميل بيختار وبضغطة واحدة الطلب يوصله منظم ومرتب

حجم السوق

🌍

+500 مليون

مستخدم واتساب في العالم العربي والأفريقي — واتساب هو التطبيق رقم 1

🏪

+50 مليون

محل صغير وهوم بيزنس في المنطقة العربية بيبيعوا على السوشيال يومياً

📱

78%

من المبيعات الصغيرة بتتم عبر واتساب في مصر والخليج

📈

35% نمو سنوي

نمو التجارة الإلكترونية الصغيرة في المنطقة العربية سنة بعد سنة

الجمهور المستهدف — بالأولوية

الفئةالحجمسبب الاختيارالأولوية
🧥 محلات الملابس الصغيرةضخم جداًبيبيعوا على واتساب يومياً⭐⭐⭐⭐⭐
🎂 هوم بيزنس (كيك، حلويات)كبير جداًمحتاجين كتالوج بصور جميلة⭐⭐⭐⭐⭐
💍 إكسسوار وهاندميدكبيرمنتجات بصرية = محتاجين كتالوج⭐⭐⭐⭐
🛒 موردي الجملةمتوسطكتالوج بالكميات والأسعار للتجار⭐⭐⭐⭐
💄 بيوتي وكوزماتيكسكبيرمنتجات كتير + عروض وخصومات⭐⭐⭐⭐
🍕 مطاعم صغيرةضخممنيو إلكتروني بدون تطبيق⭐⭐⭐

الأسواق الجغرافية

🇪🇬

مصر — الأولوية الأولى

أكبر سوق عربي من حيث العدد، ثقافة البيع على السوشيال قوية، وحجم الهوم بيزنس ضخم جداً

🇸🇦

السعودية — الأولوية التانية

قوة شرائية عالية، سوق التجارة الإلكترونية ينمو بسرعة كبيرة جداً

🌍

المغرب + الخليج

التوسع في المرحلة التانية بعد ثبات النموذج في مصر والسعودية

موكاب شاشات التطبيق

🏠 الداشبورد
📦
طلبات اليوم
12 طلب جديد
💰
المبيعات
2,450 جنيه
👁️
زوار الكتالوج
87 زائر اليوم
📤 شارك الكتالوج
📦 المنتجات
👕
تيشيرت أبيض
150 ج ✅ متاح
👖
بنطلون أسود
250 ج ✅ متاح
🧥
جاكيت شتوي
450 ج ⛔ نفذ
+ إضافة منتج جديد
🛒 الطلبات الجديدة
🆕
محمد علي
330 ج · جديد
سارة أحمد
180 ج · قيد التنفيذ
علي حسن
520 ج · تم التسليم

جانب العميل — الكتالوج (Web)

بدون تحميل أي تطبيق!

العميل بيفتح رابط في المتصفح مباشرة — متجر جميل وسريع وسهل. بيتصفح المنتجات، يحط في العربة، وبضغطة واحدة على "اطلب على واتساب" الرسالة بتتبعت لصاحب المحل منظمة تماماً.

جدول الميزات الكاملة

الميزةFreeBasicPro
عدد المنتجات10100غير محدود
رابط مخصص (yourstore.com/اسمك)
إزالة Branding التطبيق
تخصيص الألوان والثيم
مناطق التوصيل والأسعار
تقارير المبيعات
باركود سكانر
تحليلات الكتالوج (زيارات، تحويلات)
دعم فني أولوية
Variants (مقاس، لون)
إرسال الطلب على واتساب

Collections الكاملة

// ── USERS ────────────────────────────────────────── users/{userId} { uid: "firebase_auth_uid", name: "أحمد محمد", phone: "+201234567890", email: "ahmed@email.com", storeId: "store_xyz", createdAt: Timestamp } // ── STORES ───────────────────────────────────────── stores/{storeId} { id: "store_xyz", ownerId: "firebase_uid", name: "محل أحمد للملابس", slug: "ahmed-clothes", // yourstore.com/ahmed-clothes whatsapp: "+201234567890", currency: "EGP", symbol: "ج", category: "clothes", theme: { primaryColor: "#25D366", fontArabic: true }, workingHours:{ from: "09:00", to: "22:00" }, shipping: [{ zone: "القاهرة", price: 30 }], plan: "free", // free | basic | pro isActive: true, createdAt: Timestamp } // ── PRODUCTS ─────────────────────────────────────── products/{productId} { id: "prod_123", storeId: "store_xyz", name: "تيشيرت أبيض", description: "قطن 100% مريح وخفيف", price: 150, comparePrice:200, // السعر قبل الخصم images: ["url1", "url2"], categoryId: "cat_clothes", variants: [ { name: "المقاس", options: ["S", "M", "L", "XL"] }, { name: "اللون", options: ["أبيض", "أسود"] } ], stock: 50, isAvailable: true, sortOrder: 1 } // ── ORDERS ───────────────────────────────────────── orders/{orderId} { id: "order_789", storeId: "store_xyz", customerName:"محمد علي", customerPhone:"+201111111111", address: "شارع التحرير، القاهرة", items: [ { productId: "p1", name: "تيشيرت", variant: { المقاس: "L" }, price: 150, qty: 2 } ], shippingCost:30, total: 330, status: "new", // new | processing | done | cancelled note: "توصيل بكره لو ممكن", createdAt: Timestamp }

Firestore Security Rules

rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { // المستخدم يشوف بياناته بس match /users/{userId} { allow read, write: if request.auth.uid == userId; } // الكتالوج public — التعديل للمالك بس match /stores/{storeId} { allow read: if true; allow write: if request.auth.uid == resource.data.ownerId; } // المنتجات: قراءة public — كتابة للمالك match /products/{productId} { allow read: if true; allow write: if isOwner(resource.data.storeId); } // الطلبات: أي حد يعمل طلب — القراءة للمالك match /orders/{orderId} { allow create: if true; allow read, update: if isOwner(resource.data.storeId); } function isOwner(storeId) { return request.auth.uid == get(/databases/$(database)/documents/stores/$(storeId)).data.ownerId; } } }

التقنيات المستخدمة

📱
Flutter
iOS + Android من كود واحد
🌐
Flutter Web
صفحة الكتالوج للعميل
🔥
Firebase
Backend كامل وجاهز
🗄️
Firestore
قاعدة بيانات Real-time
🖼️
Firebase Storage
صور المنتجات
🔐
Firebase Auth
تسجيل الدخول
Riverpod
State Management
🔔
FCM
نوتيفيكيشنز الطلبات
💳
Stripe / PayMob
بوابة الدفع
☁️
Cloud Functions
الأتوماتيك والـ webhooks

هيكل المشروع — Clean Architecture

lib/ ├── core/ │ ├── theme/ // ألوان، خطوط، ثيم │ ├── utils/ // whatsapp_helper, currency_formatter │ ├── constants/ // routes, API keys │ └── widgets/ // shared widgets │ ├── features/ │ ├── auth/ │ │ ├── data/ // Firebase Auth repos │ │ ├── domain/ // use cases │ │ └── presentation/ // login, register screens │ │ │ ├── store/ // إعداد وإدارة المحل │ ├── products/ // إضافة وتعديل المنتجات │ ├── orders/ // عرض وإدارة الطلبات │ ├── dashboard/ // الإحصائيات والداشبورد │ └── catalog/ // صفحة العميل — Flutter Web │ └── models/ ├── store_model.dart ├── product_model.dart └── order_model.dart

WhatsApp Message Helper

// lib/core/utils/whatsapp_helper.dart void sendOrderToWhatsApp(Order order, String waNumber) { final buffer = StringBuffer(); buffer.writeln('🛍️ طلب جديد!\n'); for (final item in order.items) { buffer.writeln('• \${item.name} × \${item.qty} = \${item.subtotal} \${order.currency}'); if (item.variant != null) { buffer.writeln(' (\${item.variantText})'); } } buffer.writeln('\n💰 الإجمالي: \${order.total} \${order.currency}'); buffer.writeln('🚚 التوصيل: \${order.shippingCost} \${order.currency}'); if (order.address.isNotEmpty) { buffer.writeln('📍 العنوان: \${order.address}'); } if (order.note.isNotEmpty) { buffer.writeln('📝 ملاحظة: \${order.note}'); } final url = 'https://wa.me/\$waNumber?text=\${Uri.encodeComponent(buffer.toString())}'; launchUrl(Uri.parse(url), mode: LaunchMode.externalApplication); }
1

🏗️ الشهر الأول — الأساس

الأسبوعالمهامالناتج
أسبوع 1تصميم UI/UX على Figma، إعداد Firebase projectWireframes كاملة
أسبوع 2شاشات Auth (تسجيل + دخول) + أونبوردينج المحلAuth يشتغل
أسبوع 3إضافة منتجات + كاتيجوريز + رفع صورCRUD المنتجات
أسبوع 4توليد رابط الكتالوج + صفحة بيسيك للعميلأول كتالوج شغال
2

⚙️ الشهر التاني — القلب

الأسبوعالمهامالناتج
أسبوع 5عربة التسوق + Variants + حساب الإجماليCart يشتغل
أسبوع 6إرسال الطلب على واتساب + حفظه في Firestore⭐ MVP جاهز للاختبار
أسبوع 7شاشة إدارة الطلبات + FCM نوتيفيكيشنزإدارة الطلبات
أسبوع 8الداشبورد (إحصائيات، مبيعات) + بيتا مع 10 محلاتفيدباك حقيقي
3

🚀 الشهر التالت — الإطلاق

الأسبوعالمهامالناتج
أسبوع 9تخصيص الثيم والألوان + مناطق التوصيلPro features
أسبوع 10نظام الاشتراكات + Stripe/PayMobدفع شغال
أسبوع 11بيتا مع 20 محل + إصلاح بجز + أداءتطبيق مستقر
أسبوع 12نشر App Store وPlay Store + إطلاق أول كامبين🎉 إطلاق رسمي
⚠️ نصيحة ذهبية: في الأسبوع 6 لما يكون الـ MVP جاهز، اعرضه على 5 أصحاب محلات حقيقيين مجاناً وخد فيدباك قبل ما تكمل. الفيدباك الحقيقي ده بيوفر عليك أسابيع من التطوير الغلط.

🆓 مجاني

$0/شهر
  • 10 منتجات
  • رابط عادي
  • Branding التطبيق
  • إرسال طلبات واتساب
  • رابط مخصص
  • تقارير

🚀 Pro

$20/شهر
  • منتجات غير محدودة
  • تقارير مبيعات
  • باركود سكانر
  • تحليلات الكتالوج
  • دعم فني أولوية
  • كل مميزات Basic

📊 توقعات العائد الواقعية

بعد 3 شهور — 50 عميل مدفوع × $10 متوسط$500/شهر
بعد 6 شهور — 200 عميل مدفوع × $12 متوسط$2,400/شهر
بعد سنة — 500 عميل مدفوع × $14 متوسط$7,000/شهر
بعد سنتين — 2,000 عميل × $15 متوسط$30,000/شهر
🎯 الهدف الواقعي بعد سنة$7K – $10K / شهر

مصادر دخل إضافية مستقبلية

قبل الإطلاق — الشهر 2 و3

بعد الإطلاق — قنوات التسويق

القناةالاستراتيجية التفصيليةالتكلفةالتأثير
📱 تيك توك / ريلزفيديوهات "قبل وبعد" لمحلات حقيقية — رحلة تحويل المحلمجاناً⭐⭐⭐⭐⭐
👥 جروبات فيسبوكنشر في جروبات أصحاب المحلات والهوم بيزنس والـ resellersمجاناً⭐⭐⭐⭐
🤝 Affiliate Programكل محل يجيب محل تاني = شهر مجاني للإتنينمجاناً⭐⭐⭐⭐⭐
🌐 SEO + مدونةمقالات "كيف تبيع على واتساب" و"أفضل كتالوج للمحلات"منخفض⭐⭐⭐
📢 Meta Adsإعلانات مستهدفة لأصحاب المحلات الصغيرة في مصر والسعودية$200-500/شهر⭐⭐⭐⭐
🤝 بارتنرشيبشركات الشحن + مدربي الأعمال + مؤثرين في ريادة الأعمالعمولة فقط⭐⭐⭐⭐

الـ Viral Loop المدمج في المنتج

🔗

الرابط نفسه إعلان

كل محل بيشارك رابطه = ملايين الناس تشوف اسم التطبيق بشكل طبيعي وأورجانيك

💬

Branding في الرسائل

كل رسالة واتساب في الخطة المجانية فيها "via [اسم التطبيق]" — إعلان مجاني مع كل طلب

📢

Word of Mouth طبيعي

أصحاب المحلات بيتكلموا مع بعض — لما محل ينجح بالأداة، بيحكيلك لأصحابه

تحليل المنافسين

المنافسنقاط ضعفهميزتك عليه
🛒 Shopifyمعقد جداً، غالي، مش عربي، محتاج دومين وخبرة تقنيةجاهز في 10 دقايق بدون أي خبرة
📦 Salla / Zidمتخصص للسعودية، أسعاره أعلى، مش مناسب للصغارمناسب لكل الأحجام وبسعر أرخص
🌿 Wixمش مخصص للعربي، بيتطلب تصميم وخبرةكتالوج جاهز بدون أي تصميم
💬 WA Business Catalogبدائي جداً — مفيش عربة تسوق ولا إدارة طلباتكتالوج احترافي + إدارة كاملة للطلبات
🏠 منافسين محليينUX ضعيف، بطيئين في التطوير، مش بيستمعوا للعملاءFlutter = تجربة سريعة وجميلة

مزاياك التنافسية الحقيقية

🎯

مصمم للعربي

عربي بالكامل، عملات محلية، واتساب في القلب — مش ترجمة من منتج أجنبي

الأسرع على الإطلاق

من التسجيل للمتجر الشغال في أقل من 10 دقايق — بدون تعقيد

💰

السعر الأنسب

أرخص من كل البدائل مع مميزات أكتر تناسب السوق العربي تحديداً

📱

Flutter = تجربة ممتازة

تطبيق سريع وجميل على iOS وAndroid من نفس الكود — UX يتكلم عن نفسه

التحديالحل الفوري (MVP)الحل بعيد المدى
واتساب API مدفوع ومحدودابدأ بـ wa.me links مجاناً — شغالة 100% وبدون قيوددمج WhatsApp Business API في المرحلة التانية
الناس مش بتدفع أونلاين بسهولةفري تريال 14 يوم بدون بطاقة + سعر منخفض جداًدفع بالمحافظ الإلكترونية (فوري، إنستاباي)
المحلات مش تك-سافيأونبوردينج بسيط جداً خطوة بخطوة + فيديو يوتيوبدعم واتساب مباشر + خدمة إعداد مدفوعة
تكلفة Firebase مع النموFirebase Spark مجاني تماماً في البدايةتحويل لـ Supabase + PostgreSQL عند 1000 محل
منافس كبير يقلدكالحصة الأولى + علاقة عملاء قوية = حماية طبيعيةمميزات حصرية وسرعة كبيرة في التطوير
إبقاء العملاء (Churn)أونبوردينج ممتاز + دعم سريع في أول شهربرنامج نقاط ومكافآت للعملاء القدامى
💡 أهم درس: التحدي الأكبر مش التقني — هو اقناع أول 10 محلات يجربوا المنتج ويدفعوا. بعد ما تحقق ده، كل حاجة تانية بتبقى أسهل بكتير.

Product Model

// lib/models/product_model.dart class ProductModel { final String id, storeId, name, description; final double price, comparePrice; final List<String> images; final List<ProductVariant> variants; final int stock; final bool isAvailable; factory ProductModel.fromFirestore(DocumentSnapshot doc) { final data = doc.data() as Map<String, dynamic>; return ProductModel( id: doc.id, storeId: data['storeId'] ?? '', name: data['name'] ?? '', price: (data['price'] ?? 0).toDouble(), comparePrice:(data['comparePrice'] ?? 0).toDouble(), images: List<String>.from(data['images'] ?? []), variants: (data['variants'] ?? []) .map((v) => ProductVariant.fromMap(v)).toList(), stock: data['stock'] ?? 0, isAvailable: data['isAvailable'] ?? true, ); } Map<String, dynamic> toFirestore() => { 'storeId': storeId, 'name': name, 'price': price, 'comparePrice':comparePrice, 'images': images, 'variants': variants.map((v) => v.toMap()).toList(), 'stock': stock, 'isAvailable': isAvailable, }; }

Products Repository

// lib/features/products/data/products_repository.dart class ProductsRepository { final _db = FirebaseFirestore.instance; final _storage = FirebaseStorage.instance; // جلب منتجات المحل Stream<List<ProductModel>> getProducts(String storeId) { return _db .collection('products') .where('storeId', isEqualTo: storeId) .orderBy('sortOrder') .snapshots() .map((s) => s.docs.map(ProductModel.fromFirestore).toList()); } // إضافة منتج جديد Future<void> addProduct(ProductModel product, List<File> images) async { final imageUrls = await _uploadImages(images); final data = product.toFirestore(); data['images'] = imageUrls; await _db.collection('products').add(data); } // رفع الصور Future<List<String>> _uploadImages(List<File> images) async { final urls = <String>[]; for (final img in images) { final ref = _storage.ref('products/\${DateTime.now().millisecondsSinceEpoch}.jpg'); await ref.putFile(img); urls.add(await ref.getDownloadURL()); } return urls; } }

Orders Provider (Riverpod)

// lib/features/orders/providers/orders_provider.dart final ordersProvider = StreamProvider.family<List<OrderModel>, String>( (ref, storeId) { return FirebaseFirestore.instance .collection('orders') .where('storeId', isEqualTo: storeId) .orderBy('createdAt', descending: true) .snapshots() .map((s) => s.docs.map(OrderModel.fromFirestore).toList()); }, ); final updateOrderStatusProvider = Provider((ref) { return (String orderId, String status) async { await FirebaseFirestore.instance .collection('orders') .doc(orderId) .update({'status': status}); }; });
1

📋 الأسبوع الأول — الإعداد

  • اعمل wireframes للشاشات الأساسية على Figma أو حتى ورقة وقلم
  • سجل Firebase project مجاناً وابدأ إعداد Firestore وAuth
  • اعمل لاندينج بيج بسيطة تجمع emails محلات مهتمة (Google Forms كفاية)
  • اتكلم مع 10 أصحاب محلات حقيقيين وسألهم عن مشاكلهم اليومية
2

🛠️ الشهر الأول — ابدأ الكود

  • ابدأ بـ Auth أول حاجة — تسجيل دخول بالتليفون أو الإيميل
  • بعدين أونبوردينج المحل — اسم، واتساب، عملة
  • بعدين إضافة منتج واحد بسيط بصورة وسعر
  • ابدأ تعمل محتوى تيك توك عن رحلة بناء المشروع — بيجيب متابعين بسرعة
3

🎯 أول إطلاق — أهم هدف

  • استهدف أول 10 محلات راضية ومستخدمة التطبيق يومياً
  • ده أهم من أي عائد مادي في البداية — الـ testimonials دي هي محرك النمو
  • بعد الـ 10 محلات، استهدف أول 50 عميل مدفوع في الشهر الأول بعد الإطلاق
  • اعمل ديسكاونت خاص لأول 100 عميل — Early Bird بسعر $7/شهر مدى الحياة

🎯 المبدأ الذهبي

مش المال هو الهدف الأول. أول هدف حقيقي هو 10 محلات راضية وبتستخدم التطبيق يومياً. لما تحقق ده، كل حاجة تانية — المال، النمو، التوسع — بتييجي لوحدها. ابدأ صغير، تعلم بسرعة، واكبر بثقة.

ملخص الأرقام المهمة

المرحلةالوقتالهدفالعائد المتوقع
🌱 الإطلاقشهر 310 محلات مجانية راضية$0 — بناء ثقة
🌿 النمو الأولشهر 4-650 عميل مدفوع$500 – $700/شهر
🌳 الاستقرارشهر 7-12200-500 عميل$2,400 – $7,000/شهر
🚀 التوسعسنة 22,000+ عميل$25,000 – $35,000/شهر