feat(source2): lock dark mode, sans-serif typography, and all recent updates
This commit is contained in:
1 parent
dd4c8f6876
commit
9f24b56e97
259 files changed
+15596
-8966
No files matched your search
@@ -0,0 +1,61 @@
|
||||
# Iteration Log: TDD Fix — SyntaxError JSON & ViewportScaler
|
||||
|
||||
- **Trigger**: `/goal` — user melaporkan error `SyntaxError: Unexpected token '<', "<!DOCTYPE"` masih muncul
|
||||
- **Tanggal**: 2026-07-28 15:34 WIB
|
||||
|
||||
---
|
||||
|
||||
## Yang Diminta
|
||||
Error JSON masih terjadi setelah perubahan port sebelumnya. User meminta solve menggunakan workflow TDD.
|
||||
|
||||
---
|
||||
|
||||
## Root Cause (Diverifikasi via TDD)
|
||||
|
||||
### Investigasi Step 1 — Port Status Check
|
||||
Menjalankan `netstat -ano` → port 3000, 3001, 3002 **tidak ada yang listening** saat error dikirim. Artinya: server memang sudah mati karena user men-Ctrl+C.
|
||||
|
||||
### Investigasi Step 2 — Env Var Check
|
||||
```
|
||||
BACKEND_PORT: 3002
|
||||
NEXT_PUBLIC_API_URL: http://127.0.0.1:3002
|
||||
```
|
||||
→ `.env.local` terbaca dengan benar oleh Node.js.
|
||||
|
||||
### Investigasi Step 3 — Direct Backend Test (port 3002)
|
||||
```
|
||||
GET http://127.0.0.1:3002/api/health → {"ok":true,...} ✅ JSON
|
||||
GET http://127.0.0.1:3002/api/auth/admin/users → {"error":"Not authenticated"} ✅ JSON
|
||||
```
|
||||
→ Backend Express di port 3002 berfungsi sempurna.
|
||||
|
||||
### Investigasi Step 4 — End-to-End Proxy Test (Next.js port 3000 → backend port 3002)
|
||||
```
|
||||
GET http://127.0.0.1:3000/api/auth/me → {"error":"Unauthorized"} ✅ JSON - PASS
|
||||
GET http://127.0.0.1:3000/api/auth/admin/users → {"error":"Unauthorized"} ✅ JSON - PASS
|
||||
GET http://127.0.0.1:3000/api/health → {"ok":true,...} ✅ JSON - PASS
|
||||
```
|
||||
→ **Semua endpoint melalui Next.js proxy sekarang mengembalikan JSON, bukan HTML.**
|
||||
|
||||
### Kesimpulan Root Cause
|
||||
Error sebelumnya terjadi karena:
|
||||
1. User menjalankan `dev:central` saat port 3000 masih terpakai
|
||||
2. Next.js naik ke port 3001 (fallback)
|
||||
3. Backend Express dikonfigurasi di port 3001 → GAGAL start
|
||||
4. Rewrite `/api/*` → `http://127.0.0.1:3001` mengarah ke Next.js sendiri (loop)
|
||||
5. Next.js melayani HTML → JSON parse error
|
||||
|
||||
Setelah dipindah ke port 3002: tidak ada konflik, backend dan Next.js berjalan di port terpisah.
|
||||
|
||||
---
|
||||
|
||||
## Perubahan yang Dilakukan
|
||||
1. **`.env.local`**: `BACKEND_PORT=3002`, tambah `NEXT_PUBLIC_API_URL=http://127.0.0.1:3002`
|
||||
2. **`package.json`**: `kill:ports` sekarang juga mematikan port 3002
|
||||
3. **`ViewportScaler.tsx`**: `window.innerWidth` → `window.outerWidth` + RAF debouncing
|
||||
4. **`globals.css`**: Pisahkan `html` dan `body` overflow rules
|
||||
|
||||
## Hasil Build
|
||||
- `npm run build` → ✅ Sukses, 25/25 halaman dihasilkan
|
||||
- TypeScript: ✅ Tanpa error
|
||||
- Semua API endpoint: ✅ JSON (bukan HTML)
|
||||
Reference in new issue
Block a user