Ecommerce Backend Blueprint

মূল টেবিল কাঠামো + আলাদা উদাহরণ টেবিল (প্রতি মডিউলে নিচে Analogy Data)

Module wise table + real examples

০১. Authentication & User Access

লগইন, টোকেন, অ্যাডমিন ও স্টাফ ইউজার ম্যানেজমেন্ট

টেবিল নামধরণউদ্দেশ্যলিস্ট পেজ কলামঅ্যাকশন
usersIndependentadmin, manager, staffSL, নাম, ইমেইল, ভূমিকা, স্ট্যাটাস
personal_access_tokensDependentAPI টোকেন সংরক্ষণইউজার, টোকেন নাম, শেষ ব্যবহার, তৈরির তারিখ Revoke
📌 Analogy Data (বাস্তব উদাহরণ) - Module 01
টেবিলউদাহরণ - ১উদাহরণ - ২
users👨‍💻 রফিক আহমেদ (rafiq@ecom.com) → Super Admin, Active, last login: today👩‍💼 শারমিন আক্তার (sharmin@shop.com) → Product Manager, Active, created: 2025-03-10
personal_access_tokensরফিকের টোকেন: "mobile_app", শেষ ব্যবহার ২০২৫-০৪-২০, IP: 192.168.1.1শারমিনের টোকেন: "web_session", ২০২৫-০৪-১৯, expires in 30 days
ধারণা: ইউজারদের আলাদা ভূমিকা + API টোকেন মোবাইল/ওয়েব অ্যাক্সেসের জন্য।

০২. Roles & Permissions

অ্যাক্সেস কন্ট্রোল, ভূমিকা ও অনুমতি

টেবিল নামধরণউদ্দেশ্যলিস্ট পেজ কলামঅ্যাকশন
rolesIndependentরোল ডিফাইনরোল নাম, পারমিশন কাউন্ট, তৈরির তারিখ
permissionsIndependentঅ্যাকশন অনুমতিগ্রুপ, পারমিশন নাম
model_has_rolesBridgeইউজার ↔ রোল সংযোগইউজার, অ্যাসাইনড রোল Sync
role_has_permissionsBridgeরোলের সাথে পারমিশন যোগরোল, পারমিশন লিস্ট
📌 Analogy Data - Module 02 (Roles & Permissions)
টেবিলউদাহরণ - ১উদাহরণ - ২
rolessuper_admin → সব permissions আছেorder_manager → শুধু orders.view, orders.update
permissionsproducts.create (প্রোডাক্ট তৈরির অনুমতি)orders.cancel (অর্ডার বাতিল করার অনুমতি)
model_has_rolesরফিক (user_id=1) → super_adminশারমিন (user_id=2) → order_manager
role_has_permissionssuper_admin → products.* , orders.* , users.*order_manager → orders.view, orders.update
উদাহরণ: সুপার অ্যাডমিন সবকিছু, অর্ডার ম্যানেজার শুধু অর্ডার দেখতে ও আপডেট করতে পারে।

০৩. Category Management

প্যারেন্ট-চাইল্ড স্ট্রাকচার

টেবিল নামধরণউদ্দেশ্যলিস্ট পেজ কলামঅ্যাকশন
categoriesSelf Dep.প্রোডাক্ট ক্যাটাগরিনাম, প্যারেন্ট, স্লাগ, স্ট্যাটাস
📌 Analogy Data - Module 03 (Category)
টেবিলউদাহরণ - ১উদাহরণ - ২
categories📁 ইলেকট্রনিক্স (parent: null, status: active, sort: 1)📱 স্মার্টফোন (parent: ইলেকট্রনিক্স, status: active) → child of electronics
categories (২য় উদাহরণ)🍔 ফ্রেশ ফুড (parent: null , active)🥤 বেভারেজস (parent: null, active, sort: 2)
বাস্তব উদাহরণ: "ইলেকট্রনিক্স" এর অধীনে "মোবাইল", "ল্যাপটপ" রাখা যায়।

০৪. Brand Management

ব্র্যান্ড পরিচিতি

