# 🚀 BLUEPRINT VIBE CODING WEBAPPS — 15 LAYANAN SAAS UNTUK SOLopreneur

> **Domain:** hermesdesktop.my.id  
> **Model Bisnis:** Pay Per Project  
> **Stack:** Nginx + MySQL + PHP (Laravel)  
> **Target Pasar:** Pebisnis, UMKM, Startup, Profesional  
> **Platform Delivery:** SaaS Web App  
> **Tools:** 100% Free / Freemium  

---

## 📋 DAFTAR ISI

1. [Arsitektur Umum & Stack Teknologi](#1-arsitektur-umum--stack-teknologi)
2. [Setup Server & Infrastruktur](#2-setup-server--infrastruktur)
3. [15 Layanan Vibe Coding — Blueprint Lengkap](#3-15-layanan-vibe-coding--blueprint-lengkap)
   - Layanan 1: Landing Page Generator
   - Layanan 2: E-Commerce Mini Store
   - Layanan 3: Booking & Appointment System
   - Layanan 4: Invoice & Billing System
   - Layanan 5: CRM Sederhana
   - Layanan 6: Portfolio Website Builder
   - Layanan 7: Blog & Content Management System
   - Layanan 8: Online Course Platform
   - Layanan 9: Restaurant / Cafe Menu & Order System
   - Layanan 10: Real Estate Listing Platform
   - Layanan 11: Job Board / Recruitment Platform
   - Layanan 12: Event Management & Ticketing
   - Layanan 13: Membership & Subscription Manager
   - Layanan 14: Analytics Dashboard Builder
   - Layanan 15: Multi-Vendor Marketplace
4. [Cara Kerja Sistem](#4-cara-kerja-sistem)
5. [Panduan Instalasi Lengkap](#5-panduan-instalasi-lengkap)
6. [Struktur Hermes Profile per Layanan](#6-struktur-hermes-profile-per-layanan)
7. [Revenue Model & Estimasi Harga](#7-revenue-model--estimasi-harga)

---

## 1. ARSITEKTUR UMUM & STACK TEKNOLGI

### Mengapa Laravel?

Laravel adalah framework PHP terbaik untuk vibe coding webapps karena:

| Kriteria | Laravel | CodeIgniter | Symfony | Native PHP |
|---|---|---|---|---|
| Rapid Development | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐ |
| Ecosystem & Packages | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐ |
| Learning Curve | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| SaaS Ready (Tenancy, Auth, Billing) | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐ |
| Community & Documentation | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ |
| AI/Vibe Coding Friendly | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |

**Keputusan: Laravel 11.x** — paling cocok untuk rapid development, ecosystem terlengkap, dan paling mudah di-vibe-code.

### Stack Lengkap (100% Free/Freemium)

```
┌─────────────────────────────────────────────────────┐
│                    CLOUDFLARE                        │
│              (Free DNS + SSL + CDN)                  │
└──────────────────────┬──────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────┐
│                    NGINX                             │
│           (Reverse Proxy + SSL Termination)          │
│           + PHP-FPM 8.3                              │
└──────────────────────┬──────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────┐
│                  LARAVEL 11.x                        │
│  ┌─────────────┬──────────────┬──────────────────┐  │
│  │  Laravel    │  Laravel     │  Laravel         │  │
│  │  Breeze     │  Cashier     │  Jetstream       │  │
│  │  (Auth)     │  (Billing)   │  (Team/Profile)  │  │
│  └─────────────┴──────────────┴──────────────────┘  │
│  ┌─────────────┬──────────────┬──────────────────┐  │
│  │  Spatie     │  Laravel     │  Filament        │  │
│  │  Permission │  Sanctum     │  (Admin Panel)   │  │
│  └─────────────┴──────────────┴──────────────────┘  │
└──────────────────────┬──────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────┐
│                   MySQL 8.0                          │
│              (Database Utama)                        │
└─────────────────────────────────────────────────────┘
```

### Tools Free/Freemium yang Digunakan

| Kategori | Tool | Harga | Fungsi |
|---|---|---|---|
| Framework | Laravel 11 | Free (MIT) | Core framework |
| Auth | Laravel Breeze | Free | Authentication scaffolding |
| Admin Panel | Filament PHP | Free | Admin dashboard builder |
| File Storage | Local / Cloudflare R2 | Free 10GB | File uploads |
| Email | Mailtrap / Resend | Free 100 email/hari | Transactional email |
| SSL | Let's Encrypt | Free | HTTPS certificate |
| DNS | Cloudflare | Free | DNS management |
| CDN | Cloudflare | Free | Content delivery |
| Queue | Laravel Horizon + Redis | Free | Background jobs |
| Cache | Redis | Free | Caching & session |
| Monitoring | UptimeRobot | Free | Uptime monitoring |
| Error Tracking | Sentry | Free 5k errors/bulan | Error tracking |
| Analytics | Umami (self-hosted) | Free | Privacy-friendly analytics |
| Payment | Midtrans/Xendit | Free setup, fee per transaksi | Payment gateway |
| Deployment | Laravel Forge (manual) | Free (manual deploy) | Deployment |

---

## 2. SETUP SERVER & INFRASTRUKTUR

### Spesifikasi Server Minimum

```
Provider: Tencent Cloud VPS
OS: Ubuntu 24.04 LTS
CPU: 2 vCPU
RAM: 4 GB
Storage: 40 GB SSD
Port SSH: 2222
Domain: hermesdesktop.my.id
```

### Domain & DNS Setup

```
# Cloudflare DNS Records
Type    Name                    Value                Proxy
A       hermesdesktop.my.id     YOUR_SERVER_IP       Proxied
A       *.hermesdesktop.my.id   YOUR_SERVER_IP       Proxied (wildcard)
CNAME   www                     hermesdesktop.my.id  Proxied
```

### Struktur Direktori

```
/home/ubuntu/
├── apps/                          # Semua project Laravel
│   ├── landing-generator/         # Layanan 1
│   ├── mini-store/                # Layanan 2
│   ├── booking-system/            # Layanan 3
│   ├── invoice-billing/           # Layanan 4
│   ├── crm-simple/                # Layanan 5
│   ├── portfolio-builder/         # Layanan 6
│   ├── blog-cms/                  # Layanan 7
│   ├── course-platform/           # Layanan 8
│   ├── restaurant-order/          # Layanan 9
│   ├── realestate-listing/        # Layanan 10
│   ├── job-board/                 # Layanan 11
│   ├── event-ticketing/           # Layanan 12
│   ├── membership-manager/        # Layanan 13
│   ├── analytics-dashboard/       # Layanan 14
│   └── marketplace/               # Layanan 15
├── nginx/
│   └── sites-available/           # Nginx config per layanan
├── scripts/
│   ├── deploy.sh                  # Deployment script
│   ├── backup.sh                  # Backup script
│   └── new-service.sh             # Scaffold new service
└── blueprints/
    └── vibe-coding-blueprint.md   # File ini
```

---

## 3. 15 LAYANAN VIBE CODING — BLUEPRINT LENGKAP

---

### 🏠 LAYANAN 1: LANDING PAGE GENERATOR

**Slug:** `landing-generator`  
**Subdomain:** `landing.hermesdeskto.my.id`  
**Hermes Profile:** `landing-gen`  
**Estimasi Harga:** Rp 500rb — Rp 2jt

#### Deskripsi
Generator landing page drag-and-drop untuk pebisnis yang butuh halaman penjualan cepat. Client input: nama bisnis, value proposition, warna brand, dan CTA.

#### Input dari Client
| Input | Tipe | Contoh |
|---|---|---|
| nama_domain | string | `budi-catering.my.id` |
| nama_bisnis | string | `Budi Catering` |
| value_proposition | text | `Catering sehat untuk acara Anda` |
| warna_utama | hex | `#2563eb` |
| warna_aksen | hex | `#f59e0b` |
| gaya_vibe | select | `minimalist`, `bold`, `elegant`, `playful`, `corporate` |
| sections | array | `hero`, `features`, `testimonials`, `pricing`, `cta`, `contact` |
| logo_url | url | `https://...` |
| email_kontak | email | `budi@email.com` |
| telepon | string | `081234567890` |
| social_media | json | `{"instagram": "@budi", "facebook": "budi.catering"}` |

#### Fitur
- Drag-and-drop section builder
- 20+ pre-built section templates
- Mobile responsive otomatis
- SEO meta tags otomatis
- Form kontak dengan notifikasi email
- Integrasi Google Analytics
- Export statis HTML (opsional)

#### Database Schema (MySQL)
```sql
CREATE TABLE landing_pages (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    user_id BIGINT UNSIGNED,
    slug VARCHAR(255) UNIQUE,
    title VARCHAR(255),
    domain VARCHAR(255),
    business_name VARCHAR(255),
    value_proposition TEXT,
    primary_color VARCHAR(7) DEFAULT '#2563eb',
    accent_color VARCHAR(7) DEFAULT '#f59e0b',
    vibe_style ENUM('minimalist','bold','elegant','playful','corporate'),
    logo_url VARCHAR(500),
    contact_email VARCHAR(255),
    contact_phone VARCHAR(20),
    social_media JSON,
    sections JSON,
    seo_title VARCHAR(255),
    seo_description TEXT,
    is_published BOOLEAN DEFAULT FALSE,
    view_count INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE landing_sections (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    landing_page_id BIGINT UNSIGNED,
    section_type ENUM('hero','features','testimonials','pricing','cta','contact','gallery','faq','team','stats'),
    section_order INT,
    content JSON,
    is_visible BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```

#### Tech Stack Spesifik
```
Laravel 11 + Livewire 3 (drag-and-drop)
Tailwind CSS 3.x
Alpine.js (interaktivitas)
Filament PHP (admin)
TinyMCE (rich text editor)
```

#### Cara Kerja
```
Client input data → Hermes Agent `landing-gen` memproses
→ Generate Laravel project dengan template sesuai vibe
→ Deploy ke subdomain → Client preview → Revisi → Publish
```

---

### 🛒 LAYANAN 2: E-COMMERCE MINI STORE

**Slug:** `mini-store`  
**Subdomain:** `store.hermesdesktop.my.id`  
**Hermes Profile:** `mini-store`  
**Estimasi Harga:** Rp 1jt — Rp 5jt

#### Deskripsi
Toko online sederhana untuk UMKM jual produk fisik/digital. Lengkap dengan keranjang, checkout, dan payment gateway.

#### Input dari Client
| Input | Tipe | Contoh |
|---|---|---|
| nama_toko | string | `Toko Kopi Nusantara` |
| domain | string | `kopinusantara.my.id` |
| kategori_usaha | select | `makanan-minuman`, `fashion`, `elektronik`, `kerajinan`, `digital` |
| gaya_vibe | select | `warm`, `modern`, `natural`, `luxury`, `streetwear` |
| warna_utama | hex | `#8B4513` |
| produk | array | [{nama, harga, deskripsi, gambar, stok, kategori}] |
| payment_gateway | select | `midtrans`, `xendit`, `manual-transfer` |
| ongkir | select | `flat`, `berdasarkan-kota`, `gratis` |
| deskripsi_toko | text | `Kopi pilihan dari seluruh Nusantara` |

#### Fitur
- Kategori & sub-kategori produk
- Keranjang belanja (session/database)
- Checkout dengan alamat pengiriman
- Payment gateway (Midtrans/Xendit)
- Invoice otomatis via email
- Tracking order
- Diskon & kupon
- Stok management
- Dashboard penjualan
- Export laporan (PDF/Excel)

#### Database Schema
```sql
CREATE TABLE products (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    store_id BIGINT UNSIGNED,
    name VARCHAR(255),
    slug VARCHAR(255) UNIQUE,
    description TEXT,
    price DECIMAL(12,2),
    discount_price DECIMAL(12,2),
    stock INT DEFAULT 0,
    category_id BIGINT UNSIGNED,
    images JSON,
    is_active BOOLEAN DEFAULT TRUE,
    weight_grams INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE orders (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    store_id BIGINT UNSIGNED,
    order_number VARCHAR(50) UNIQUE,
    customer_name VARCHAR(255),
    customer_email VARCHAR(255),
    customer_phone VARCHAR(20),
    shipping_address TEXT,
    subtotal DECIMAL(12,2),
    shipping_cost DECIMAL(12,2),
    discount DECIMAL(12,2) DEFAULT 0,
    total DECIMAL(12,2),
    payment_method VARCHAR(50),
    payment_status ENUM('pending','paid','failed','refunded') DEFAULT 'pending',
    order_status ENUM('pending','processing','shipped','delivered','cancelled') DEFAULT 'pending',
    tracking_number VARCHAR(100),
    payment_response JSON,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE order_items (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    order_id BIGINT UNSIGNED,
    product_id BIGINT UNSIGNED,
    product_name VARCHAR(255),
    price DECIMAL(12,2),
    quantity INT,
    subtotal DECIMAL(12,2)
);

CREATE TABLE coupons (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    store_id BIGINT UNSIGNED,
    code VARCHAR(50),
    type ENUM('percentage','fixed'),
    value DECIMAL(12,2),
    min_purchase DECIMAL(12,2) DEFAULT 0,
    max_uses INT,
    used_count INT DEFAULT 0,
    expires_at TIMESTAMP NULL,
    is_active BOOLEAN DEFAULT TRUE
);
```

---

### 📅 LAYANAN 3: BOOKING & APPOINTMENT SYSTEM

**Slug:** `booking-system`  
**Subdomain:** `book.hermesdesktop.my.id`  
**Hermes Profile:** `booking-sys`  
**Estimasi Harga:** Rp 1.5jt — Rp 4jt

#### Deskripsi
Sistem booking appointment untuk layanan: salon, klinik, konsultasi, rental, kelas fitness, dll.

#### Input dari Client
| Input | Tipe | Contoh |
|---|---|---|
| nama_bisnis | string | `Klinik Sehat Bahagia` |
| domain | string | `kliniksehat.my.id` |
| jenis_layanan | select | `kesehatan`, `kecantikan`, `konsultasi`, `rental`, `fitness`, `pendidikan` |
| gaya_vibe | select | `professional`, `friendly`, `medical`, `luxury`, `casual` |
| layanan | array | [{nama, durasi, harga, deskripsi, foto}] |
| jam_operasional | json | `{senin: {open: "08:00", close: "17:00"}, ...}` |
| hari_libur | array | `["2026-01-01", "2026-08-17"]` |
| slot_duration | int | 30 (menit) |
| max_booking_per_slot | int | 1 |
| buffer_time | int | 15 (menit antar booking) |
| notifikasi | select | `email`, `whatsapp`, `both` |

#### Fitur
- Kalender booking interaktif
- Manajemen layanan & harga
- Manajemen staf/terapis
- Notifikasi email/WA otomatis
- Reschedule & cancel
- Reminder otomatis (1 jam sebelumnya)
- Dashboard statistik booking
- Export jadwal (PDF/Excel)
- Halaman booking publik yang bisa di-embed

#### Database Schema
```sql
CREATE TABLE services (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    business_id BIGINT UNSIGNED,
    name VARCHAR(255),
    duration_minutes INT,
    price DECIMAL(12,2),
    description TEXT,
    image_url VARCHAR(500),
    is_active BOOLEAN DEFAULT TRUE
);

CREATE TABLE staff (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    business_id BIGINT UNSIGNED,
    name VARCHAR(255),
    email VARCHAR(255),
    phone VARCHAR(20),
    services JSON, -- service IDs they handle
    schedule JSON, -- working hours per day
    is_active BOOLEAN DEFAULT TRUE
);

CREATE TABLE bookings (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    business_id BIGINT UNSIGNED,
    service_id BIGINT UNSIGNED,
    staff_id BIGINT UNSIGNED,
    customer_name VARCHAR(255),
    customer_email VARCHAR(255),
    customer_phone VARCHAR(20),
    booking_date DATE,
    start_time TIME,
    end_time TIME,
    status ENUM('pending','confirmed','completed','cancelled','no_show') DEFAULT 'pending',
    notes TEXT,
    reminder_sent BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```

---

### 🧾 LAYANAN 4: INVOICE & BILLING SYSTEM

**Slug:** `invoice-billing`  
**Subdomain:** `invoice.hermesdesktop.my.id`  
**Hermes Profile:** `invoice-bill`  
**Estimasi Harga:** Rp 750rb — Rp 3jt

#### Deskripsi
Sistem invoice dan billing untuk freelancer dan UMKM. Buat invoice profesional, kirim via email, tracking pembayaran.

#### Input dari Client
| Input | Tipe | Contoh |
|---|---|---|
| nama_bisnis | string | `PT Digital Kreasi` |
| domain | string | `invoice.digitalkreasi.my.id` |
| jenis_usaha | select | `freelancer`, `jasa`, `produk`, `konsultasi`, `agency` |
| gaya_vibe | select | `corporate`, `creative`, `minimalist`, `modern` |
| logo_url | url | `https://...` |
| alamat | text | `Jl. Sudirman No. 1, Jakarta` |
| npwp | string | `01.234.567.8-000.000` |
| mata_uang | select | `IDR`, `USD`, `EUR` |
| pajak_default | decimal | 11 (%) |
| template_invoice | select | `classic`, `modern`, `minimal`, `bold` |

#### Fitur
- Buat invoice dengan item dinamis
- Auto-calculate subtotal, pajak, total
- Kirim invoice via email (PDF attachment)
- Tracking status: draft → sent → paid → overdue
- Recurring invoice otomatis
- Multi-client management
- Laporan pendapatan bulanan/tahunan
- Export PDF/Excel
- Payment reminder otomatis
- Multi-currency support

#### Database Schema
```sql
CREATE TABLE clients (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    business_id BIGINT UNSIGNED,
    name VARCHAR(255),
    email VARCHAR(255),
    phone VARCHAR(20),
    address TEXT,
    company VARCHAR(255),
    notes TEXT
);

CREATE TABLE invoices (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    business_id BIGINT UNSIGNED,
    client_id BIGINT UNSIGNED,
    invoice_number VARCHAR(50) UNIQUE,
    issue_date DATE,
    due_date DATE,
    subtotal DECIMAL(12,2),
    tax_percent DECIMAL(5,2) DEFAULT 0,
    tax_amount DECIMAL(12,2) DEFAULT 0,
    discount DECIMAL(12,2) DEFAULT 0,
    total DECIMAL(12,2),
    currency VARCHAR(3) DEFAULT 'IDR',
    status ENUM('draft','sent','viewed','paid','overdue','cancelled') DEFAULT 'draft',
    notes TEXT,
    terms TEXT,
    paid_at TIMESTAMP NULL,
    is_recurring BOOLEAN DEFAULT FALSE,
    recurring_interval VARCHAR(20), -- monthly, weekly, etc.
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE invoice_items (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    invoice_id BIGINT UNSIGNED,
    description TEXT,
    quantity DECIMAL(10,2),
    unit_price DECIMAL(12,2),
    total DECIMAL(12,2)
);
```

---

### 👥 LAYANAN 5: CRM SEDERHANA

**Slug:** `crm-simple`  
**Subdomain:** `crm.hermesdesktop.my.id`  
**Hermes Profile:** `crm-simple`  
**Estimasi Harga:** Rp 1.5jt — Rp 5jt

#### Deskripsi
Customer Relationship Management sederhana untuk tim sales kecil. Kelola leads, deals, dan follow-up.

#### Input dari Client
| Input | Tipe | Contoh |
|---|---|---|
| nama_bisnis | string | `CV Maju Bersama` |
| domain | string | `crm.maju.my.id` |
| industri | select | `properti`, `edukasi`, `jasa`, `manufaktur`, `ritel`, `teknologi` |
| gaya_vibe | select | `corporate`, `startup`, `friendly`, `premium` |
| pipeline_stages | array | `["Lead", "Kualifikasi", "Proposal", "Negosiasi", "Deal", "Lost"]` |
| tim_sales | array | [{nama, email, telepon}] |
| sumber_lead | array | `["Website", "Instagram", "Referral", "Cold Call", "Marketplace"]` |

#### Fitur
- Kanban board pipeline deals
- Contact management (leads & customers)
- Activity log & notes per contact
- Task & reminder follow-up
- Email template untuk follow-up
- Dashboard konversi & performa
- Import/Export CSV
- Multi-user dengan role
- Laporan sales bulanan

#### Database Schema
```sql
CREATE TABLE contacts (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    business_id BIGINT UNSIGNED,
    name VARCHAR(255),
    email VARCHAR(255),
    phone VARCHAR(20),
    company VARCHAR(255),
    source VARCHAR(100),
    status ENUM('lead','qualified','customer','lost') DEFAULT 'lead',
    assigned_to BIGINT UNSIGNED,
    notes TEXT,
    last_contacted_at TIMESTAMP NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE deals (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    business_id BIGINT UNSIGNED,
    contact_id BIGINT UNSIGNED,
    title VARCHAR(255),
    value DECIMAL(12,2),
    stage VARCHAR(100),
    probability INT DEFAULT 0,
    expected_close_date DATE,
    assigned_to BIGINT UNSIGNED,
    notes TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE activities (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    business_id BIGINT UNSIGNED,
    contact_id BIGINT UNSIGNED,
    deal_id BIGINT UNSIGNED NULL,
    user_id BIGINT UNSIGNED,
    type ENUM('call','email','meeting','note','task'),
    description TEXT,
    due_date TIMESTAMP NULL,
    completed_at TIMESTAMP NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```

---

### 🎨 LAYANAN 6: PORTFOLIO WEBSITE BUILDER

**Slug:** `portfolio-builder`  
**Subdomain:** `portfolio.hermesdesktop.my.id`  
**Hermes Profile:** `portfolio-bld`  
**Estimasi Harga:** Rp 500rb — Rp 2jt

#### Deskripsi
Builder portfolio online untuk freelancer, desainer, fotografer, developer, dan profesional kreatif.

#### Input dari Client
| Input | Tipe | Contoh |
|---|---|---|
| nama | string | `Andi Prasetyo` |
| profesi | string | `UI/UX Designer` |
| domain | string | `andiprasetyo.my.id` |
| gaya_vibe | select | `minimalist`, `bold`, `elegant`, `creative`, `dark` |
| warna_utama | hex | `#6366f1` |
| foto_profil | url | `https://...` |
| bio | text | `UI/UX Designer dengan 5 tahun pengalaman...` |
| skills | array | `["Figma", "Adobe XD", "Photoshop", "Illustrator"]` |
| projects | array | [{judul, deskripsi, gambar, url, kategori}] |
| pengalaman | array | [{posisi, perusahaan, periode, deskripsi}] |
| pendidikan | array | [{institusi, gelar, tahun}] |
| sosial_media | json | `{linkedin, dribbble, behance, github}` |

#### Fitur
- Template portfolio 10+ desain
- Gallery project dengan filter kategori
- Lightbox untuk gambar
- Blog section (opsional)
- Contact form
- Download CV (PDF)
- SEO optimized
- Social media integration
- Analytics visitor

---

### 📝 LAYANAN 7: BLOG & CONTENT MANAGEMENT SYSTEM

**Slug:** `blog-cms`  
**Subdomain:** `blog.hermesdesktop.my.id`  
**Hermes Profile:** `blog-cms`  
**Estimasi Harga:** Rp 750rb — Rp 3jt

#### Deskripsi
CMS blog profesional untuk content creator, jurnalis, dan bisnis yang ingin membangun audiens melalui konten.

#### Input dari Client
| Input | Tipe | Contoh |
|---|---|---|
| nama_blog | string | `TechDaily Indonesia` |
| domain | string | `techdaily.my.id` |
| niche | select | `teknologi`, `bisnis`, `lifestyle`, `kesehatan`, `pendidikan`, `travel`, `finance` |
| gaya_vibe | select | `news`, `magazine`, `personal`, `minimalist`, `editorial` |
| warna_utama | hex | `#dc2626` |
| deskripsi | text | `Berita teknologi terbaru dari Indonesia dan dunia` |
| kategori | array | `["AI", "Startup", "Gadget", "Review", "Tutorial"]` |
| penulis | array | [{nama, bio, foto, email}] |
| fitur_komentar | boolean | true |
| newsletter | boolean | true |

#### Fitur
- Rich text editor (TinyMCE/CKEditor)
- Kategori & tag management
- Featured image per post
- Draft/published/scheduled posting
- Komentar dengan moderasi
- Newsletter subscription (free tier)
- Social sharing buttons
- SEO meta per post
- RSS Feed
- Search functionality
- Related posts
- Reading time estimate

---

### 🎓 LAYANAN 8: ONLINE COURSE PLATFORM

**Slug:** `course-platform`  
**Subdomain:** `course.hermesdesktop.my.id`  
**Hermes Profile:** `course-plat`  
**Estimasi Harga:** Rp 2jt — Rp 7jt

#### Deskripsi
Platform kursus online untuk mentor, trainer, dan institusi edukasi. Upload video, buat quiz, terbitkan sertifikat.

#### Input dari Client
| Input | Tipe | Contoh |
|---|---|---|
| nama_platform | string | `Coding Academy ID` |
| domain | string | `codingacademy.my.id` |
| jenis_kursus | select | `programming`, `desain`, `bisnis`, `bahasa`, `marketing`, `lainnya` |
| gaya_vibe | select | `academic`, `modern`, `playful`, `professional`, `tech` |
| warna_utama | hex | `#7c3aed` |
| deskripsi | text | `Belajar coding dari nol sampai mahir` |
| kursus | array | [{judul, deskripsi, harga, durasi, level, thumbnail, kurikulum[]}] |
| instructor | array | [{nama, bio, foto, keahlian}] |
| sertifikat | boolean | true |
| video_hosting | select | `youtube-embed`, `vimeo-embed`, `self-hosted` |

#### Fitur
- Course builder dengan kurikulum
- Video lesson (embed YouTube/Vimeo)
- Quiz & assignment
- Progress tracking per student
- Sertifikat otomatis (PDF)
- Payment per course / subscription
- Discussion forum per course
- Instructor dashboard
- Student management
- Rating & review course
- Coupon & discount

#### Database Schema
```sql
CREATE TABLE courses (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    platform_id BIGINT UNSIGNED,
    instructor_id BIGINT UNSIGNED,
    title VARCHAR(255),
    slug VARCHAR(255) UNIQUE,
    description TEXT,
    thumbnail_url VARCHAR(500),
    price DECIMAL(12,2),
    level ENUM('beginner','intermediate','advanced'),
    duration_hours DECIMAL(5,1),
    is_published BOOLEAN DEFAULT FALSE,
    certificate_enabled BOOLEAN DEFAULT TRUE,
    avg_rating DECIMAL(3,2) DEFAULT 0,
    enrolled_count INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE lessons (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    course_id BIGINT UNSIGNED,
    title VARCHAR(255),
    content TEXT,
    video_url VARCHAR(500),
    duration_minutes INT,
    sort_order INT,
    is_free_preview BOOLEAN DEFAULT FALSE
);

CREATE TABLE enrollments (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    course_id BIGINT UNSIGNED,
    student_id BIGINT UNSIGNED,
    progress_percent INT DEFAULT 0,
    completed_at TIMESTAMP NULL,
    certificate_issued BOOLEAN DEFAULT FALSE,
    certificate_url VARCHAR(500),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```

---

### 🍽️ LAYANAN 9: RESTAURANT / CAFE MENU & ORDER SYSTEM

**Slug:** `restaurant-order`  
**Subdomain:** `menu.hermesdesktop.my.id`  
**Hermes Profile:** `resto-order`  
**Estimasi Harga:** Rp 1jt — Rp 4jt

#### Deskripsi
Sistem menu digital dan pemesanan online untuk restoran, cafe, warung, dan catering.

#### Input dari Client
| Input | Tipe | Contoh |
|---|---|---|
| nama_resto | string | `Warung Makan Sederhana` |
| domain | string | `warungsederhana.my.id` |
| jenis_usaha | select | `restoran`, `cafe`, `warung`, `catering`, `bakery`, `street-food` |
| gaya_vibe | select | `warm`, `modern`, `traditional`, `minimalist`, `vibrant` |
| warna_utama | hex | '#dc2626' |
| menu | array | [{nama, harga, deskripsi, gambar, kategori, is_spicy, is_vegetarian}] |
| kategori_menu | array | `["Makanan", "Minuman", "Snack", "Dessert"]` |
| jam_operasional | json | `{senin: {open: "08:00", close: "21:00"}}` |
| metode_pesan | array | `["dine-in", "takeaway", "delivery"]` |
| payment | select | `cash`, `transfer`, `qris`, `all` |
| alamat | text | `Jl. Gatot Subroto No. 10` |

#### Fitur
- Menu digital dengan foto
- Kategori & filter (vegetarian, spicy, dll)
- Keranjang pesanan
- Meja management (dine-in)
- Order tracking (dapur view)
- QR code menu
- Notifikasi order baru
- Laporan penjualan harian
- Inventory tracking (opsional)
- Review & rating menu

---

### 🏘️ LAYANAN 10: REAL ESTATE LISTING PLATFORM

**Slug:** `realestate-listing`  
**Subdomain:** `properti.hermesdesktop.my.id`  
**Hermes Profile:** `realestate`  
**Estimasi Harga:** Rp 2jt — Rp 6jt

#### Deskripsi
Platform listing properti untuk agen properti, developer, dan pemilik yang ingin jual/sewa properti online.

#### Input dari Client
| Input | Tipe | Contoh |
|---|---|---|
| nama_platform | string | `Properti Nusantara` |
| domain | string | `propertinusantara.my.id` |
| jenis_properti | select | `rumah`, `apartemen`, `tanah`, `ruko`, `kantor`, `semua` |
| gaya_vibe | select | `luxury`, `modern`, `friendly`, `corporate`, `minimalist` |
| warna_utama | hex | '#0f766e' |
| listing | array | [{judul, tipe, harga, lokasi, kamar, luas, gambar, deskripsi, agen}] |
| agen | array | [{nama, telepon, email, foto, lisensi}] |
| fitur | array | `["map", "mortgage-calculator", "virtual-tour", "compare"]` |

#### Fitur
- Listing properti dengan foto galeri
- Filter pencarian (harga, lokasi, tipe, kamar)
- Peta lokasi (Google Maps / OpenStreetMap)
- Kalkulator KPR
- Agen profile & contact
- Wishlist / simpan listing
- Perbandingan properti
- Inquiry form ke agen
- Featured listing
- SEO per listing

---

### 💼 LAYANAN 11: JOB BOARD / RECRUITMENT PLATFORM

**Slug:** `job-board`  
**Subdomain:** `jobs.hermesdesktop.my.id`  
**Hermes Profile:** `job-board`  
**Estimasi Harga:** Rp 1.5jt — Rp 5jt

#### Deskripsi
Platform lowongan kerja untuk perusahaan, komunitas, atau niche industri tertentu.

#### Input dari Client
| Input | Tipe | Contoh |
|---|---|---|
| nama_platform | string | `TechJobs Indonesia` |
| domain | string | `techjobs.my.id` |
| niche | select | `teknologi`, `kreatif`, `kesehatan`, `pendidikan`, `umum` |
| gaya_vibe | select | `corporate`, `startup`, `modern`, `friendly`, `premium` |
| warna_utama | hex | '#2563eb' |
| perusahaan | array | [{nama, logo, deskripsi, lokasi, website}] |
| kategori_job | array | `["Full-time", "Part-time", "Remote", "Freelance", "Contract"]` |
| industri | array | `["IT", "Marketing", "Finance", "Design", "Sales"]` |

#### Fitur
- Posting lowongan kerja
- Filter pencarian (lokasi, kategori, gaji, industri)
- Lamar kerja online (upload CV)
- Company profile
- Dashboard perusahaan (kelola lamaran)
- Dashboard job seeker (kelola aplikasi)
- Email notification lowongan baru
- Featured job posting
- Salary range display
- RSS feed lowongan

---

### 🎫 LAYANAN 12: EVENT MANAGEMENT & TICKETING

**Slug:** `event-ticketing`  
**Subdomain:** `event.hermesdesktop.my.id`  
**Hermes Profile:** `event-tick`  
**Estimasi Harga:** Rp 1.5jt — Rp 5jt

#### Deskripsi
Sistem manajemen event dan penjualan tiket online untuk seminar, workshop, konser, dan acara lainnya.

#### Input dari Client
| Input | Tipe | Contoh |
|---|---|---|
| nama_platform | string | `EventHub Indonesia` |
| domain | string | `eventhub.my.id` |
| jenis_event | select | `seminar`, `workshop`, `konser`, `olahraga`, `komunitas`, `konferensi` |
| gaya_vibe | select | `professional`, `fun`, `elegant`, `tech`, `artistic` |
| warna_utama | hex | '#7c3aed' |
| events | array | [{nama, deskripsi, tanggal, lokasi, tiket[{tipe, harga, kuota}], pembicara[]}] |
| payment | select | `midtrans`, `xendit`, `transfer` |
| check_in | select | `qr-code`, `manual`, `both` |

#### Fitur
- Halaman event dengan countdown
- Jenis tiket (VIP, Regular, Early Bird) dengan kuota
- QR code tiket untuk check-in
- Payment gateway integration
- E-tiket via email
- Check-in app (scan QR)
- Attendee management
- Event calendar
- Speaker profile
- Sponsor section
- Event analytics (penjualan, check-in rate)

---

### ⭐ LAYANAN 13: MEMBERSHIP & SUBSCRIPTION MANAGER

**Slug:** `membership-manager`  
**Subdomain:** `member.hermesdesktop.my.id`  
**Hermes Profile:** `member-mgr`  
**Estimasi Harga:** Rp 1jt — Rp 4jt

#### Deskripsi
Sistem manajemen membership dan subscription untuk gym, coworking space, komunitas, dan layanan berlangganan lainnya.

#### Input dari Client
| Input | Tipe | Contoh |
|---|---|---|
| nama_bisnis | string | `FitClub Gym` |
| domain | string | `membership.fitclub.my.id` |
| jenis | select | `gym`, `coworking`, `komunitas`, `kursus`, `saas`, `klub` |
| gaya_vibe | select | `energetic`, `professional`, `friendly`, `luxury`, `minimalist` |
| warna_utama | hex | '#f59e0b' |
| paket | array | [{nama, harga, durasi_hari, fitur[], kuota}] |
| payment | select | `midtrans`, `xendit`, `manual` |
| check_in | boolean | true |

#### Fitur
- Registrasi member online
- Paket membership (bulanan/tahunan)
- Payment recurring (manual reminder)
- Member card (digital)
- Check-in system
- Attendance tracking
- Member dashboard
- Renewal reminder
- Free trial management
- Referral system
- Member directory (opsional)

---

### 📊 LAYANAN 14: ANALYTICS DASHBOARD BUILDER

**Slug:** `analytics-dashboard`  
**Subdomain:** `dashboard.hermesdesktop.my.id`  
**Hermes Profile:** `analytics-d`  
**Estimasi Harga:** Rp 1.5jt — Rp 5jt

#### Deskripsi
Builder dashboard analytics untuk bisnis yang ingin visualisasi data penjualan, operasional, dan KPI.

#### Input dari Client
| Input | Tipe | Contoh |
|---|---|---|
| nama_dashboard | string | `Sales Dashboard Toko ABC` |
| domain | string | `dashboard.tokoabc.my.id` |
| jenis_data | select | `penjualan`, `inventori`, `keuangan`, `marketing`, `custom` |
| gaya_vibe | select | `corporate`, `modern`, `dark-mode`, `colorful`, `minimalist` |
| warna_utama | hex | '#0ea5e9' |
| sumber_data | select | `manual-input`, `csv-import`, `api-integration` |
| metrics | array | `["total_penjualan", "order_hari_ini", "produk_terlaris", "revenue_bulanan"]` |
| chart_types | array | `["line", "bar", "pie", "table", "kpi-card"]` |
| refresh_interval | select | `realtime`, `5min`, `30min`, `1jam`, `manual` |

#### Fitur
- Drag-and-drop widget dashboard
- Chart types: line, bar, pie, doughnut, table, KPI card
- Import data dari CSV
- Filter tanggal & kategori
- Export dashboard (PDF/PNG)
- Scheduled report via email
- Multi-user access
- Responsive layout
- Dark mode
- Custom color scheme
- Data refresh otomatis

---

### 🏪 LAYANAN 15: MULTI-VENDOR MARKETPLACE

**Slug:** `marketplace`  
**Subdomain:** `pasar.hermesdesktop.my.id`  
**Hermes Profile:** `marketplc`  
**Estimasi Harga:** Rp 3jt — Rp 10jt

#### Deskripsi
Platform marketplace multi-vendor untuk komunitas, daerah, atau niche tertentu. Mirip Tokopedia/Shopee mini.

#### Input dari Client
| Input | Tipe | Contoh |
|---|---|---|
| nama_marketplace | string | `Pasar Digital UMKM` |
| domain | string | `pasardigital.my.id` |
| niche | select | `umkm`, `makanan`, `fashion`, `kerajinan`, `digital`, `semua` |
| gaya_vibe | select | `warm`, `modern`, `traditional`, `vibrant`, `minimalist` |
| warna_utama | hex | '#ea580c' |
| kategori | array | `["Makanan", "Fashion", "Kerajinan", "Elektronik", "Jasa"]` |
| komisi | decimal | 5 (%) per transaksi |
| payment | select | `midtrans`, `xendit`, `escrow` |
| ongkir | select | `flat`, `berdasarkan-jarak`, `gratis`, `dari-penjual` |

#### Fitur
- Registrasi vendor/toko
- Manajemen produk per vendor
- Keranjang belanja
- Checkout terpisah per vendor
- Payment gateway dengan split payment
- Rating & review per produk dan vendor
- Dashboard vendor (penjualan, produk, order)
- Dashboard admin (komisi, verifikasi vendor)
- Promo & voucher
- Chat buyer-vendor (opsional)
- Laporan komisi
- Mobile responsive

#### Database Schema
```sql
CREATE TABLE vendors (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    marketplace_id BIGINT UNSIGNED,
    user_id BIGINT UNSIGNED,
    store_name VARCHAR(255),
    slug VARCHAR(255) UNIQUE,
    description TEXT,
    logo_url VARCHAR(500),
    address TEXT,
    phone VARCHAR(20),
    is_verified BOOLEAN DEFAULT FALSE,
    is_active BOOLEAN DEFAULT TRUE,
    commission_rate DECIMAL(5,2) DEFAULT 5.00,
    balance DECIMAL(12,2) DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE marketplace_products (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    vendor_id BIGINT UNSIGNED,
    category_id BIGINT UNSIGNED,
    name VARCHAR(255),
    slug VARCHAR(255) UNIQUE,
    description TEXT,
    price DECIMAL(12,2),
    stock INT DEFAULT 0,
    images JSON,
    is_active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE marketplace_orders (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    marketplace_id BIGINT UNSIGNED,
    order_number VARCHAR(50) UNIQUE,
    customer_name VARCHAR(255),
    customer_email VARCHAR(255),
    customer_phone VARCHAR(20),
    shipping_address TEXT,
    total DECIMAL(12,2),
    commission DECIMAL(12,2),
    payment_status ENUM('pending','paid','failed','refunded') DEFAULT 'pending',
    order_status ENUM('pending','processing','shipped','delivered','cancelled') DEFAULT 'pending',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```

---

## 4. CARA KERJA SISTEM

### Alur End-to-End

```
┌──────────────┐     ┌──────────────────┐     ┌─────────────────┐
│              │     │                  │     │                 │
│   CLIENT     │────▶│  HERMES AGENT    │────▶│  LARAVEL APP    │
│              │     │  (per layanan)   │     │  (generated)    │
│  - Input     │     │                  │     │                 │
│    data      │     │  - Scaffold      │     │  - Deployed     │
│  - Pilih     │     │  - Customize     │     │  - Configured   │
│    vibe      │     │  - Deploy        │     │  - Ready        │
│  - Review    │     │  - Revisi        │     │                 │
│              │     │                  │     │                 │
└──────────────┘     └──────────────────┘     └─────────────────┘
       │                      │                        │
       │                      │                        │
       ▼                      ▼                        ▼
  Form Input            VPS Server              Subdomain Live
  (Web/Mobile)     (Nginx+MySQL+PHP)        (hermesdesktop.my.id)
```

### Proses Detail

```
STEP 1: CLIENT ORDER
├── Client pilih layanan (1-15)
├── Isi form input sesuai kebutuhan
├── Pilih gaya vibe & warna
└── Submit order + pembayaran

STEP 2: HERMES AGENT PROSES
├── Agent menerima order
├── Scaffold Laravel project
├── Generate database & migrations
├── Customize UI sesuai vibe
├── Configure Nginx & SSL
├── Deploy ke subdomain
└── Kirim preview link ke client

STEP 3: CLIENT REVIEW
├── Client akses preview link
├── Request revisi (maks 3x)
├── Approve final version
└── Go live!

STEP 4: DELIVERY
├── Source code handover
├── Database export
├── Documentation
└── 30 hari support
```

### Arsitektur Multi-Tenant

```
                    hermesdesktop.my.id
                           │
                    ┌──────▼──────┐
                    │   NGINX     │
                    │  (Reverse   │
                    │   Proxy)    │
                    └──────┬──────┘
                           │
          ┌────────────────┼────────────────┐
          │                │                │
    ┌─────▼─────┐   ┌─────▼─────┐   ┌─────▼─────┐
    │ landing.  │   │ store.    │   │ book.     │
    │ hermes..  │   │ hermes..  │   │ hermes..  │
    │ my.id     │   │ my.id     │   │ my.id     │
    └─────┬─────┘   └─────┬─────┘   └─────┬─────┘
          │                │                │
    ┌─────▼─────┐   ┌─────▼─────┐   ┌─────▼─────┐
    │ Laravel   │   │ Laravel   │   │ Laravel   │
    │ App #1    │   │ App #2    │   │ App #3    │
    └─────┬─────┘   └─────┬─────┘   └─────┬─────┘
          │                │                │
          └────────────────┼────────────────┘
                           │
                    ┌──────▼──────┐
                    │   MySQL     │
                    │  (Multi-DB) │
                    └─────────────┘
```

---

## 5. PANDUAN INSTALASI LENGKAP

### 5.1 Setup Server Ubuntu 24.04

```bash
#!/bin/bash
# ============================================
# SCRIPT INSTALASI SERVER — hermesdesktop.my.id
# Jalankan sebagai root di VPS baru
# ============================================

# Update system
apt update && apt upgrade -y

# Install essential packages
apt install -y curl wget git unzip software-properties-common \
    apt-transport-https ca-certificates lsb-release

# ============================================
# 1. INSTALL NGINX
# ============================================
apt install -y nginx
systemctl enable nginx
systemctl start nginx

# Verify
nginx -t
systemctl status nginx

# ============================================
# 2. INSTALL PHP 8.3 + EXTENSIONS
# ============================================
add-apt-repository ppa:ondrej/php -y
apt update
apt install -y php8.3-fpm php8.3-cli php8.3-common \
    php8.3-mysql php8.3-xml php8.3-mbstring php8.3-curl \
    php8.3-zip php8.3-gd php8.3-intl php8.3-bcmath \
    php8.3-readline php8.3-redis php8.3-opcache

# Configure PHP-FPM
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 64M/' /etc/php/8.3/fpm/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 64M/' /etc/php/8.3/fpm/php.ini
sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.3/fpm/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 120/' /etc/php/8.3/fpm/php.ini

systemctl restart php8.3-fpm
systemctl enable php8.3-fpm

# Verify
php -v

# ============================================
# 3. INSTALL MySQL 8.0
# ============================================
apt install -y mysql-server
systemctl enable mysql
systemctl start mysql

# Secure MySQL installation
mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YOUR_STRONG_PASSWORD';"
mysql -e "DELETE FROM mysql.user WHERE User='';"
mysql -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"
mysql -e "DROP DATABASE IF EXISTS test;"
mysql -e "FLUSH PRIVILEGES;"

# Verify
mysql --version

# ============================================
# 4. INSTALL COMPOSER
# ============================================
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer

# Verify
composer --version

# ============================================
# 5. INSTALL NODE.JS 20 LTS + NPM
# ============================================
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs

# Verify
node -v
npm -v

# ============================================
# 6. INSTALL REDIS
# ============================================
apt install -y redis-server
systemctl enable redis-server
systemctl start redis-server

# ============================================
# 7. INSTALL CERTBOT (SSL)
# ============================================
apt install -y certbot python3-certbot-nginx

# ============================================
# 8. SETUP FIREWALL
# ============================================
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw --force enable

# ============================================
# 9. CREATE DIRECTORY STRUCTURE
# ============================================
mkdir -p /home/ubuntu/apps
mkdir -p /home/ubuntu/nginx/sites-available
mkdir -p /home/ubuntu/nginx/sites-enabled
mkdir -p /home/ubuntu/scripts
mkdir -p /home/ubuntu/backups

# ============================================
# 10. CREATE DATABASES FOR ALL SERVICES
# ============================================
DB_PASSWORD="YOUR_STRONG_PASSWORD"

mysql -u root -p"$DB_PASSWORD" <<EOF
CREATE DATABASE IF NOT EXISTS landing_generator CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS mini_store CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS booking_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS invoice_billing CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS crm_simple CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS portfolio_builder CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS blog_cms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS course_platform CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS restaurant_order CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS realestate_listing CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS job_board CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS event_ticketing CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS membership_manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS analytics_dashboard CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS marketplace CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# Create user for all databases
CREATE USER IF NOT EXISTS 'hermes_user'@'localhost' IDENTIFIED BY '$DB_PASSWORD';
GRANT ALL PRIVILEGES ON *.* TO 'hermes_user'@'localhost';
FLUSH PRIVILEGES;
EOF

echo "✅ Server setup complete!"
```

### 5.2 Template Nginx Config

```nginx
# /etc/nginx/sites-available/template.conf
# Copy dan modify untuk setiap layanan

server {
    listen 80;
    server_name SUBDOMAIN.hermesdesktop.my.id;
    root /home/ubuntu/apps/APP_NAME/public;

    index index.php index.html;

    charset utf-8;

    # Security headers
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    add_header X-XSS-Protection "1; mode=block";
    add_header Referrer-Policy "strict-origin-when-cross-origin";

    # Gzip compression
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml text/javascript image/svg+xml;
    gzip_min_length 256;

    # Max upload size
    client_max_body_size 64M;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_hide_header X-Powered-By;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }

    # Cache static assets
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf|eot)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}
```

### 5.3 Script Deploy Otomatis

```bash
#!/bin/bash
# /home/ubuntu/scripts/deploy.sh
# Usage: ./deploy.sh <app_name> <subdomain>

APP_NAME=$1
SUBDOMAIN=$2
DOMAIN="hermesdesktop.my.id"
APP_DIR="/home/ubuntu/apps/${APP_NAME}"
NGINX_CONF="/etc/nginx/sites-available/${APP_NAME}.conf"

if [ -z "$APP_NAME" ] || [ -z "$SUBDOMAIN" ]; then
    echo "Usage: ./deploy.sh <app_name> <subdomain>"
    exit 1
fi

echo "🚀 Deploying ${APP_NAME} to ${SUBDOMAIN}.${DOMAIN}..."

# Step 1: Create Laravel project if not exists
if [ ! -d "$APP_DIR" ]; then
    echo "📦 Creating Laravel project..."
    cd /home/ubuntu/apps
    composer create-project laravel/laravel ${APP_NAME} --prefer-dist
fi

# Step 2: Set permissions
echo "🔒 Setting permissions..."
chown -R www-data:www-data ${APP_DIR}/storage
chown -R www-data:www-data ${APP_DIR}/bootstrap/cache
chmod -R 775 ${APP_DIR}/storage
chmod -R 775 ${APP_DIR}/bootstrap/cache

# Step 3: Install dependencies
echo "📥 Installing dependencies..."
cd ${APP_DIR}
composer install --no-dev --optimize-autoloader
npm install && npm run build

# Step 4: Setup environment
echo "⚙️ Setting up environment..."
if [ ! -f "${APP_DIR}/.env" ]; then
    cp .env.example .env
    php artisan key:generate
fi

# Step 5: Configure Nginx
echo "🌐 Configuring Nginx..."
cat > ${NGINX_CONF} <<EOF
server {
    listen 80;
    server_name ${SUBDOMAIN}.${DOMAIN};
    root ${APP_DIR}/public;
    index index.php index.html;
    charset utf-8;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    client_max_body_size 64M;
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml text/javascript image/svg+xml;
    location / {
        try_files \$uri \$uri/ /index.php?\$query_string;
    }
    location ~ \\.php\$ {
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ /\\.(?!well-known).* {
        deny all;
    }
    location ~* \\.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf|eot)\$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}
EOF

ln -sf ${NGINX_CONF} /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

# Step 6: Setup SSL
echo "🔐 Setting up SSL..."
certbot --nginx -d ${SUBDOMAIN}.${DOMAIN} --non-interactive --agree-tos -m admin@${DOMAIN}

# Step 7: Run migrations
echo "🗄️ Running migrations..."
cd ${APP_DIR}
php artisan migrate --force

echo "✅ ${APP_NAME} deployed successfully!"
echo "🌐 URL: https://${SUBDOMAIN}.${DOMAIN}"
```

### 5.4 Script Scaffold Layanan Baru

```bash
#!/bin/bash
# /home/ubuntu/scripts/new-service.sh
# Usage: ./new-service.sh <service_number> <app_name> <subdomain>

SERVICE_NUM=$1
APP_NAME=$2
SUBDOMAIN=$3
DOMAIN="hermesdesktop.my.id"
APP_DIR="/home/ubuntu/apps/${APP_NAME}"

echo "🔧 Scaffolding Service #${SERVICE_NUM}: ${APP_NAME}"

# Create Laravel project
cd /home/ubuntu/apps
composer create-project laravel/laravel ${APP_NAME} --prefer-dist

cd ${APP_DIR}

# Install common packages
composer require filament/filament:"^3.0" --no-interaction
composer require laravel/breeze --dev
php artisan breeze:install livewire

# Install additional packages based on service
case $SERVICE_NUM in
    2|15) # E-commerce / Marketplace
        composer require midtrans/midtrans-php
        composer require maatwebsite/excel
        ;;
    3) # Booking
        composer require spatie/laravel-google-calendar
        ;;
    4) # Invoice
        composer require barryvdh/laravel-dompdf
        composer require maatwebsite/excel
        ;;
    8) # Course Platform
        composer require barryvdh/laravel-dompdf
        ;;
    10) # Real Estate
        composer require spatie/laravel-medialibrary
        ;;
    12) # Event Ticketing
        composer require simplesoftwareio/simple-qrcode
        composer require midtrans/midtrans-php
        ;;
    14) # Analytics Dashboard
        composer require consoletvs/charts
        ;;
esac

# Install npm dependencies
npm install
npm install -D tailwindcss postcss autoprefixer @tailwindcss/forms
npx tailwindcss init -p

# Setup Filament
php artisan filament:install --panels

# Build assets
npm run build

echo "✅ Service #${SERVICE_NUM} scaffolded!"
echo "📁 Location: ${APP_DIR}"
echo "🌐 Target: https://${SUBDOMAIN}.${DOMAIN}"
```

### 5.5 SSL Certificate Setup

```bash
# Generate SSL for all subdomains
SUBDOMAINS=(
    "landing"
    "store"
    "book"
    "invoice"
    "crm"
    "portfolio"
    "blog"
    "course"
    "menu"
    "properti"
    "jobs"
    "event"
    "member"
    "dashboard"
    "pasar"
)

for sub in "${SUBDOMAINS[@]}"; do
    certbot --nginx -d "${sub}.hermesdesktop.my.id" \
        --non-interactive --agree-tos \
        -m admin@hermesdesktop.my.id
done

# Auto-renewal (certbot sudah menambahkan cron otomatis)
# Verify: certbot renew --dry-run
```

---

## 6. STRUKTUR HERMES PROFILE PER LAYANAN

### Konfigurasi Profile

Setiap layanan memiliki Hermes profile sendiri untuk isolasi dan spesialisasi:

```
~/.hermes/
├── profiles/
│   ├── default/              # Profile utama (orchestrator)
│   ├── landing-gen/          # Layanan 1: Landing Page Generator
│   │   ├── skills/
│   │   │   └── landing-page-builder.md
│   │   └── CLAUDE.md
│   ├── mini-store/           # Layanan 2: E-Commerce Mini Store
│   │   ├── skills/
│   │   │   └── ecommerce-builder.md
│   │   └── CLAUDE.md
│   ├── booking-sys/          # Layanan 3: Booking System
│   │   ├── skills/
│   │   │   └── booking-builder.md
│   │   └── CLAUDE.md
│   ├── invoice-bill/         # Layanan 4: Invoice & Billing
│   │   ├── skills/
│   │   │   └── invoice-builder.md
│   │   └── CLAUDE.md
│   ├── crm-simple/           # Layanan 5: CRM
│   │   ├── skills/
│   │   │   └── crm-builder.md
│   │   └── CLAUDE.md
│   ├── portfolio-bld/        # Layanan 6: Portfolio Builder
│   │   ├── skills/
│   │   │   └── portfolio-builder.md
│   │   └── CLAUDE.md
│   ├── blog-cms/             # Layanan 7: Blog CMS
│   │   ├── skills/
│   │   │   └── blog-builder.md
│   │   └── CLAUDE.md
│   ├── course-plat/          # Layanan 8: Course Platform
│   │   ├── skills/
│   │   │   └── course-builder.md
│   │   └── CLAUDE.md
│   ├── resto-order/          # Layanan 9: Restaurant Order
│   │   ├── skills/
│   │   │   └── restaurant-builder.md
│   │   └── CLAUDE.md
│   ├── realestate/           # Layanan 10: Real Estate
│   │   ├── skills/
│   │   │   └── realestate-builder.md
│   │   └── CLAUDE.md
│   ├── job-board/            # Layanan 11: Job Board
│   │   ├── skills/
│   │   │   └── jobboard-builder.md
│   │   └── CLAUDE.md
│   ├── event-tick/           # Layanan 12: Event Ticketing
│   │   ├── skills/
│   │   │   └── event-builder.md
│   │   └── CLAUDE.md
│   ├── member-mgr/           # Layanan 13: Membership
│   │   ├── skills/
│   │   │   └── membership-builder.md
│   │   └── CLAUDE.md
│   ├── analytics-d/          # Layanan 14: Analytics Dashboard
│   │   ├── skills/
│   │   │   └── analytics-builder.md
│   │   └── CLAUDE.md
│   └── marketplc/            # Layanan 15: Marketplace
│       ├── skills/
│       │   └── marketplace-builder.md
│       └── CLAUDE.md
```

### Template CLAUDE.md per Profile

```markdown
# CLAUDE.md — [NAMA LAYANAN] Agent

## Role
Kamu adalah spesialis pembangun [NAMA LAYANAN] untuk platform 
hermesdesktop.my.id. Kamu bertugas membuat webapp sesuai input client.

## Input Client
- nama_domain: subdomain untuk deploy
- gaya_vibe: [pilihan vibe sesuai layanan]
- warna_utama: hex color
- [input spesifik lainnya]

## Stack
- Laravel 11 + Livewire 3
- Tailwind CSS 3.x
- MySQL 8.0
- Nginx + PHP 8.3
- Filament PHP (admin panel)

## Workflow
1. Terima input client
2. Scaffold Laravel project di /home/ubuntu/apps/{slug}
3. Generate migrations, models, controllers
4. Customize UI sesuai vibe & warna
5. Setup database MySQL
6. Configure Nginx + SSL
7. Deploy & kirim preview link
8. Handle revisi (maks 3x)

## Vibe Styles
Setiap vibe memiliki karakteristik:
- **minimalist**: Clean, banyak whitespace, tipografi kuat
- **bold**: Warna kontras, font besar, impactful
- **elegant**: Subtle, premium feel, muted colors
- **playful**: Warna cerah, rounded, fun elements
- **corporate**: Professional, structured, trust-building
- **warm**: Earth tones, friendly, approachable
- **modern**: Gradient, glass morphism, smooth
- **natural**: Green tones, organic shapes
- **luxury**: Dark + gold, serif fonts, spacious
- **streetwear**: Bold typography, urban, edgy
- **dark-mode**: Dark bg, neon accents
- **tech**: Monospace, grid-based, futuristic
- **artistic**: Creative layouts, unique shapes
- **traditional**: Classic, ornamental, cultural
- **vibrant**: Multi-color, energetic, lively

## Deployment
- App directory: /home/ubuntu/apps/{slug}
- Subdomain: {slug}.hermesdesktop.my.id
- Database: mysql, db name: {slug}
- Run: /home/ubuntu/scripts/deploy.sh {slug} {slug}

## Output
Setiap project harus menghasilkan:
1. Laravel app yang berjalan
2. Database ter-migrate
3. Nginx config aktif
4. SSL certificate terpasang
5. Admin panel (Filament) terkonfigurasi
6. README.md dengan cara penggunaan
```

---

## 7. REVENUE MODEL & ESTIMASI HARGA

### Paket Harga per Layanan

| # | Layanan | Basic | Standard | Premium |
|---|---|---|---|---|
| 1 | Landing Page Generator | Rp 500rb | Rp 1jt | Rp 2jt |
| 2 | E-Commerce Mini Store | Rp 1.5jt | Rp 3jt | Rp 5jt |
| 3 | Booking & Appointment | Rp 1.5jt | Rp 2.5jt | Rp 4jt |
| 4 | Invoice & Billing | Rp 750rb | Rp 1.5jt | Rp 3jt |
| 5 | CRM Sederhana | Rp 1.5jt | Rp 3jt | Rp 5jt |
| 6 | Portfolio Builder | Rp 500rb | Rp 1jt | Rp 2jt |
| 7 | Blog CMS | Rp 750rb | Rp 1.5jt | Rp 3jt |
| 8 | Online Course Platform | Rp 2jt | Rp 4jt | Rp 7jt |
| 9 | Restaurant Order System | Rp 1jt | Rp 2.5jt | Rp 4jt |
| 10 | Real Estate Listing | Rp 2jt | Rp 4jt | Rp 6jt |
| 11 | Job Board | Rp 1.5jt | Rp 3jt | Rp 5jt |
| 12 | Event Ticketing | Rp 1.5jt | Rp 3jt | Rp 5jt |
| 13 | Membership Manager | Rp 1jt | Rp 2.5jt | Rp 4jt |
| 14 | Analytics Dashboard | Rp 1.5jt | Rp 3jt | Rp 5jt |
| 15 | Multi-Vendor Marketplace | Rp 3jt | Rp 6jt | Rp 10jt |

### Perbedaan Paket

```
BASIC:
├── 1 vibe style
├── Maks 5 halaman/section
├── 1x revisi
├── 7 hari delivery
└── 14 hari support

STANDARD:
├── 3 vibe style options
├── Maks 15 halaman/section
├── 3x revisi
├── 5 hari delivery
├── 30 hari support
└── Training video

PREMIUM:
├── Custom vibe design
├── Unlimited halaman/section
├── Unlimited revisi
├── 3 hari delivery
├── 60 hari support
├── Training video + dokumentasi
├── Source code handover
└── Priority support via WhatsApp
```

### Estimasi Revenue Bulanan

```
Skenario Konservatif (5 project/bulan):
├── 3x Basic:    3 × Rp 1.5jt  = Rp 4.5jt
├── 1x Standard: 1 × Rp 3jt    = Rp 3jt
├── 1x Premium:  1 × Rp 5jt    = Rp 5jt
└── TOTAL:                      = Rp 12.5jt/bulan

Skenario Moderat (15 project/bulan):
├── 8x Basic:     8 × Rp 1.5jt = Rp 12jt
├── 5x Standard:  5 × Rp 3jt   = Rp 15jt
├── 2x Premium:   2 × Rp 5jt   = Rp 10jt
└── TOTAL:                       = Rp 37jt/bulan

Skenario Optimis (30 project/bulan):
├── 15x Basic:    15 × Rp 1.5jt = Rp 22.5jt
├── 10x Standard: 10 × Rp 3jt   = Rp 30jt
├── 5x Premium:   5 × Rp 5jt    = Rp 25jt
└── TOTAL:                         = Rp 77.5jt/bulan
```

### Biaya Operasional Bulanan

```
Item                           Biaya/bulan
─────────────────────────────────────────
Tencent Cloud VPS (2CPU/4GB)   ~Rp 300rb
Cloudflare (Free)              Rp 0
Domain (.my.id)                ~Rp 15rb
Email (Resend Free)            Rp 0
SSL (Let's Encrypt)            Rp 0
Payment Gateway Fee (~2.9%)     ~Rp 500rb
Misc (backup, monitoring)      ~Rp 100rb
─────────────────────────────────────────
TOTAL OPERASIONAL              ~Rp 915rb/bulan
```

---

## 📌 CATATAN PENTING

### Keamanan
1. Selalu gunakan HTTPS (Let's Encrypt)
2. Laravel CSRF protection aktif
3. SQL injection prevention via Eloquent ORM
4. XSS prevention via Blade escaping
5. Rate limiting pada API endpoints
6. Regular backup database (daily)
7. Firewall UFW aktif
8. SSH key-only authentication

### Performance
1. Laravel OPcache aktif
2. Redis cache untuk session & cache
3. Nginx gzip compression
4. Static asset caching (1 year)
5. Database indexing pada kolom yang sering di-query
6. Queue untuk proses berat (email, export)

### Scalability
1. Setiap layanan di subdomain terpisah
2. Database terpisah per layanan
3. Bisa scale ke multiple server jika diperlukan
4. Cloudflare CDN untuk static assets
5. Redis untuk centralized session

### Legal & Compliance
1. Syarat & Ketentuan penggunaan
2. Kebijakan Privasi
3. GDPR-compliant analytics (Umami)
4. Payment gateway tersertifikasi PCI DSS

---

## 🚀 QUICK START

```bash
# 1. Clone/copy scripts ke server
scp -P 2222 scripts/* ubuntu@119.28.104.87:/home/ubuntu/scripts/

# 2. Jalankan setup server
ssh -p 2222 ubuntu@119.28.104.87
chmod +x /home/ubuntu/scripts/*.sh
sudo /home/ubuntu/scripts/server-setup.sh

# 3. Setup DNS di Cloudflare
# A record: *.hermesdesktop.my.id → YOUR_SERVER_IP (Proxied)

# 4. Deploy semua layanan
for service in landing-generator mini-store booking-system \
  invoice-billing crm-simple portfolio-builder blog-cms \
  course-platform restaurant-order realestate-listing \
  job-board event-ticketing membership-manager \
  analytics-dashboard marketplace; do
    /home/ubuntu/scripts/new-service.sh ${service}
done

# 5. Setup SSL untuk semua subdomain
/home/ubuntu/scripts/ssl-setup.sh

echo "🎉 Semua layanan siap di hermesdesktop.my.id!"
```

---

*Dokumen ini dibuat oleh OWL untuk hermesdesktop.my.id — Vibe Coding Blueprint v1.0*  
*Last updated: 2026-06-23*
