

1. Submit Proposal
2. Janji temu
3. Profile ( Homepage & One Page )
4. Sosial Media


Includes
class-database.php
class-proposal.php
class-appoinment.php
class-webhook.php
class-starsender.php
class-admin.php
class-public.php
class-setting.php ( Nama , Kontak Whatsapp Ketua ,  Bio Singkat , Warna , Logo - Logo , Slide Foto , Logo Utama , Pengalaman  ‘Bisa menambahkan lebih dari satu’ )

Templates
form-proposal.php.  ( Shortcake )
form-appoinment.php ( Shortcake )
homepage.php ( Shortcake )

assets
Proposal.css
Proposal.js
appoinment.css
Appointment.js

hallo-ketua.php

Note :
No Over Engineering
No Over Explain
Discuss frist before execute


1. Database & Data Flow:
  - Apa saja tabel yang dibutuhkan? (proposals, appointments, settings, dll?) yes
  - Apakah proposal dan appointment perlu tracking status? (pending, approved, rejected, dll?) perlu
  - Apakah perlu menyimpan history/log aktivitas? Tidak usah

  2. Webhook & StarSender:
  - class-webhook.php dan class-starsender.php ini untuk integrasi apa? WhatsApp API? Iya WhatsApp api
  - Kapan webhook dipicu? (saat submit proposal, saat appointment, atau keduanya?) keduanya
  - Format notifikasi seperti apa yang diinginkan?

Format :

1. Ketika ada yang submi proposal maupun appoinment API Starsender akan mengirimkan pesan ke no ketua ( Format Pesan & No Ketua di set di class-setting.php )
2. WhatsApp API akan mengirimkan pesan ke ketua terkait status yang pending, misal :

- Ketua, apa proposal ini akan diterima , ketika 1 Jika Diterima dan Ketika 2 Jika di tolak
- Jika diterima lalu API akan mengirimkan pesan, ketua, boleh kasih alasan mengaap diterima ? ( Jawaban tersave ke database & pemilik proposal diberikan notifikasi )
- Jika ditolak jangan ada action apapun hanya rubah status
- Bergitupun dengan konsep appoinment

  3. Frontend & User Experience:
  - Apakah plugin ini untuk public submission atau hanya untuk admin? ( Publik submission , pengirim diwajibkan mengisi homer WhatsApp yang divalidasi oleh OTP )

Isi Form Submi Proposal :

1. Lembaga / Organisasi / Komunitas Pengusul
2. Penangung Jawab
3. Alamat Lembaga/Organisasi/Komunitas/Pengusul
4. Jelaskan Event/Kegiatan/Keperluan yang diusulkan
5. Mengapa harus dibantu oleh ketua 
6. Kira - kira apa feedback untuk ketua ?
7. Berapa Jumlahnya ?
8. Kapan Kegiatannya ?
9. Dimana Kegiatannya ?
10. Proposal/Foto dll ( File : PDF, JPG dll )

Isi Form Appoinment

1. Nama
2. Keperluan 
3. Kapan ( Tanggal dan Jam )

  - Setelah submit proposal/appointment, user dapat konfirmasi seperti apa? (email, WA, atau halaman terima kasih?) Halaman Terima Kasih dan WA
  - Apakah perlu form validation khusus? Semua field required dan validasi utama sebelum mengisi form adalah OTP

  4. Settings & Customization:
  - Untuk "Pengalaman" yang bisa lebih dari satu, formatnya seperti apa? tahun, Judul, Lembaga, deskripsi
  - Warna yang di-setting akan apply ke mana? (template homepage saja atau semua form?) Warna : Primary ( background utama ) , Warna Font , Warna Background Section , Warna Button  
  - Logo-logo yang dimaksud untuk apa saja? Bukan logo - logo itu adalah logo perusahaan tempat ketua bekerja ataupun berorganisasi , logo utama adalah Lembaga atau Perusahaan utama yang akan dibanding olehnya.

  5. Homepage Template:
  - Konsep one-page profile seperti apa yang diinginkan? (sections apa saja?)
1. Slide Foto ketua ( Maximal : 5 Foto )
2. Tentang Saya 
3. Pengalaman Saya
4. Logo - Logo

- Header 
- Left Side : Nama Dan Logo Utama 
- Right Side : Menu dan Mobile Dropdown Hamburger Menu

  - Apakah responsive/mobile-friendly required? Mobile First seperti mobile apps




Simpan API key starsender di wp-config.php : 3a52c247-446d-4388-850b-c5b21f8aca9e

Doc Starsender , pastikan mengikuti ini :

Kirim Pesan
Standarisasi Pengiriman Menggunakan API Pada Platform STARSENDER

HTTP REQUEST

POST https://api.starsender.online/api/send

Header Parameters
Parameter	Default	Description
Authorization	true	Device API key, anda bisa dapatkan di menu device
Body Parameters
Parameter	Default	Description	Placeholder
messageType	true	Definisi tipe pesan	text / media
to	true	Nomor tujuan pengiriman pesan, dapat berawalan 0 ataupun kode negara	
body	false	Pesan yang akan dikirimkan	
file	false	URL File yang akan dikirimkan	
delay	false	Fitur delay pesan dalam satuan detik	
schedule	false	Jadwal pengiriman pesan dalam format unix milis	
Implementasi dengan PHP
kirim.php
<?php

$curl = curl_init();

$pesan = [
  "messageType" => "text",
  "to" => "08123456789",
  "body" => "Your Message",
  "file" => "https://file-url.com",
  "delay" => 10,
  "schedule" => 1665408510000
];

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.starsender.online/api/send',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => json_encode($pesan),
  CURLOPT_HTTPHEADER => array(
    'Content-Type:application/json',
    'Authorization: YOUR API KEY'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

Respon API
{
    "success": true,
    "data": {},
    "message": "Success sent message"
}

Webhook
Dengan webhook anda bisa menerima data pesan masuk ke website anda secara realtime

untuk mengolah data webhook anda dapat menggunakan kode berikut :

<?php
$json = file_get_contents('php://input');
$data=json_decode($json);
echo $data->message; // isi pesan


echo $data->from; // dari
echo $data->timestamp; // timestamp