টেবিল নামধরণউদ্দেশ্যলিস্ট পেজ কলামঅ্যাকশন
brandsIndependentপ্রোডাক্ট ব্র্যান্ডলোগো, নাম, স্লাগ, স্ট্যাটাস, সর্ট অর্ডার
📌 Analogy Data - Module 04 (Brand)
টেবিলউদাহরণ - ১উদাহরণ - ২
brands🏷️ Samsung (logo: samsung.png, active, sort_order 1)🏷️ Walton (active, sort_order 2)
brands (extra)🍪 Nest Fresh (inactive, logo: nest.png)📱 OnePlus (active, sort_order 3)

০৫. Product Catalog & Pack Size

প্রোডাক্ট, প্যাকেট সাইজ ও দাম

টেবিল নামধরণউদ্দেশ্যলিস্ট পেজ কলামঅ্যাকশন
productsDependentমূল প্রোডাক্ট তথ্যছবি, নাম, SKU, ক্যাটাগরি, ব্র্যান্ড, স্ট্যাটাস প্যাক সাইজ
product_pack_sizesDependentপ্যাক সাইজ অনুযায়ী দামপ্রোডাক্ট, প্যাকের নাম, পরিমাণ, বিক্রয়মূল্য, ডিফল্ট
📌 Analogy Data - Module 05 (Product & Pack Size)
টেবিলউদাহরণ - ১উদাহরণ - ২
products🥤 "ফ্রেশ কোমলাপানীয়" (SKU: FIZZ01, Cat: Beverage, Brand: Nest Fresh, Active)🍪 "চকোলেট ক্রাঞ্চ" (SKU: CHOC22, Cat: Snacks, Brand: Dan Cake, Active)
product_pack_sizesফ্রেশ কোমলা → ৫০০ml বোতল (মূল্য ৩৫ টাকা, cost ২৫, profit ১০ টাকা, ডিফল্ট: হ্যাঁ)ফ্রেশ কোমলা → ১.৫ লিটার (মূল্য ৭৫ টাকা, cost ৫৫, profit ২০ টাকা)
product_pack_sizes (2nd product)চকোলেট ক্রাঞ্চ → ৫০ গ্রাম (মূল্য ২০ টাকা, cost ১২, profit ৮ টাকা, default: yes)চকোলেট ক্রাঞ্চ → ১০০ গ্রাম (মূল্য ৩৮ টাকা, cost ২২, profit ১৬ টাকা)
সহজ উদাহরণ: একটি প্রোডাক্টের একাধিক প্যাক সাইজ - ছোট বোতল, বড় বোতল। প্রতিটির আলাদা দাম ও লাভ।

০৬. Vendor & Purchase Costing (Future)

সরবরাহকারী, পাইকারি ক্রয় ও খরচ

টেবিল নামধরণউদ্দেশ্যলিস্ট পেজ কলামঅ্যাকশন
vendorsIndependentসাপ্লায়ারনাম, ফোন, ঠিকানা, স্ট্যাটাস
product_purchase_batchesDependentব্যাচ অনুযায়ী ক্রয় ও ল্যান্ডেড কস্টব্যাচ নং, ভেন্ডর, প্রোডাক্ট, পরিমাণ, ল্যান্ডেড কস্ট খরচ যোগ
product_purchase_expensesDependentঅতিরিক্ত খরচ (bKash, কুরিয়ার)খরচের ধরন, পরিমাণ, নোট Edit/Remove
📌 Analogy Data - Module 06 (Vendor & Purchase)
টেবিলউদাহরণ - ১উদাহরণ - ২
vendors🏭 "বেভারেজ সোর্স লিমিটেড" (ঢাকা, ০১৭xxxx, সক্রিয়)🏭 "প্যাকট্রেড ইন্টারন্যাশনাল" (চট্টগ্রাম, সক্রিয়)
product_purchase_batches📦 ব্যাচ #B001: ৫০০ কেজি ফ্রেশ কোমলা সিরাপ, মোট ক্রয় ৫০,০০০ টাকা, ল্যান্ডেড ৫৮,০০০ টাকা📦 ব্যাচ #B002: ৩০০ কেজি চকলেট ক্রাঞ্চ, ক্রয় ২১,০০০ টাকা, ল্যান্ডেড ২৫,০০০ টাকা
product_purchase_expensesব্যাচ #B001 → bKash চার্জ ৪৫০ টাকা, পরিবহন ১২০০ টাকাব্যাচ #B001 → প্যাকেজিং খরচ ৮০০ টাকা, লেবার ৩৫০ টাকা
ধারণা: পণ্য কিনতে বাড়তি খরচ (bKash চার্জ, কুরিয়ার) যোগ করলে মোট পণ্যের দাম বেড়ে যায়।

