This commit is contained in:
Flatlogic Bot 2025-12-09 04:32:49 +00:00
parent 16c4d07fc4
commit 9748568c17
7 changed files with 324 additions and 93 deletions

127
admin/index.php Normal file
View File

@ -0,0 +1,127 @@
<?php include 'partials/header.php'; ?>
<!-- Page Content Wrapper -->
<div id="page-content-wrapper">
<?php include 'partials/sidebar.php'; ?>
<div class="container-fluid px-4">
<div class="row my-5">
<h3 class="fs-4 mb-3">Dashboard</h3>
<div class="col">
<div class="row">
<!-- KPI Card 1 -->
<div class="col-lg-3 col-md-6 mb-4">
<div class="card-kpi">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center">
<div>
<p class="mb-0 text-secondary">Total Users</p>
<h4 class="mb-0">1,250</h4>
</div>
<div class="icon-circle bg-primary text-white">
<i class="bi bi-people"></i>
</div>
</div>
</div>
</div>
</div>
<!-- KPI Card 2 -->
<div class="col-lg-3 col-md-6 mb-4">
<div class="card-kpi">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center">
<div>
<p class="mb-0 text-secondary">Total Orders</p>
<h4 class="mb-0">350</h4>
</div>
<div class="icon-circle bg-success text-white">
<i class="bi bi-receipt"></i>
</div>
</div>
</div>
</div>
</div>
<!-- KPI Card 3 -->
<div class="col-lg-3 col-md-6 mb-4">
<div class="card-kpi">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center">
<div>
<p class="mb-0 text-secondary">Pending Payment</p>
<h4 class="mb-0">15</h4>
</div>
<div class="icon-circle bg-warning text-white">
<i class="bi bi-hourglass-split"></i>
</div>
</div>
</div>
</div>
</div>
<!-- KPI Card 4 -->
<div class="col-lg-3 col-md-6 mb-4">
<div class="card-kpi">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center">
<div>
<p class="mb-0 text-secondary">Website Aktif</p>
<h4 class="mb-0">320</h4>
</div>
<div class="icon-circle bg-info text-white">
<i class="bi bi-globe"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-8 mb-4">
<div class="card shadow-sm">
<div class="card-header">
<i class="bi bi-bar-chart-line me-1"></i>
Statistik Order Bulanan
</div>
<div class="card-body">
<canvas id="orderChart"></canvas>
</div>
</div>
</div>
<div class="col-lg-4 mb-4">
<div class="card shadow-sm">
<div class="card-header">
<i class="bi bi-bell me-1"></i>
Aktivitas Terbaru
</div>
<div class="list-group list-group-flush">
<a href="#" class="list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-between">
<h6 class="mb-1">Order Baru #1234</h6>
<small>5 menit lalu</small>
</div>
<p class="mb-1">Paket Website UKM oleh Budi.</p>
</a>
<a href="#" class="list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-between">
<h6 class="mb-1">User Baru</h6>
<small>15 menit lalu</small>
</div>
<p class="mb-1">Siti mendaftar.</p>
</a>
<a href="#" class="list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-between">
<h6 class="mb-1">Pembayaran Diterima #1233</h6>
<small>1 jam lalu</small>
</div>
<p class="mb-1">Pembayaran dari Ahmad dikonfirmasi.</p>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?php include 'partials/footer.php'; ?>

11
admin/partials/footer.php Normal file
View File

@ -0,0 +1,11 @@
</div>
<!-- /#wrapper -->
<!-- Bootstrap Bundle with Popper -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<!-- Chart.js -->
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.2/dist/chart.umd.min.js"></script>
<!-- Custom JS -->
<script src="../assets/js/main.js"></script>
</body>
</html>

19
admin/partials/header.php Normal file
View File

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Admin Panel</title>
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Bootstrap Icons -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet">
<!-- Google Fonts (Poppins) -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<!-- Custom CSS -->
<link rel="stylesheet" href="../assets/css/custom.css">
</head>
<body>
<div class="d-flex" id="wrapper">

