# Update karne ke steps — shamsischool.edu.pk

**Jawab pehle: sirf do zip upload karna kaafi NAHI.** Paanch qadam hain, kul ~15 minute.
Sirf zip upload karne se uploads ka masla waisa hi rahega aur nayi screens 403 dengi.

| # | Kaam | Kyun zaroori |
|---|---|---|
| 1 | Backup | Wapas jaane ka raasta |
| 2 | Backend zip | Naya code |
| 3 | **`.env` mein `UPLOADS_DIR`** | Iske baghair har nayi image 404 rahegi |
| 4 | **`qa-fixes.sql`** | Naya table + naya column + data ki safai |
| 5 | Frontend zip + RESTART | Nayi site |

> **npm install ki zaroorat NAHI** — koi naya package nahi laga (check kar liya hai).

---

## 1. Backup — skip na karein

**cPanel → phpMyAdmin → apna database → Export → Go**

`.sql` file apne computer par rakh lein. Kuch ulta ho to yahi wapsi ka raasta hai.

---

## 2. Backend upload

1. File Manager → Node app ka folder (`shamsi-api` ya jo bhi aapne banaya)
2. **Upload** → `shamsi-backend-live.zip`
3. Right-click → **Extract** → **purani files replace/overwrite** kar dein
4. Zip delete kar dein

> `.env` zip mein **nahi** hai — aapki maujooda `.env` mehfooz rahegi.

---

## 3. `.env` mein `UPLOADS_DIR`  ⚠️ sabse ahem qadam

Abhi live par ye set **nahi** hai. Isi wajah se 15 September ke baad ki har image/PDF
upload hone ke baad **404** de rahi hai — upload kamyab dikhta hai, file kabhi khulti nahi.

1. File Manager → Node app ka folder → `.env` par right-click → **Edit**
2. Ye line add karein (ya theek karein):

```ini
UPLOADS_DIR=/home/shamciii/public_html/uploads
```

3. Saath hi tasdeeq kar lein ke ye bhi mojood hai:

```ini
SYNC_SCHEMA=false
```

4. **Save**

> `public_html/uploads` folder mojood hona chahiye. Na ho to File Manager se bana lein,
> permissions **755**.

Naya code boot par hi is ghalti ki ittila de deta hai — restart ke baad
*stderr.log* mein `⚠️ UPLOADS_DIR .env mein set NAHI hai` likha aaye to matlab line
nahi lagi.

---

## 4. Database — `qa-fixes.sql`

**cPanel → phpMyAdmin → apna database → SQL tab** → poori file paste karein → **Go**

Ye kya karti hai:

| | |
|---|---|
| **naya table** | `contact_messages` — contact form + admission registration |
| **naya column** | `governing_bodies.sort_order` — tarteeb wali screen ke liye |
| **gallery** | `media_type` par lage quotes hataati hai (48 rows chhupi hui thin) |
| **khali titles** | news/events/jobs — description ki pehli line se bhar deti hai |
| **glimpses** | `file_type` `'1'/'2'` → `image`/`video` |
| **slider** | duplicate aur khali slide numbers theek karti hai |
| **permissions** | Administrator role ko 3 naye permissions deti hai |
| **indexes** | duplicate `email_2 … email_64` girati hai (503 wali purani wajah) |

Ye **idempotent** hai — dobara chalayein to bhi nuqsan nahi. Data delete nahi hota.

Aakhir mein tasdeeqi queries chalti hain. Ye dekhein:

| Query | Apekshit |
|---|---|
| blank titles | news / events / jobs — teenon **0** |
| media_type | sirf `image` / `video`, koi quotes nahi |
| indexes | koi table **10 se kam** (64 ke aas paas **nahi**) |
| governing sort_order | koi duplicate nahi |
| slider | 1, 2, 3 … lagatar |

---

## 5. Frontend + restart

1. File Manager → `public_html`
2. **Upload** → `shamsi-frontend-live.zip` → **Extract** (overwrite)
3. Zip delete
4. **cPanel → Setup Node.js App → RESTART**

> `.htaccess` zip mein shamil hai. Agar aapne pehle usmein Passenger block manually
> lagaya tha, to extract ke baad dobara check kar lein ke woh block sabse upar mojood hai.

---

## Tasdeeq — 6 cheezein, 3 minute

1. `https://shamsischool.edu.pk/api/health`
   → `"db":"connected"` aur `"uploads":"/home/shamciii/public_html/uploads"`
   *(agar `uploads` abhi bhi purana path dikhaye to qadam 3 nahi laga)*

2. Home page → slider ki image **saaf** (koi dark parat nahi), upar koi heading nahi,
   neeche beech mein dots

3. `https://shamsischool.edu.pk/contact` → form bhar kar **Send** → success message aana chahiye

4. `https://shamsischool.edu.pk/events` → events ki list

5. Admin → **Slider** → kisi slide ka number badlein → doosri slide us ki jagah le le

6. Admin → **News** → search box mein kuch likhein → list foran filter ho

---

## Kuch galat ho jaye to

| Masla | Dekhein |
|---|---|
| Nayi image 404 | `UPLOADS_DIR` — qadam 3 |
| Site khali safed | `public_html/index.html` mojood? `.htaccess` mein Passenger block sabse upar? |
| API 503 | Setup Node.js App → **stderr.log** |
| Admin par 403 | `qa-fixes.sql` chali? (naye permissions wahin se milte hain) |
| Sab logout ho gaye | `JWT_SECRET` badal gaya — purana wapas dalein |
| Sab kuch kharab | phpMyAdmin → Import → qadam 1 wali backup file |
