# DigitalWorkshop — আজকে রান করার সম্পূর্ণ গাইড (A to Z)

এই একটা ফাইল অনুসরণ করলেই যথেষ্ট। উপর থেকে নিচে, একটার পর একটা কমান্ড চালান।

---

## ধাপ ০: যা যা লাগবে (একবারই ইনস্টল করতে হবে)

1. **Docker Desktop** ইনস্টল করুন: https://www.docker.com/products/docker-desktop/
   - ইনস্টল হয়ে গেলে Docker Desktop অ্যাপটা **খুলে চালু রাখুন** (ব্যাকগ্রাউন্ডে চলতে থাকবে)
2. **টার্মিনাল** খুলুন:
   - Windows: Docker Desktop-এর সাথেই আসা **Git Bash** ব্যবহার করুন (PowerShell/CMD-এ কিছু কমান্ড কাজ নাও করতে পারে)
   - Mac: Terminal অ্যাপ
   - Linux: যেকোনো টার্মিনাল
3. ইন্টারনেট কানেকশন থাকতে হবে (Laravel/Next.js ডাউনলোড করার জন্য)

---

## ধাপ ১: প্রজেক্ট ফোল্ডার তৈরি

আমার পাঠানো `digitalworkshop-full-setup.zip` ফাইলটা extract করুন। টার্মিনালে সেই ফোল্ডারে যান:

```bash
cd path/to/digitalworkshop
```

---

## ধাপ ২: Laravel-এর মূল ফ্রেমওয়ার্ক ডাউনলোড করুন

আমি যে কোড (Models, Controllers, migrations) আগে থেকে লিখে দিয়েছি সেটা Laravel-এর "কঙ্কাল"-এর উপর বসাতে হবে। এই কমান্ডটা Docker দিয়ে Laravel ডাউনলোড করবে একটা temporary ফোল্ডারে:

```bash
docker run --rm -v "$(pwd)":/work -w /work composer create-project laravel/laravel laravel_tmp "^11.0"
```

⏳ এতে ২-৫ মিনিট লাগতে পারে (ইন্টারনেট স্পিডের উপর নির্ভর করে)।

---

## ধাপ ৩: আমার লেখা কোডের সাথে মিলিয়ে দিন

```bash
cp -R -n laravel_tmp/. backend/
rm -rf laravel_tmp
```

`-n` মানে হলো যদি `backend/` ফোল্ডারে আগে থেকেই কোনো ফাইল থাকে (যেমন আমার লেখা `app/Models/`, `routes/api.php`), সেটা **ওভাররাইট হবে না** — শুধু Laravel-এর বাকি দরকারি ফাইল (vendor/, artisan, public/ ইত্যাদি) যোগ হবে।

---

## ধাপ ৪: Environment ফাইল সেট করুন

```bash
cp backend/.env.example backend/.env
```

httpSMS API key থাকলে এখনই `backend/.env` ফাইল খুলে বসিয়ে দিন:
```
HTTPSMS_API_KEY=আপনার-key
HTTPSMS_FROM_NUMBER=+8801XXXXXXXXX
```
(না থাকলে চিন্তা নেই, `debug_otp` রেসপন্সে OTP দেখা যাবে টেস্টের জন্য)

---

## ধাপ ৫: সব সার্ভিস চালু করুন

```bash
docker compose up -d --build
```

⏳ প্রথমবার ৩-৫ মিনিট লাগবে (PostgreSQL, Redis, Meilisearch, Node.js, PHP সব ডাউনলোড হবে)।

চেক করুন সব চলছে কিনা:
```bash
docker compose ps
```
সবগুলোর STATUS-এ "Up" দেখা উচিত।

---

## ধাপ ৬: App key + API authentication (Sanctum) সেটআপ

```bash
docker compose exec app php artisan key:generate
docker compose exec app php artisan install:api
```

মাঝে জিজ্ঞেস করবে "yes/no" — **yes** চাপুন।

---

## ধাপ ৭: ডাটাবেস টেবিল তৈরি + ডেমো ডেটা

```bash
docker compose exec app php artisan migrate --seed
```

এতে তৈরি হবে:
- সব টেবিল (users, vendors, products, orders...)
- একটা **Admin/কাস্টমার কেয়ার ইউজার**: ফোন `01700000000`, পাসওয়ার্ড `password`
- ৫টা ডেমো ক্যাটাগরি (ইলেকট্রনিক্স, ফ্যাশন, হোম ও লিভিং...)

---

## ধাপ ৮: চেক করুন সব ঠিক আছে কিনা

ব্রাউজারে খুলুন:
- **Backend API**: http://localhost:8080/api/products → `{"data":[]}` দেখা উচিত (এখনো কোনো প্রোডাক্ট নেই, এটাই স্বাভাবিক)
- **Frontend ওয়েবসাইট**: http://localhost:3000 → "DigitalWorkshop 🛍️" হোমপেজ দেখা উচিত

---

## ধাপ ৯: টেস্ট করুন — Admin দিয়ে লগইন

```bash
curl -X POST http://localhost:8080/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"phone":"01700000000","password":"password"}'
```

রেসপন্সে একটা `token` পাবেন — সেটা কপি করে রাখুন, পরের ধাপে লাগবে।

---

## ধাপ ১০: টেস্ট করুন — নতুন কাস্টমার রেজিস্ট্রেশন

```bash
curl -X POST http://localhost:8080/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{"name":"Karim Uddin","phone":"01711111111","password":"secret123","password_confirmation":"secret123"}'
```

রেসপন্সে `debug_otp` ফিল্ডে ৬ ডিজিটের কোড পাবেন (যদি httpSMS সেটআপ না করে থাকেন)। এটা দিয়ে ভেরিফাই করুন:

```bash
curl -X POST http://localhost:8080/api/auth/verify-otp \
  -H "Content-Type: application/json" \
  -d '{"phone":"01711111111","code":"এখানে_OTP_বসান"}'
```

---

## সমস্যা হলে (Troubleshooting)

| সমস্যা | সমাধান |
|---|---|
| `docker compose up` এ error | Docker Desktop চালু আছে কিনা চেক করুন |
| Port 8080/5432/3000 already in use | অন্য কোনো প্রোগ্রাম সেই পোর্ট ব্যবহার করছে, বন্ধ করুন অথবা `docker-compose.yml`-এ পোর্ট নাম্বার বদলান |
| `composer create-project` কমান্ডে network error | ইন্টারনেট কানেকশন চেক করুন |
| migration চালাতে গিয়ে error | `docker compose logs app` দিয়ে দেখুন আসল error কী |
| frontend সাদা পেজ দেখাচ্ছে | `docker compose logs frontend` চেক করুন, npm install শেষ হয়েছে কিনা |

**কোথাও আটকে গেলে, ঠিক যে error message দেখাচ্ছে সেটা কপি করে আমাকে পাঠান — আমি দেখে বলে দেব কী সমস্যা।**

---

## সব বন্ধ করতে চাইলে
```bash
docker compose down
```
(ডেটা মুছবে না, শুধু কন্টেইনার বন্ধ হবে। আবার শুরু করতে `docker compose up -d`)

## সব মুছে একদম নতুন করে শুরু করতে চাইলে
```bash
docker compose down -v
```
(⚠️ `-v` দিলে ডাটাবেসের সব ডেটা মুছে যাবে)