View File

@ -0,0 +1,27 @@
<!-- Sidebar -->
<div class="bg-white" id="sidebar-wrapper">
<div class="sidebar-heading text-center py-4 fs-4 fw-bold text-uppercase border-bottom">
<i class="bi bi-shield-lock me-2"></i>Admin Panel
</div>
<div class="list-group list-group-flush my-3">
<a href="/admin/" class="list-group-item list-group-item-action active">
<i class="bi bi-speedometer2 me-2"></i>Dashboard
</a>
<a href="#" class="list-group-item list-group-item-action">
<i class="bi bi-people me-2"></i>Manajemen User
</a>
<a href="#" class="list-group-item list-group-item-action">
<i class="bi bi-box-seam me-2"></i>Manajemen Produk
</a>
<a href="#" class="list-group-item list-group-item-action">
<i class="bi bi-receipt me-2"></i>Manajemen Order
</a>
<a href="#" class="list-group-item list-group-item-action">
<i class="bi bi-gear me-2"></i>Pengaturan
</a>
<a href="/" class="list-group-item list-group-item-action bg-light">
<i class="bi bi-box-arrow-left me-2"></i>Kembali ke Situs
</a>
</div>
</div>
<!-- /#sidebar-wrapper -->

76
assets/css/custom.css Normal file
View File

@ -0,0 +1,76 @@
:root {
--primary-color: #0050A0;
--secondary-color: #F2B705;
--bg-light: #F8F9FA;
--surface-white: #FFFFFF;
--text-dark: #212529;
}
body {
font-family: 'Poppins', sans-serif;
overflow-x: hidden;
}
#wrapper {
display: flex;
}
#sidebar-wrapper {
min-height: 100vh;
width: 250px;
transition: margin .25s ease-out;
border-right: 1px solid #ddd;
}
#sidebar-wrapper .sidebar-heading {
color: var(--primary-color);
}
#sidebar-wrapper .list-group-item {
border: 0;
border-radius: 0;
color: #555;
font-weight: 500;
}
#sidebar-wrapper .list-group-item.active {
background-color: var(--primary-color);
color: var(--surface-white);
border-left: 5px solid var(--secondary-color);
}
#sidebar-wrapper .list-group-item:hover:not(.active) {
background-color: var(--bg-light);
color: var(--primary-color);
}
#page-content-wrapper {
flex: 1;
background-color: var(--bg-light);
}
.card-kpi {
border: none;
border-radius: 0.75rem;
box-shadow: 0 4px 12px rgba(0,0,0,0.05);
transition: transform .2s;
}
.card-kpi:hover {
transform: translateY(-5px);
}
.card-kpi .icon-circle {
width: 50px;
height: 50px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
}
.card.shadow-sm {
border-radius: 0.75rem;
border: none;
}

33
assets/js/main.js Normal file
View File

@ -0,0 +1,33 @@
document.addEventListener("DOMContentLoaded", function() {
const ctx = document.getElementById('orderChart');
if (ctx) {
new Chart(ctx, {
type: 'bar',
data: {
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Ags', 'Sep', 'Okt', 'Nov', 'Des'],
datasets: [{
label: 'Jumlah Order',
data: [12, 19, 3, 5, 2, 3, 7, 8, 10, 15, 9, 11],
backgroundColor: 'rgba(0, 80, 160, 0.7)',
borderColor: 'rgba(0, 80, 160, 1)',
borderWidth: 1,
borderRadius: 5
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
beginAtZero: true
}
},
plugins: {
legend: {
display: false
}
}
}
});
}
});

124
index.php
View File

