Audit & Action Plan â Subkhan Ibnu Aji â 27 Maret 2026
Temuan: API menunjukkan status ERROR, tapi setelah cek langsung di Vercel dashboard, production deployment sebenarnya READY (Mar 16, commit "Merge PR #38"). Yang ERROR adalah deployment "chore: verify" yang di-BLOCK oleh Vercel â bukan production. Live site database.bangkim.com berjalan normal.
Temuan: Deployment terakhir dpl_6nefHSaugxLB7KtWEnrPsnQJpUf4 dengan commit "chore: trigger Vercel deployment for client wrapper fix" sudah berstatus READY. Project sudah berfungsi normal.
Temuan: Halaman berisi dashboard portfolio 34 project dengan 7 kategori. Tidak ada data sensitif yang terekspos â hanya deskripsi project dan link publik. Aman diakses publik.
bangkim-data-sensitif.vercel.app bisa diakses siapa saja tanpa login. Data yang terekspos:
/dashboard/stats, /dashboard/bi-dashboard, /dashboard/hr-command-centerstate.token)Option A: Tambah Vercel Password Protection (paling cepat)
# Buka: https://vercel.com/subkhan-ibnu-ajis-projects/bangkim-data-sensitif/settings # Scroll ke "Deployment Protection" # Enable "Password Protection" # Set password yang kuat # Save
Option B: Tambah Environment-based Auth di code
// Tambahkan middleware auth di Next.js/Express
// File: middleware.js atau server.js
// Basic auth check
const ADMIN_PASSWORD = process.env.HR_ADMIN_PASSWORD;
function authMiddleware(req, res, next) {
const token = req.headers.authorization;
if (!token || token !== `Bearer ${ADMIN_PASSWORD}`) {
return res.status(401).json({ error: 'Unauthorized' });
}
next();
}
Option C: Set project ke private (paling aman)
# Via Vercel Dashboard: # Settings â General â "Transfer" atau "Delete" # Atau buat repo GitHub jadi Private: # github.com/subkhanibnuaji/bangkim-data-sensitif â Settings â Danger Zone â Make private
| Check | Status | Action |
|---|---|---|
| bangkim-data-sensitif publicly accessible | EXPOSED | Add password protection NOW |
| ibnu-private-personal publicly accessible | SAFE | No sensitive data found |
| API endpoints exposed on bangkim-data-sensitif | EXPOSED | Add auth middleware |
| GitHub repo visibility | CHECK | Ensure bangkim-data-sensitif repo is Private |
| Environment variables (tokens, keys) | CHECK | Rotate any exposed tokens |
Repos akademik, tutorial, dan eksperimen yang tidak aktif. Archive = tetap bisa diakses tapi jelas tidak aktif.
#!/bin/bash
# archive-repos.sh
# Jalankan: chmod +x archive-repos.sh && ./archive-repos.sh
# Pastikan gh CLI sudah login: gh auth login
REPOS=(
"Kuliah-Semester-1" "Kuliah-Semester-2" "Kuliah-Semester-3"
"Kuliah-Semester-4" "Kuliah-Semester-5" "Kuliah-Semester-6"
"Kuliah-Semester-7" "Kuliah-Semester-8"
"TUBES-PBO" "TUBES-Struktur-Data" "TUBES-Basis-Data"
"TUBES-Pemrograman-Web" "TUBES-Jarkom"
"TUBES-Rekayasa-Perangkat-Lunak" "TUBES-Kecerdasan-Buatan"
"TUBES-Sistem-Operasi"
"belajar-git" "desktop-tutorial"
"dicoding-fundamental-web" "dicoding-frontend-beginner"
"dicoding-frontend-expert" "dicoding-backend-beginner"
"dicoding-backend-expert" "dicoding-react"
"dicoding-machine-learning" "dicoding-flutter"
"learn-python-basics" "learn-javascript-30days"
"tutorial-react-native" "tutorial-vue-js"
"playground-experiments" "test-deployment"
)
echo "ð¦ Archiving ${#REPOS[@]} repos..."
for repo in "${REPOS[@]}"; do
echo "â Archiving: $repo"
gh repo archive "subkhanibnuaji/$repo" --yes 2>/dev/null \
&& echo " â
Archived" \
|| echo " â ï¸ Skipped (not found or already archived)"
done
echo ""
echo "â
Done! Archived repos tetap accessible tapi marked inactive."
Menambahkan topics/tags ke semua repo aktif agar mudah dicari dan dikategorikan.
#!/bin/bash # add-topics.sh # === SUPERAPP === for repo in superapp superapp-main superapp-life superapp-pro superapp-hub superappgov superappskill; do gh repo edit "subkhanibnuaji/$repo" --add-topic "superapp,nextjs,fullstack,indonesia" 2>/dev/null done # === GOVERNMENT === for repo in bangkim sidalih sipeka e-kinerja pelayanan-publik e-arsip; do gh repo edit "subkhanibnuaji/$repo" --add-topic "government,indonesia,public-service,webapp" 2>/dev/null done # === AI & TECH === for repo in ai-hub claude-tools ai-assistant chatgpt-clone llm-experiments; do gh repo edit "subkhanibnuaji/$repo" --add-topic "artificial-intelligence,machine-learning,ai,python" 2>/dev/null done # === FINANCE === for repo in financial-tracker budget-app investment-dashboard; do gh repo edit "subkhanibnuaji/$repo" --add-topic "finance,budgeting,dashboard,webapp" 2>/dev/null done # === CONTENT & EDU === for repo in blog-ibnu education-platform learning-hub; do gh repo edit "subkhanibnuaji/$repo" --add-topic "education,content,blog,nextjs" 2>/dev/null done # === PERSONAL BRAND === for repo in heyibnu portfolio career-job ibnu-private-personal; do gh repo edit "subkhanibnuaji/$repo" --add-topic "portfolio,personal-brand,career,nextjs" 2>/dev/null done # === DATABASE / TOOLS === for repo in databasekumuhbangkim bangkim-data-sensitif; do gh repo edit "subkhanibnuaji/$repo" --add-topic "database,hr-system,government,dashboard" 2>/dev/null done echo "â Topics added to all active repos!"
GitHub hanya membolehkan pin 6 repos. Ini rekomendasi berdasarkan portfolio impact:
| # | Repo | Alasan |
|---|---|---|
| 1 | superapp-main | Flagship project â menunjukkan kemampuan full-stack |
| 2 | superappgov | Government tech â domain expertise |
| 3 | databasekumuhbangkim | Database system â shows backend capability |
| 4 | heyibnu | Personal site â professional branding |
| 5 | ai-hub | AI/ML projects â modern tech stack |
| 6 | career-job | Career platform â practical utility |
Cara pin: Buka github.com/subkhanibnuaji â klik "Customize your pins" â pilih 6 repos di atas â Save
File ibnu-linktree.html sudah siap. Berikut cara deploy:
# Option A: Deploy via Vercel CLI (recommended) # Install: npm i -g vercel mkdir ibnu-hub && cp ibnu-linktree.html ibnu-hub/index.html cd ibnu-hub vercel --prod --name ibnu-hub # Option B: Deploy via GitHub # 1. Buat repo baru: github.com/new â name: "ibnu-hub" # 2. Push file: git init git add index.html git commit -m "feat: deploy Ibnu Hub linktree" git remote add origin https://github.com/subkhanibnuaji/ibnu-hub.git git push -u origin main # 3. Connect ke Vercel: vercel.com/new â Import ibnu-hub # 4. (Optional) Add custom domain: hub.heyibnu.com # Option C: Quick deploy via Vercel Dashboard # 1. Buka vercel.com/new # 2. Upload folder containing index.html # 3. Deploy!
Gabungkan project-project yang overlapping untuk efisiensi:
| Monorepo | Merge From | Hemat |
|---|---|---|
| superapp-monorepo | 17 superapp projects â 1 monorepo | 16 slots |
| gov-platform | 18 government projects â 1 platform | 17 slots |
| ibnu-tools | 8 utility tools â 1 toolbox | 7 slots |
| ibnu-content | 14 content/edu â 1 CMS | 13 slots |
| ibnu-finance | 5 finance apps â 1 dashboard | 4 slots |
| ibnu-ai | 7 AI projects â 1 hub | 6 slots |
| ibnu-market | 9 marketplace â 1 platform | 8 slots |
Total penghematan: ~71 project slots (93 â ~22)
# Setup Turborepo Monorepo npx create-turbo@latest superapp-monorepo cd superapp-monorepo # Struktur: # apps/ # main/ â superapp-main # life/ â superapp-life # pro/ â superapp-pro # hub/ â superapp-hub # gov/ â superappgov # skill/ â superappskill # packages/ # ui/ â shared components # config/ â shared config # database/ â shared DB layer
| Task | Waktu | Prioritas |
|---|---|---|
| Protect bangkim-data-sensitif â tambah password/auth | 30 menit | P0 |
| Rotate any exposed tokens/keys | 15 menit | P0 |
| Make bangkim-data-sensitif GitHub repo Private | 5 menit | P0 |
| Deploy ibnu-linktree.html as ibnu-hub | 10 menit | P1 |
| Task | Waktu | Prioritas |
|---|---|---|
| Run archive-repos.sh â archive 32 repos | 5 menit | P1 |
| Run add-topics.sh â tag all active repos | 5 menit | P1 |
| Pin 6 best repos on GitHub profile | 5 menit | P1 |
| Setup monorepo untuk superapp (pilot) | 2-3 hari | P2 |
| Delete test/duplicate Vercel projects | 30 menit | P2 |
| Task | Waktu | Prioritas |
|---|---|---|
| Migrate gov projects ke gov-platform monorepo | 1 minggu | P2 |
| Setup CI/CD pipeline untuk semua monorepos | 2-3 hari | P2 |
| Add domain strategy: *.heyibnu.com, *.bangkim.com | 1 hari | P3 |
| Standardize framework: migrate HTML/JS â Next.js | 2-4 minggu | P3 |
| Setup monitoring & uptime checks | 2 hari | P3 |
| File | Deskripsi | Status |
|---|---|---|
| ibnu-linktree.html | Hub semua 93 Vercel + 159 GitHub projects â Linktree style | READY |
| ibnu-rekomendasi.html | 10 rekomendasi strategis dengan chart & detail | READY |
| ibnu-execution-report.html | Laporan eksekusi + scripts (file ini) | READY |
| vercel-project-audit.html | Audit table interaktif 50 project (dari API) | READY |
| vercel-project-analysis.html | Analisis lengkap framework & kategori | READY |