KembaliArsip / superappgov / databangkim
superappgov

databangkim

68 file · 442.9 KB

Sistem informasi live — databangkim.vercel.appBuka di tab baru

README

DataBangkim

Pusat Data & Link Hub untuk Direktorat Pengembangan Kawasan Permukiman — Kementerian Perumahan dan Kawasan Permukiman (PKP).

Website statis yang berfungsi sebagai "command center" untuk semua link, data, dan resource terkait pekerjaan di Direktorat Bangkim. Konsep mirip Linktree tapi dengan fitur superpower: nested data hierarchy, search, filter, multiple views, bookmarks, dan keyboard shortcuts.

Fitur

  • Nested Data Hierarchy — Setiap bagian bisa memiliki child/cabang (contoh: Database Kumuh > SK Kumuh, Peta Spasial, Baseline Data)
  • Search & Filter Real-time — Cari berdasarkan judul, deskripsi, atau tag
  • Multiple Views — Grid, List, dan Compact view
  • Category Sections — Accordion collapsible per kategori
  • Status Indicators — Active / Maintenance / Deprecated / Coming Soon
  • Quick-copy URL — Salin URL link dengan satu klik
  • Dark/Light Mode — Toggle tema dengan shortcut t
  • Bookmark Favorites — Pin link favorit (disimpan di localStorage)
  • Keyboard Shortcuts — Navigasi cepat (tekan ? untuk daftar lengkap)
  • Export JSON — Download data link dalam format JSON
  • Responsive & Mobile-first — Optimal di semua ukuran layar

Tech Stack

TeknologiVersi
Next.js16+ (App Router, Static Export)
TypeScript5+ (strict mode)
Tailwind CSS4+
Lucide ReactIcons
Google FontsPlus Jakarta Sans, Inter, JetBrains Mono
GitHub PagesDeployment via GitHub Actions

Struktur Proyek

src/
├── app/                    # Next.js App Router pages
│   ├── layout.tsx          # Root layout (fonts, metadata, theme script)
│   ├── page.tsx            # Homepage — main link hub
│   ├── globals.css         # Global styles + CSS variables
│   └── not-found.tsx       # Custom 404 page
├── components/             # React components
│   ├── Header.tsx          # Navy gradient header + search
│   ├── StatsBar.tsx        # Quick stats bar
│   ├── SearchFilter.tsx    # Filters, sort, view toggle
│   ├── CategorySection.tsx # Collapsible category accordion
│   ├── LinkCard.tsx        # Rich link card (grid/list) with nested children
│   ├── LinkCardCompact.tsx # Compact row view with nested children
│   ├── DynamicIcon.tsx     # Lucide icon resolver
│   ├── StatusBadge.tsx     # Status indicator
│   ├── TagPill.tsx         # Tag chip
│   ├── ThemeToggle.tsx     # Dark/light mode toggle
│   ├── Footer.tsx          # Footer
│   ├── BackToTop.tsx       # Scroll to top button
│   ├── KeyboardShortcuts.tsx # Shortcut modal
│   ├── ExportButton.tsx    # Export as JSON
│   └── EmptyState.tsx      # No results state
├── data/
│   └── links.json          # ⭐ MASTER DATA — semua links & konfigurasi
├── types/
│   └── index.ts            # TypeScript interfaces
├── hooks/
│   ├── useSearch.ts        # Search & filter logic
│   ├── useBookmarks.ts     # localStorage bookmarks
│   └── useKeyboardNav.ts   # Keyboard navigation
└── lib/
    ├── utils.ts            # Utility functions
    └── constants.ts        # Status config, labels

Cara Menambah/Edit Link

Semua data dikelola lewat file src/data/links.json. Tidak ada admin panel — edit langsung di code.

Menambah Link Baru

Tambahkan objek baru di array links dalam src/data/links.json:

{
  "id": "ds-006",
  "title": "Judul Link Baru",
  "description": "Deskripsi singkat tentang link ini.",
  "url": "https://example.com",
  "category": "data-statistik",
  "icon": "database",
  "tags": ["tag1", "tag2"],
  "status": "active",
  "priority": 1,
  "addedAt": "2026-03-03",
  "updatedAt": "2026-03-03",
  "source": "internal",
  "accessLevel": "internal"
}

Menambah Link dengan Sub-Item (Nested)

Gunakan properti children untuk membuat hierarki bersarang:

{
  "id": "ds-010",
  "title": "Data Program XYZ",
  "description": "Kumpulan data program XYZ.",
  "category": "data-statistik",
  "icon": "folder",
  "tags": ["program", "xyz"],
  "status": "active",
  "priority": 1,
  "addedAt": "2026-03-03",
  "updatedAt": "2026-03-03",
  "children": [
    {
      "id": "ds-010-a",
      "title": "Sub Data A",
      "description": "Detail sub data A.",
      "url": "https://example.com/a",
      "category": "data-statistik",
      "icon": "file-text",
      "tags": ["sub-data"],
      "status": "active",
      "priority": 1,
      "addedAt": "2026-03-03",
      "updatedAt": "2026-03-03"
    }
  ]
}

Data Schema

interface LinkItem {
  id: string;               // ID unik, format: "cat-001"
  title: string;            // Judul link
  description: string;      // Deskripsi singkat
  url?: string;             // URL (opsional untuk parent node)
  category: CategoryType;   // Kategori
  icon: string;             // Nama icon Lucide
  tags: string[];           // Tag untuk pencarian
  status: StatusType;       // "active" | "maintenance" | "deprecated" | "coming-soon"
  priority: number;         // 1-10, urutan dalam kategori
  addedAt: string;          // Tanggal ditambahkan (ISO)
  updatedAt: string;        // Tanggal diperbarui (ISO)
  source?: string;          // "internal" | "external" | "google-sheet" | "drive"
  accessLevel?: string;     // "public" | "internal" | "restricted"
  pinned?: boolean;         // Tampil di atas
  children?: LinkItem[];    // Sub-item bersarang
}

Kategori

IDLabelIcon
sistem-informasiSistem Informasi & Aplikasimonitor-smartphone
data-statistikData & Statistikbar-chart-3
regulasiRegulasi & Kebijakanscale
monitoringMonitoring & Evaluasiactivity
dokumenDokumen & Templatefile-text
kolaborasiKolaborasi & Komunikasiusers
referensiReferensi & Knowledge Basebook-open
toolsTools & Utilitieswrench
mediaMedia & Publikasiimage
lainnyaLainnyamore-horizontal

Keyboard Shortcuts

ShortcutAksi
/Fokus pencarian
EscapeBersihkan pencarian / tutup modal
tToggle tema gelap/terang
?Tampilkan shortcut keyboard
g lalu hScroll ke atas
1-9Lompat ke kategori

Development

# Install dependencies
npm install

# Run development server
npm run dev

# Build for production
npm run build

# Output folder: ./out (static export)

Deployment

Website di-deploy otomatis ke GitHub Pages via GitHub Actions setiap kali push ke branch main.

URL: https://subkhanibnuaji.github.io/databangkim/

Setup GitHub Pages

  1. Buka Settings > Pages
  2. Pilih Source: GitHub Actions
  3. Push ke branch main

Maintainer

Tim IT — Direktorat Pengembangan Kawasan Permukiman, Kementerian PKP

File Utama

  • .gitignore
  • CLAUDE-CHROME-PROMPT.md
  • DEPLOY-VERCEL.md
  • DEPLOYMENT_RULES.md
  • README.md
  • eslint.config.mjs
  • next.config.ts
  • next.config.ts.backup