@ -35,116 +35,54 @@ $projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? '';
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<style> <style>
:root { :root {
--bg-color-start: #6a11cb; --primary-color: #0050A0;
--bg-color-end: #2575fc; --secondary-color: #F2B705;
--text-color: #ffffff; --bg-light: #F8F9FA;
--card-bg-color: rgba(255, 255, 255, 0.01);
--card-border-color: rgba(255, 255, 255, 0.1);
} }
body { body {
margin: 0; font-family: 'Poppins', sans-serif;
font-family: 'Inter', sans-serif; background-color: var(--bg-light);
background: linear-gradient(45deg, var(--bg-color-start), var(--bg-color-end)); }
color: var(--text-color); .hero {
display: flex; background: linear-gradient(45deg, var(--primary-color), #007bff);
justify-content: center; color: white;
align-items: center; padding: 80px 0;
min-height: 100vh;
text-align: center; text-align: center;
overflow: hidden;
position: relative;
} }
body::before { .hero h1 {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M-10 10L110 10M10 -10L10 110" stroke-width="1" stroke="rgba(255,255,255,0.05)"/></svg>');
animation: bg-pan 20s linear infinite;
z-index: -1;
}
@keyframes bg-pan {
0% { background-position: 0% 0%; }
100% { background-position: 100% 100%; }
}
main {
padding: 2rem;
}
.card {
background: var(--card-bg-color);
border: 1px solid var(--card-border-color);
border-radius: 16px;
padding: 2rem;
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.1);
}
.loader {
margin: 1.25rem auto 1.25rem;
width: 48px;
height: 48px;
border: 3px solid rgba(255, 255, 255, 0.25);
border-top-color: #fff;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.hint {
opacity: 0.9;
}
.sr-only {
position: absolute;
width: 1px; height: 1px;
padding: 0; margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap; border: 0;
}
h1 {
font-size: 3rem;
font-weight: 700; font-weight: 700;
margin: 0 0 1rem;
letter-spacing: -1px;
} }
p { .btn-admin {
margin: 0.5rem 0; background-color: var(--secondary-color);
font-size: 1.1rem; border-color: var(--secondary-color);
color: var(--text-dark);
font-weight: 600;
} }
code { .btn-admin:hover {
background: rgba(0,0,0,0.2); background-color: #d9a404;
padding: 2px 6px; border-color: #d9a404;
border-radius: 4px;
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
footer {
position: absolute;
bottom: 1rem;
font-size: 0.8rem;
opacity: 0.7;
} }
</style> </style>
</head> </head>
<body> <body>
<main> <main>
<div class="card"> <div class="hero">
<h1>Analyzing your requirements and generating your website…</h1> <div class="container">
<div class="loader" role="status" aria-live="polite" aria-label="Applying initial changes"> <h1 class="display-4">Manajemen User & Domain</h1>
<span class="sr-only">Loading…</span> <p class="lead">Selamat datang di panel manajemen Anda. Klik tombol di bawah untuk masuk ke dashboard admin.</p>
</div> <a href="/admin/" class="btn btn-admin btn-lg mt-3">Masuk ke Admin Panel</a>
<p class="hint"><?= ($_SERVER['HTTP_HOST'] ?? '') === 'appwizzy.com' ? 'AppWizzy' : 'Flatlogic' ?> AI is collecting your requirements and applying the first changes.</p> </div>
<p class="hint">This page will update automatically as the plan is implemented.</p> </div>
<p>Runtime: PHP <code><?= htmlspecialchars($phpVersion) ?></code> — UTC <code><?= htmlspecialchars($now) ?></code></p> <div class="container text-center py-5">
<p>Runtime: PHP <code><?= htmlspecialchars($phpVersion) ?></code> — UTC <code><?= htmlspecialchars($now) ?></code></p>
</div> </div>
</main> </main>
<footer> <footer class="text-center text-muted py-3">
Page updated: <?= htmlspecialchars($now) ?> (UTC) Page updated: <?= htmlspecialchars($now) ?> (UTC)
</footer> </footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</body> </body>
</html> </html>