# MSGLY Landing Page

Production-ready static landing page for **MSGLY** (Enterprise Messaging Infrastructure for Indonesia).

---

## 📁 Directory Structure

```
msgly-landing/
├── index.html                                 # Clean HTML entrypoint
├── favicon.ico                                # Favicon
├── assets/                                    # Stylesheets, JS bundles & SVGs
├── cdn.gpteng.co/                             # Custom fonts (CameraPlainVariable)
├── fonts.googleapis.com/                      # Google Fonts CSS definitions
├── fonts.gstatic.com/                         # Font TTF/WOFF2 binary assets
└── pub-bb2e103a32db4e198524a2e9ed8f35b4.r2.dev/ # Preview banners & OG images
```

---

## 🚀 How to Serve Locally

You can test and view the landing page locally using Python or `npx serve`:

```bash
# Option A: Python Built-in Server
cd /Users/apple/app/msgly/msgly-landing
python3 -m http.server 8000
# Open http://localhost:8000 in your browser

# Option B: Node.js serve
npx serve .
```

---

## 🌐 How to Deploy to Production VPS (`/var/www/msgly-landing`)

### 1. Copy Files to Server

```bash
rsync -avz /Users/apple/app/msgly/msgly-landing/ root@<VPS_IP>:/var/www/msgly-landing/
```

### 2. Nginx VirtualHost Configuration (`/etc/nginx/sites-available/msgly-landing`)

```nginx
server {
    listen 80;
    server_name msgly.id www.msgly.id;
    root /var/www/msgly-landing;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }

    # Cache static assets
    location ~* \.(css|js|woff|woff2|ttf|png|jpg|jpeg|ico|svg)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }

    # Security headers
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
}
```

Enable site and restart Nginx:

```bash
sudo ln -s /etc/nginx/sites-available/msgly-landing /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
```
