১. মূল কনসেপ্ট ও বিজনেস মডেল SaaS ও Multi-Tenancy: প্রজেক্টটি হবে একটি মাল্টি-টেন্যান্ট SaaS (Software as a Service) প্ল্যাটফর্ম। প্রতিটি রিসেলার সাবডোমেন (যেমন: reseller1.domain.com) অথবা কাস্টম ডোমেন যুক্ত করতে পারবে। রিসেলার মডেল (যেমন: BDShop বা Dropshop): রিসেলাররা সরাসরি নিজস্ব স্টোর বা পোর্টাল পাবে, কিন্তু পণ্য সরবরাহ ও নিয়ন্ত্রণ থাকবে মূল অ্যাডমিনের হাতে। ২. ইউজার ফ্লো (User Flow) রেজিস্ট্রেশন ও ভেরিফিকেশন: রিসেলার ওয়েবসাইটে এসে অ্যাকাউন্ট খুলবে। নতুন অ্যাকাউন্টের স্ট্যাটাস থাকবে Pending। অ্যাডমিন প্যানেল থেকে অ্যাডমিন রিভিউ করে অ্যাকাউন্টটি Approve করবেন। ড্যাশবোর্ড ও প্রোডাক্ট অ্যাক্সেস: অ্যাকাউন্ট অ্যাপ্রুভ হলে রিসেলার তার নিজস্ব প্যানেলে লগইন করতে পারবে। অ্যাডমিন ঠিক করে দেবেন কোন রিসেলার কোন কোন প্রোডাক্ট দেখতে ও বিক্রি করতে পারবে (ডাইনামিক প্রোডাক্ট অ্যাক্সেস)। ৩. প্রাইসিং ও কমিশন লজিক (সবচেয়ে গুরুত্বপূর্ণ অংশ) রিসেলার-ভিত্তিক আলাদা দাম (Dynamic Pricing): একই প্রোডাক্ট একেক রিসেলারের কাছে একেক দামে দেখানো বা সেট করার সুযোগ থাকতে হবে (যেমন: রিসেলার A-র কাছে ৳৫, রিসেলার B-র কাছে ৳১০)। কমিশন মডেল: Percentage (%): শতাংশ হারে কমিশন (যেমন: ১০০ টাকার প্রোডাক্টে ৫%)। Fixed Amount: নির্দিষ্ট টাকার অংকে ফিক্সড কমিশন। ৪. কুরিয়ার ও লজিস্টিকস আপাতত Steadfast Courier এপিআই ইন্টিগ্রেশন থাকতে হবে, যাতে সরাসরি প্ল্যাটফর্ম থেকেই অর্ডার পাঠানো ও ট্র্যাক করা যায়। ৫. টেকনিক্যাল দিক ও ডেভেলপমেন্ট শুরুর নির্দেশনা টেক স্ট্যাক: Laravel (স্ক্র্যাচ থেকে অথবা কোনো লারাভেল ইকমার্স স্ক্রিপ্ট/থিম কাস্টমাইজ করে)। মাল্টি-টেন্যান্সি হ্যান্ডলিং: লারাভেলের মাল্টি-টেন্যান্সি প্যাকেজ (যেমন: stancl/tenancy) অথবা কাস্টম টেন্যান্ট আর্কিটেকচার ব্যবহার করে ডোমেন/সাবডোমেন ম্যাপিং করতে হবে। # Development Prompt — Multi-Tenant Reseller SaaS Platform (Laravel) > এই প্রম্পটটি সরাসরি Claude Code বা যেকোনো AI কোডিং অ্যাসিস্ট্যান্টে পেস্ট করে ব্যবহার করতে পারো প্রজেক্ট শুরু করার জন্য। --- ## Project Brief আমি একটি **Multi-Tenant SaaS Reseller Platform** বানাচ্ছি Laravel দিয়ে (BDShop/Dropshop-এর মতো মডেল)। নিচের স্পেসিফিকেশন অনুযায়ী প্রজেক্ট সেটআপ ও ডেভেলপ করো। ### Business Model - এটি একটি multi-tenant SaaS platform যেখানে প্রতিটি reseller নিজস্ব subdomain (`reseller1.domain.com`) অথবা custom domain দিয়ে নিজস্ব স্টোর/পোর্টাল পাবে। - Product catalog ও stock কেন্দ্রীয়ভাবে (Super Admin) নিয়ন্ত্রিত হবে; resellerরা শুধু নির্ধারিত পণ্য নিজেদের দামে বিক্রি করবে। ### User Flow 1. Reseller ওয়েবসাইটে রেজিস্ট্রেশন করবে → status `pending`। 2. Super Admin panel থেকে review করে `approved`/`rejected` করবে। 3. Approved হলে reseller নিজের subdomain panel-এ লগইন করে ড্যাশবোর্ড পাবে। 4. Admin ঠিক করে দেবেন কোন reseller কোন কোন product দেখতে/বিক্রি করতে পারবে (per-reseller product visibility)। ### Pricing & Commission Logic (কোর ফিচার) - প্রতিটি product-এর জন্য প্রতিটি reseller আলাদা selling price সেট/override করতে পারবে (override না থাকলে base price ব্যবহার হবে)। - কমিশন দুই ধরনের হতে পারে: **Percentage (%)** অথবা **Fixed Amount** — reseller-level default এবং product-level override দুই লেয়ারে সেট করা যাবে। - অর্ডার প্লেস হওয়ার সময় দাম ও কমিশন **snapshot** করে order_items-এ সেভ হবে, যাতে পরে দাম পরিবর্তন হলে পুরনো অর্ডারের হিসাব প্রভাবিত না হয়। ### Courier Integration - Steadfast Courier API ইন্টিগ্রেশন করতে হবে — অর্ডার সরাসরি প্ল্যাটফর্ম থেকে পাঠানো ও status track করা যাবে (Laravel Queue Job ব্যবহার করে async করতে হবে)। --- ## Tech Stack - **Backend:** Laravel (সর্বশেষ LTS ভার্সন) - **Multi-tenancy:** Single database, row-level tenancy — database-per-tenant নয়। Domain/subdomain resolve করে middleware দিয়ে `reseller_id` context বাইন্ড হবে, Eloquent Global Scope দিয়ে অটো-ফিল্টার হবে। - **Auth & Roles:** `spatie/laravel-permission` - **Media:** `spatie/laravel-medialibrary` - **Audit log:** `spatie/laravel-activitylog` - **Queue:** Database বা Redis driver, Steadfast API কল ও কমিশন প্রসেসিং async job হিসেবে চলবে - **Frontend:** Blade + Livewire/Alpine.js (অথবা প্রয়োজনে বলো আলাদা) --- ## Database Schema (নিচের টেবিলগুলো migration আকারে বানাও) - `resellers` — owner_user_id, business_name, subdomain, status(pending/approved/suspended/rejected), approved_at, approved_by, commission_default_type, commission_default_value, wallet_balance, logo, theme_color, settings(json) - `domains` — reseller_id, domain, is_custom, is_verified - `users` — user_type(super_admin/reseller_owner/reseller_staff/customer), reseller_id(nullable) - `categories` — parent_id, name, slug - `products` — category_id, name, slug, sku, description, base_price, stock_quantity, status - `product_images` — product_id, image_path, is_primary - `reseller_products` — reseller_id, product_id, is_visible, selling_price(nullable), commission_type(nullable), commission_value(nullable), unique(reseller_id, product_id) - `customers` — reseller_id, name, phone, address, district, thana - `orders` — reseller_id, customer_id, order_number, subtotal, delivery_charge, total_amount, total_commission, payment_status, order_status - `order_items` — order_id, product_id, quantity, unit_price(snapshot), unit_commission(snapshot) - `wallet_transactions` — reseller_id, order_id(nullable), type(commission_credit/withdrawal/adjustment), amount, status(pending/completed/rejected), note - `withdrawal_requests` — reseller_id, amount, method, account_details(json), status, processed_by - `courier_shipments` — order_id, provider, consignment_id, tracking_code, status, raw_response(json) - `activity_logs` — (spatie প্যাকেজ দিয়ে অটো হ্যান্ডেল) --- ## কাজ যেভাবে ধাপে ধাপে করাতে চাই (Claude Code-কে এই অর্ডারে এগোতে বলো) 1. **Project setup** — নতুন Laravel প্রজেক্ট init, `.env` কনফিগ, প্রয়োজনীয় প্যাকেজ ইনস্টল। 2. **Migrations & Models** — উপরের সব টেবিলের migration + Eloquent model + relationships লেখা। 3. **Tenant resolution middleware** — domain থেকে `reseller_id` resolve করার middleware ও `BelongsToReseller` trait/global scope। 4. **Auth & Roles** — Super Admin, Reseller Owner/Staff, Customer রোল সেটআপ (spatie/laravel-permission)। 5. **Reseller registration + Admin approval flow** — registration ফর্ম, pending status, admin approval UI/API। 6. **Product management (Admin)** — CRUD, image upload, category, per-reseller visibility টগল। 7. **Pricing & Commission service layer** — `PricingService`, `CommissionService` ক্লাস যা override/default লজিক হ্যান্ডেল করবে। 8. **Reseller storefront** — product listing (visible + priced per reseller), cart, checkout। 9. **Order management** — order creation, order_items snapshot logic, order status ট্র্যাকিং। 10. **Wallet & withdrawal** — কমিশন credit (pending → completed on delivery), withdrawal request flow। 11. **Steadfast Courier integration** — API service class, order push, status sync job। 12. **Admin dashboard & reports** — reseller list/approval, sales overview, commission report। --- ## নির্দেশনা AI-কে - প্রতিটি ধাপ শেষে migration রান করে ভেরিফাই করো এবং সংক্ষিপ্ত সারাংশ দাও কী করা হলো। - দাম/কমিশন ক্যালকুলেশন কখনো Controller-এ hardcode কোরো না — সবসময় Service class ব্যবহার করবে। - সিকিউরিটি: এক reseller যেন কোনোভাবেই middleware/scope বাইপাস করে অন্য reseller-এর ডাটা (orders, customers, wallet) না দেখতে পারে — এটা টেস্ট কেস দিয়ে ভেরিফাই করো। - এখন থেকে **ধাপ ১ (Project setup ও Migrations)** দিয়ে শুরু করো।