PROMPT
Prompt Master: Pembangunan Portal Berita Modern (Google Apps Script)
Deskripsi Proyek
Buatlah sebuah aplikasi Portal Berita lengkap menggunakan ekosistem Google (Google Apps Script, Sheets, dan Drive) dengan tampilan modern, minimalis, dan responsif. Aplikasi ini harus memiliki sistem Multi-Page Application (MPA) sederhana yang memisahkan halaman pembaca dan halaman admin.
Arsitektur Teknis
Backend (Google Apps Script - Code.gs):
Gunakan
doGet(e)untuk routing halaman menggunakan parameter URL?page=admin.Implementasikan fungsi
getLatestNews()untuk mengambil data dari Google Sheets.Implementasikan fungsi
prosesInputBerita(data)untuk menangani upload gambar Base64 ke Google Drive dan menyimpan metadata ke Google Sheets.Sertakan fungsi
setupDatabase()untuk mengotomatisasi pembuatan folder Drive dan spreadsheet dengan header:Timestamp, Judul, Kategori, Isi, UrlFoto.
Database (Google Sheets):
Nama Sheet: "Berita".
Kolom:
[A] Timestamp,[B] Judul,[C] Kategori,[D] Isi,[E] UrlFoto.
Frontend (HTML/Tailwind CSS):
Halaman Utama (index.html):
Desain modern menggunakan font Playfair Display (Serif) untuk judul dan Inter (Sans) untuk isi.
Hero Section: Menampilkan berita terbaru dengan gambar besar, gradient overlay, dan kategori.
Trending Sidebar: Daftar berita populer dengan penomoran besar.
News Grid: Layout kartu responsif untuk berita lainnya.
Fitur Modal: Saat berita diklik, munculkan modal backdrop-blur yang menampilkan konten lengkap tanpa berpindah halaman.
Fallback System: Gunakan data dummy jika objek
google.scripttidak terdeteksi (untuk lingkungan pratinjau).Image Formatter: Fungsi untuk mengubah URL Drive menjadi direct link
lh3.googleusercontent.com/d/[ID].
Panel Admin (Admin.html):
Form input berita yang elegan dengan area Drag-and-Drop untuk upload foto.
Preview gambar sebelum diunggah.
Notifikasi sukses/gagal yang muncul setelah proses
google.script.runselesai.Loading overlay saat proses upload sedang berlangsung.
Fitur Utama
Upload Gambar: Simpan foto langsung ke Drive dan simpan URL publiknya di Sheets.
Responsif: Tampilan harus menyesuaikan secara sempurna di perangkat mobile, tablet, dan desktop.
Interaktif: Animasi
fade-in, efek hover pada kartu berita, dan transisi halus pada modal.Navigasi: Link dinamis menggunakan
<?= getAppUrl() ?>untuk berpindah antar halaman.
Petunjuk Eksekusi
Jalankan setup otomatis untuk mendapatkan ID aset.
Deploy sebagai Web App dengan akses "Anyone".
Pastikan izin akses Drive disetel ke "Anyone with the link can view".
Spesifikasi FrontEnd
Prompt Master: Pembangunan Portal Berita Modern (Google Apps Script)
Deskripsi Proyek
Buatlah sebuah aplikasi Portal Berita lengkap menggunakan ekosistem Google (Google Apps Script, Sheets, dan Drive) dengan tampilan modern, minimalis, dan responsif. Aplikasi ini harus memiliki sistem Multi-Page Application (MPA) sederhana yang memisahkan halaman pembaca dan halaman admin.
Arsitektur Teknis
Backend (Google Apps Script - Code.gs):
Gunakan
doGet(e)untuk routing halaman menggunakan parameter URL?page=admin.Implementasikan fungsi
getLatestNews()untuk mengambil data dari Google Sheets.Implementasikan fungsi
prosesInputBerita(data)untuk menangani upload gambar Base64 ke Google Drive dan menyimpan metadata ke Google Sheets.Sertakan fungsi
setupDatabase()untuk mengotomatisasi pembuatan folder Drive dan spreadsheet dengan header:Timestamp, Judul, Kategori, Isi, UrlFoto.
Database (Google Sheets):
Nama Sheet: "Berita".
Kolom:
[A] Timestamp,[B] Judul,[C] Kategori,[D] Isi,[E] UrlFoto.
Spesifikasi Detil Frontend (HTML/Tailwind CSS):
Desain Sistem & Tipografi
Tipografi: Gunakan font Playfair Display (Serif) untuk memberikan kesan koran profesional pada judul berita (heading), dan Inter (Sans-serif) untuk keterbacaan tinggi pada teks isi (body).
Palet Warna: * Primary: Dark Slate (#0f172a) untuk elemen navigasi dan teks utama.
Accent: Sky Blue (#0ea5e9) untuk kategori, tombol, dan elemen interaktif.
Neutral: Gray scales untuk background (#f8fafc) dan teks sekunder.
Komponen Antarmuka (index.html)
Navbar: Desain sticky dengan efek blur (glassmorphism), logo teks di kiri, dan link kategori di tengah/kanan.
Hero Section (Utama): * Grid 12 kolom (Desktop).
Area utama (8 kolom) menampilkan satu berita terbaru dengan gambar resolusi tinggi, gradient overlay gelap di bawah teks, dan tag kategori.
Area trending (4 kolom) menampilkan daftar 3-4 berita populer berikutnya dengan tipografi nomor besar (bold).
News Feed (Grid): Layout kartu responsif (1 kolom mobile, 2 tablet, 3 desktop) yang menampilkan thumbnail berita dengan aspek rasio 16:10, judul tebal, dan cuplikan isi berita (excerpt).
Modal Reader: * Implementasikan modal pop-up yang muncul saat kartu berita diklik.
Sertakan tombol tutup (X), gambar utama di atas, tanggal publikasi, dan teks isi berita lengkap dengan format paragraf yang rapi (
whitespace-pre-line).
Sistem Loading: Tampilkan elemen Skeleton Loader (animasi pulse gray) selama data diambil dari server untuk meningkatkan User Experience.
Panel Manajemen (Admin.html)
Dashboard Layout: Fokus pada form input di tengah dengan lebar maksimal (max-w-6xl).
Form Input: * Input judul tanpa border (borderless) dengan ukuran font besar.
Area drag-and-drop untuk unggah foto dengan indikator visual saat file ditarik masuk.
Fitur Image Preview instan menggunakan
FileReaderAPI sebelum data dikirim.
Status Indikator: Tombol "Terbitkan" yang berubah menjadi state loading saat proses simpan berlangsung, diikuti dengan notifikasi toast atau kotak pesan sukses/gagal.
Logika Frontend & Interaksi
Image Formatter: Logika JavaScript untuk mengubah ID file Drive atau URL Drive mentah menjadi format link stabil
https://lh3.googleusercontent.com/d/[FILE_ID]agar gambar dapat dimuat langsung di tag<img>.Animasi: Gunakan transisi halus pada hover kartu (
scale-105), durasi transisi minimal 300ms, dan efekfade-inpada elemen saat data selesai dimuat.Error Handling: Tampilkan pesan bantuan yang ramah jika database kosong atau terjadi kegagalan koneksi server.
Fitur Utama
Upload Gambar: Simpan foto langsung ke Drive dan simpan URL publiknya di Sheets secara otomatis.
Responsif: Tampilan harus menyesuaikan secara sempurna di perangkat mobile, tablet, dan desktop (Mobile-First approach).
Navigasi: Gunakan link dinamis menggunakan scriptlet GAS
<?= getAppUrl() ?>untuk mengelola perpindahan antar halaman tanpa hard-coded URL.
Petunjuk Eksekusi
Jalankan fungsi
setupDatabase()satu kali untuk mendapatkan ID aset dan mengatur header kolom.Deploy aplikasi sebagai Web App dengan pengaturan akses "Anyone" agar dapat diakses oleh pembaca umum.
Pastikan pengaturan berbagi (sharing) pada Folder Google Drive disetel ke "Anyone with the link can view" agar gambar dapat tampil di frontend.
Spesifikasi BackEnd
Prompt Master: Pembangunan Portal Berita Modern (Google Apps Script)
Deskripsi Proyek
Buatlah sebuah aplikasi Portal Berita lengkap menggunakan ekosistem Google (Google Apps Script, Sheets, dan Drive) dengan tampilan modern, minimalis, dan responsif. Aplikasi ini harus memiliki sistem Multi-Page Application (MPA) sederhana yang memisahkan halaman pembaca dan halaman admin.
Arsitektur Teknis
Backend (Google Apps Script - Code.gs):
Gunakan
doGet(e)untuk routing halaman menggunakan parameter URL?page=admin.Implementasikan fungsi
getLatestNews()untuk mengambil data dari Google Sheets.Implementasikan fungsi
prosesInputBerita(data)untuk menangani upload gambar Base64 ke Google Drive dan menyimpan metadata ke Google Sheets.Sertakan fungsi
setupDatabase()untuk mengotomatisasi pembuatan folder Drive dan spreadsheet dengan header:Timestamp, Judul, Kategori, Isi, UrlFoto.
Database (Google Sheets):
Nama Sheet: "Berita".
Kolom:
[A] Timestamp,[B] Judul,[C] Kategori,[D] Isi,[E] UrlFoto.
Spesifikasi Detil Backend (Google Apps Script):
Manajemen Routing & Akses
doGet(e) Entry Point: Fungsi utama untuk menangani permintaan GET. Gunakan
HtmlService.createTemplateFromFileuntuk merenderindex.htmlsebagai default danAdmin.htmljika parameterpage=admindiberikan.URL Helper: Buat fungsi
getAppUrl()yang mengembalikanScriptApp.getService().getUrl()agar navigasi antar halaman tetap dinamis meskipun URL deployment berubah.Environment Mode: Tambahkan
setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)pada objekHtmlOutputagar aplikasi dapat berjalan lancar di dalam iframe atau lingkungan pratinjau.
Pengolahan Data (getLatestNews)
Data Sanitization: Lakukan filter terhadap baris kosong di Spreadsheet untuk mencegah error "undefined" pada frontend.
Date Normalization: Pastikan kolom
Timestampdikonversi menjadi format string ISO (toISOString()) agar objek Date dari Google Sheets dapat diproses dengan benar oleh JavaScript di sisi klien.Sorting: Urutkan data secara terbalik (LIFO - Last In First Out) sehingga berita terbaru selalu berada di urutan pertama array.
Sistem Unggah & File (prosesInputBerita)
Base64 Processing: Terima data foto dalam format Base64. Gunakan
Utilities.base64Decodeuntuk mengubah string tersebut menjadi byte array, lalu buat objekBlobdengan MIME type yang sesuai (image/jpeg, image/png, dll).Drive Integration: Simpan file gambar ke folder tertentu menggunakan
DriveApp.getFolderById(). Berikan izin akses publik pada file secara otomatis menggunakan.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW).URL Generation: Hasilkan URL langsung menggunakan pola
https://drive.google.com/uc?export=view&id=[FILE_ID]atau simpan ID-nya saja untuk diproses oleh utilitas frontend.
Integritas Database (setupDatabase)
Automasi Aset: Fungsi ini harus memeriksa apakah file Spreadsheet dan Folder Drive sudah ada. Jika belum, buat secara otomatis menggunakan
SpreadsheetApp.create()danDriveApp.createFolder().Header Protection: Atur baris pertama Spreadsheet dengan header yang tebal (bold), latar belakang berwarna, dan pembekuan baris (freeze) untuk memudahkan pengelolaan manual.
Logging: Gunakan
Logger.log()untuk menampilkan ID Spreadsheet dan ID Folder yang dihasilkan agar user bisa menyalinnya ke variabel konstanta di bagian atas skrip.
Spesifikasi Detil Frontend (HTML/Tailwind CSS):
Desain Sistem & Tipografi
Tipografi: Gunakan font Playfair Display (Serif) untuk memberikan kesan koran profesional pada judul berita (heading), dan Inter (Sans-serif) untuk keterbacaan tinggi pada teks isi (body).
Palet Warna: * Primary: Dark Slate (#0f172a) untuk elemen navigasi dan teks utama.
Accent: Sky Blue (#0ea5e9) untuk kategori, tombol, dan elemen interaktif.
Neutral: Gray scales untuk background (#f8fafc) dan teks sekunder.
Komponen Antarmuka (index.html)
Navbar: Desain sticky dengan efek blur (glassmorphism), logo teks di kiri, dan link kategori di tengah/kanan.
Hero Section (Utama): * Grid 12 kolom (Desktop).
Area utama (8 kolom) menampilkan satu berita terbaru dengan gambar resolusi tinggi, gradient overlay gelap di bawah teks, dan tag kategori.
Area trending (4 kolom) menampilkan daftar 3-4 berita populer berikutnya dengan tipografi nomor besar (bold).
News Feed (Grid): Layout kartu responsif (1 kolom mobile, 2 tablet, 3 desktop) yang menampilkan thumbnail berita dengan aspek rasio 16:10, judul tebal, dan cuplikan isi berita (excerpt).
Modal Reader: * Implementasikan modal pop-up yang muncul saat kartu berita diklik.
Sertakan tombol tutup (X), gambar utama di atas, tanggal publikasi, dan teks isi berita lengkap dengan format paragraf yang rapi (
whitespace-pre-line).
Sistem Loading: Tampilkan elemen Skeleton Loader (animasi pulse gray) selama data diambil dari server untuk meningkatkan User Experience.
Panel Manajemen (Admin.html)
Dashboard Layout: Fokus pada form input di tengah dengan lebar maksimal (max-w-6xl).
Form Input: * Input judul tanpa border (borderless) dengan ukuran font besar.
Area drag-and-drop untuk unggah foto dengan indikator visual saat file ditarik masuk.
Fitur Image Preview instan menggunakan
FileReaderAPI sebelum data dikirim.
Status Indikator: Tombol "Terbitkan" yang berubah menjadi state loading saat proses simpan berlangsung, diikuti dengan notifikasi toast atau kotak pesan sukses/gagal.
Logika Frontend & Interaksi
Image Formatter: Logika JavaScript untuk mengubah ID file Drive atau URL Drive mentah menjadi format link stabil
https://lh3.googleusercontent.com/d/[FILE_ID]agar gambar dapat dimuat langsung di tag<img>.Animasi: Gunakan transisi halus pada hover kartu (
scale-105), durasi transisi minimal 300ms, dan efekfade-inpada elemen saat data selesai dimuat.Error Handling: Tampilkan pesan bantuan yang ramah jika database kosong atau terjadi kegagalan koneksi server.
Fitur Utama
Upload Gambar: Simpan foto langsung ke Drive dan simpan URL publiknya di Sheets secara otomatis.
Responsif: Tampilan harus menyesuaikan secara sempurna di perangkat mobile, tablet, dan desktop (Mobile-First approach).
Navigasi: Gunakan link dinamis menggunakan scriptlet GAS
<?= getAppUrl() ?>untuk mengelola perpindahan antar halaman tanpa hard-coded URL.
Petunjuk Eksekusi
Jalankan fungsi
setupDatabase()satu kali untuk mendapatkan ID aset dan mengatur header kolom.Deploy aplikasi sebagai Web App dengan pengaturan akses "Anyone" agar dapat diakses oleh pembaca umum.
Pastikan pengaturan berbagi (sharing) pada Folder Google Drive disetel ke "Anyone with the link can view" agar gambar dapat tampil di frontend.

Tidak ada komentar:
Posting Komentar