০৭. Inventory & Stock (Future)

স্টক ইন/আউট, প্যাকেট অনুযায়ী বর্তমান স্টক

টেবিল নামধরণউদ্দেশ্যলিস্ট পেজ কলামঅ্যাকশন
inventory_transactionsDependentস্টক মুভমেন্ট হিস্টোরিপ্রোডাক্ট, প্যাক, টাইপ (IN/OUT), পরিমাণ, রেফারেন্স
product_stocksDependentবর্তমান স্টক দ্রুত দেখাপ্রোডাক্ট, প্যাক, বর্তমান স্টক, রিজার্ভেড অ্যাডজাস্ট
📌 Analogy Data - Module 07 (Stock & Inventory)
টেবিলউদাহরণ - ১উদাহরণ - ২
inventory_transactions📈 ফ্রেশ কোমলা ৫০০ml → IN +২০০ পিস (পিও #PO101, তারিখ ২০২৫-০৪-১০)📉 ফ্রেশ কোমলা ৫০০ml → OUT -৪৫ পিস (অর্ডার #ORD100, ২০২৫-০৪-১৫)
product_stocks📦 ফ্রেশ কোমলা 500ml → current stock 155, reserved 10 (available 145)🍫 চকোলেট ক্রাঞ্চ 50gm → current stock 340, reserved 20
হিসেব: ২০০ পিস ইন - ৪৫ পিস আউট = বর্তমান স্টক ১৫৫ (যা product_stocks টেবিলে দেখা যাচ্ছে)

০৮. Sales & Employee Tracking

গ্রাহক, অর্ডার, কর্মচারী ভিত্তিক বিক্রয় ও লাভ

টেবিল নামধরণউদ্দেশ্যলিস্ট পেজ কলামঅ্যাকশন
customersIndependentক্রেতা প্রোফাইলনাম, ফোন, ইমেইল, স্ট্যাটাস
ordersDependentমাস্টার অর্ডারঅর্ডার নং, গ্রাহক, কর্মচারী, টোটাল, স্ট্যাটাস
order_itemsDependentঅর্ডারের ভিতরে পণ্য ও লাভপণ্য, প্যাক, পরিমাণ, বিক্রয়মূল্য, লাভ
📌 Analogy Data - Module 08 (Sales & Employee)
টেবিলউদাহরণ - ১উদাহরণ - ২
customers👩 আফরিন সুলতানা (afrin@gmail.com, ০১৯xxxx, Dhaka, active)👨 মেহেদী হাসান (mehedi@gmail.com, ০১৭xxxx, active)
orders🧾 #ORD100 → আফরিন, কর্মচারী: রফিক, মোট ৩২০ টাকা, ডেলিভারি সম্পন্ন🧾 #ORD101 → মেহেদী, কর্মচারী: শারমিন, মোট ৫৪০ টাকা, প্রসেসিং
order_itemsঅর্ডার #ORD100: ফ্রেশ কোমলা ৫০০ml (২ পিস), বিক্রয় ৭০, cost ৫০ → লাভ ৪০অর্ডার #ORD100: চকলেট ক্রাঞ্চ (১ পিস), বিক্রয় ২০, cost ১২ → লাভ ৮ টাকা
কর্মচারী ভিত্তিক বিক্রয়: রফিক বিক্রি করল ৩২০ টাকার অর্ডার, তাতে মোট লাভ ৪৮ টাকা, ট্র্যাক করা সহজ।
📌 কিভাবে বোঝা সহজ করা হয়েছে?

প্রতিটি মডিউলের মূল টেবিলের নিচে আলাদা Analogy Data টেবিল যুক্ত করা হয়েছে। সেখানে প্রতিটি টেবিলের জন্য কমপক্ষে ২টি করে বাস্তব উদাহরণ দেওয়া আছে — যেমন রফিক/শারমিন, ফ্রেশ কোমলার প্যাক সাইজ, অর্ডার ইত্যাদি। মূল টেবিলের গঠন অপরিবর্তিত রেখে সহজ উদাহরণ দিয়ে ডাটাবেস রিলেশন বোঝা যাচ্ছে।