Langsung ke konten utama

Project Website CMS: Membangun AdminLayout.vue dan Dashboard.vue

Sekarang kita akan membangun AdminLayout.vue dan Dashboard.vue dari nol, dengan pendekatan yang:

✅ Aman
✅ Rapi dan ringan
✅ Terintegrasi dengan Tailwind CSS
✅ Siap untuk dikembangkan lebih lanjut (CRUD, dll)

📁 Struktur Komponen yang Akan Kita Buat


src/
├── layouts/
│   └── AdminLayout.vue     // ← Layout admin dengan header + sidebar
├── views/
│   └── admin/
│       └── Dashboard.vue   // ← Halaman dashboard pertama setelah login

✅ 1. AdminLayout.vue (Header + Sidebar)


directory: src/layouts/AdminLayout.vue
<template> <div class="min-h-screen flex bg-gray-100"> <!-- Sidebar --> <aside class="w-64 bg-white shadow-md hidden md:block"> <div class="p-6 font-bold text-blue-600 text-xl border-b border-gray-200"> STIP Admin </div> <nav class="p-4 space-y-2 text-gray-700"> <RouterLink to="/admin/dashboard" class="block px-4 py-2 rounded hover:bg-blue-100" active-class="bg-blue-200 text-blue-800 font-semibold" > Dashboard </RouterLink> <!-- Tambahkan menu lainnya nanti --> </nav> </aside> <!-- Main Content --> <div class="flex-1 flex flex-col"> <!-- Header --> <header class="bg-white shadow p-4 flex justify-between items-center"> <div class="text-xl font-semibold text-gray-700">Dashboard</div> <div class="flex items-center gap-4"> <div class="text-gray-600">{{ auth.user?.name || "Admin" }}</div> <button @click="handleLogout" class="text-sm bg-red-500 hover:bg-red-600 text-white px-3 py-1 rounded" > Logout </button> </div> </header> <!-- Dynamic Content --> <main class="p-6"> <RouterView /> </main> </div> </div> </template> <script setup> import { useAuthStore } from '@/stores/auth'; import { useRouter, RouterView, RouterLink } from 'vue-router'; import { watchEffect } from 'vue'; const auth = useAuthStore(); const router = useRouter(); watchEffect(() => { if (!auth.isAuthenticated) { router.replace({ name: 'admin-login' }); } }); const handleLogout = () => { auth.logout(); router.push({ name: 'admin-login' }); }; </script>

✅ 2. Dashboard.vue


directory: src/layouts/AdminLayout.vue
<template> <div> <h1 class="text-2xl font-bold text-gray-800 mb-4">Selamat Datang di Admin Dashboard</h1> <p class="text-gray-600"> Gunakan menu di sebelah kiri untuk mengelola konten website STIP. </p> </div> </template> <script setup> // Nanti bisa tambahkan logic/komponen di sini </script>

🔐 Keamanan (Sudah Diatur):

  • Auth guard ada di router (kamu sudah punya).

  • Layout ini juga punya watchEffect → auto-redirect kalau belum login.

  • Logout menghapus token dan mengarahkan ulang ke halaman login.


🎨 Desain:

  • Sudah responsif (sidebar disembunyikan di mobile).

  • Sudah pakai Tailwind dan siap pakai komponen lain.

  • Struktur layout sangat modular dan mudah dikembangkan (tambah menu, page baru, dll).


✅ Langkah Lanjut:

  1. Salin kedua file ke tempat yang ditentukan (layouts dan views/admin).

  2. Pastikan router index.js sudah mengarah ke AdminLayout dan Dashboard.vue.

Contoh route:


directory: frontend/src/routes/index.js
{ path: '/admin', component: AdminLayout, children: [ { path: 'dashboard', name: 'admin-dashboard', component: Dashboard, }, // Tambahkan route lainnya di sini ], meta: { requiresAuth: true }, }

Yuk, langsung cobain yuk!
Semoga berhasil

Komentar

Postingan populer dari blog ini

Instalasi Vue 3 menggunakan Vue CLI & Vite

Instalasi Vue 3 menggunakan Vue CLI Vue CLI adalah alat untuk membuat proyek Vue secara otomatis dengan konfigurasi yang sudah diatur sebelumnya. Ini adalah pilihan yang bagus jika kamu ingin memiliki kontrol lebih atas pengaturan proyek dan konfigurasi build. Langkah-langkah: Install Vue CLI secara global (jika belum terpasang) : Buka terminal dan jalankan perintah berikut untuk menginstal Vue CLI secara global di komputer kamu: npm install -g @vue/cli Buat proyek baru menggunakan Vue CLI : Setelah Vue CLI terpasang, kamu bisa membuat proyek Vue 3 baru dengan perintah berikut: // Pilih salah satu vue create nama-proyek npm create vue@latest nama-proyek // Rekomendasi karena sesuai Official Docs Gantilah nama-proyek dengan nama yang kamu inginkan untuk proyekmu. Pilih konfigurasi : Ketika perintah di atas dijalankan, Vue CLI akan menanyakan beberapa pilihan konfigurasi. Pilihlah opsi yang sesuai (misalnya, memilih preset default yang sudah menyertakan Babe...

Membuat code block/ syntax highlighter pada Blogger

Untuk membuat code block (blok kode) di Blogger, Anda dapat menggunakan tag HTML <pre><code> ... </code></pre> . Dengan ini, Anda dapat menampilkan kode dengan format yang sesuai dan mencegah interpretasi tag HTML di dalamnya. Langkah-langkah membuat code block/ syntax highlighter: Buka editor postingan Blogger Masuk ke Blogger, lalu pilih postingan yang ingin Anda edit atau buat postingan baru Beralih ke mode HTML Di editor postingan, klik tombol "HTML" (biasanya di sebelah kiri) untuk beralih ke tampilan HTML Tambahkan tag <pre><code>...</code></pre> Posisikan kursor di tempat di mana Anda ingin menampilkan blok kode. Kemudian, ketik atau tempelkan kode Anda di antara tag <pre><code> dan </pre> . Contoh: <pre><code> console.log("Hello, world!"); </code></pre> Sembunyikan tag <p> Jika Anda menambahkan blok kode di dalam paragraf, hilangkan tag <p...

Mengatasi Error: Module Apache pada XAMPP Control Panel tidak dapat digunakan

Module Apache XAMPP tidak bisa di Start?  Apakah kamu sedang mengalami kendala module Apache di XAMPP control panel tidak bisa digunakan? Mungkin saja, yang sedang kamu alami saat ini, sama dengan yang pernah saya alami. Gambar 1: Pesan error module Apache di XAMPP Control Panel Bila pesan error yang kamu dapatkan ketika klik Start module Apache sama seperti gambar diatas, penyebabnya adalah port yang digunakan oleh module Apache XAMPP telah digunakan oleh layanan / aplikasi lain di komputer kamu. Ya, mungkin hal seperti ini yang disebut dengan konflik port. Cari tahu penyebab konflik port Pertama-tama, cari tahu layanan / aplikasi apa yang sedang menggunakan port yang sama dengan yang digunakan oleh module Apache XAMPP. Untuk itu, buka command prompt (cmd), lalu ketikkan perintah dibawah ini: netstat -ano | find "80" Bagaimana mengatasinya? Setelah mengetahui penyebab konflik port tersebut, apa yang harus dilakukan untuk mengatasi masalah tersebut? Ada 2 cara untuk mengatasi...