Portal Web Terpadu Kelurahan Wergu Wetan
Purpose: Inventory & cleanup queue for active codebase files, aligned with ANF-Agentic branching.
Maintained by: Engineering Team | Last Updated: 20 Mei 2026 (Vibe Coding Standardization v3.8.0)
This manifest follows ANF-Agentic Architecture principles:
be/*branches own backend files (Server Actions, Prisma, services)fe/*branches own frontend files (components, pages, styles)pr/*branches merge both for integration testingmainholds production-ready, validated manifest
Rule of thumb: If a file is not listed here and not in architecture.md's directory structure, it's a candidate for deletion.
"Tambahkan sesuatu → tulis di CHANGELOG.md DULU, baru update file yang relevan."
Ini bukan opsional. Ini adalah aturan keras (hard rule) ANF-Agentic Architecture. Alih-alih mengupdate 5 file per perubahan, cukup catat perubahannya di CHANGELOG.md secara kronologis lalu update dokumen spesifik yang terpengaruh langsung.
| Jenis Perubahan | Dokumen yang Wajib Diupdate |
|---|---|
| SEMUA PERUBAHAN | CHANGELOG.md (Catat versi dan deskripsi) |
File baru dibuat (*.action.ts, *.tsx, dll.) |
project-manifest.md → Active Inventory |
| File dihapus atau dipindah | project-manifest.md → Cleanup Queue + Completed Cleanup |
| Routing baru ditambah | architecture.md → Section 6 (Routing Conventions) |
| Pattern/arsitektur baru dipakai | architecture.md → Section relevan + version log |
| Feature selesai (status berubah) | project-manifest.md → Feature Coverage Matrix |
| Folder baru dibuat | architecture.md → Section 4 (Directory Structure) |
| Rendering mode diubah | project-manifest.md → Completed Cleanup |
| Perubahan perlu terlihat di README | README.md → bagian yang relevan |
Setiap kali membuat actions/<domain>.action.ts baru, wajib:
1. Buat file: actions/<domain>.action.ts
- 'use server' di baris pertama
- Zod schema untuk setiap input
- Return type: { success: boolean; data?; message? }
- revalidatePath() setelah mutasi
2. Update project-manifest.md:
- Tambah ke Active Inventory (BE Workspace)
- Tambah ke Feature Coverage Matrix
3. Update architecture.md:
- Tambah ke Action Files inventory table (Section 9)
- Update version log (Section 12)
Setiap page.tsx yang fetch data dari DB WAJIB punya:
export const dynamic = "force-dynamic"; // ← WAJIB, baris pertama setelah importsAgent Instruction (Antigravity/Claude Code):
- Jangan tutup sesi kerja sebelum semua dokumen yang relevan diupdate. Cek:
CHANGELOG.md✅ |project-manifest.md✅ |architecture.md✅ |README.md✅- 🛑 GIT TRANSPARENCY & SAFETY RULE: DILARANG KERAS mengeksekusi perintah
git commit/pushsecara otomatis di belakang layar. Agen WAJIB menampilkan preview (git diff/ rincian file) secara tertulis di chat dan MENUNGGU lampu hijau ("Approve"/"Oke") dari User sebelum mengeksekusi command Git!
| File | Purpose | Status |
|---|---|---|
actions/auth.action.ts |
Admin JWT login/logout | ✅ Active |
actions/admin.action.ts |
Admin CRUD: getAllAdmins, tambahAdmin, editAdmin, hapusAdmin |
✅ Active |
actions/berita.action.ts |
News CRUD (Kegiatan model) | ✅ Active |
actions/potensi.action.ts |
Village potentials CRUD | ✅ Active |
actions/banner.action.ts |
Homepage banner management | ✅ Active |
actions/home.action.ts |
Homepage stats & welcome message | ✅ Active |
actions/kontak.action.ts |
Contact info & form submission | ✅ Active |
actions/layanan.action.ts |
Services (Layanan) management | ✅ Active |
actions/tentang-kami.action.ts |
About page content management | ✅ Active |
actions/search.action.ts |
Site-wide search (PostgreSQL FTS) | ✅ Active |
actions/pesan.action.ts |
Contact form messages (PesanMasuk) | ✅ Active |
actions/ulasan.action.ts |
Customer Satisfaction Index (Ulasan IKM) | ✅ Active |
| File / Directory | Purpose | Status |
|---|---|---|
lib/db.ts |
Prisma singleton | ✅ Active |
lib/dictionary.ts |
Localization dictionary (i18n) | ✅ Active |
lib/safe-action.ts |
Central admin JWT session verification helper | ✅ Active |
lib/services/ (reserved) |
Business logic layer (empty, reserved) | 🔄 Optional |
| File | Purpose | Status |
|---|---|---|
prisma/schema.prisma |
All Prisma models | ✅ Active |
prisma/seed.ts |
Database seeding (admins, banners, sample data) | ✅ Active |
| Model | Table | Purpose | Status |
|---|---|---|---|
Admin |
admin |
Login credentials + RBAC (admin/super) | ✅ Active |
Kegiatan |
kegiatan |
News articles, announcements | ✅ Active |
PotensiDesa |
potensidesa |
UMKM & village potentials | ✅ Active |
BannerHomepage |
bannerhomepage |
Hero carousel banners | ✅ Active |
HomeStatistic |
homestatistic |
Homepage statistics (population, RT, etc.) | ✅ Active |
HomeWelcome |
homewelcome |
Lurah's welcome message | ✅ Active |
HomeService |
homeservice |
Service icons on homepage | ✅ Active |
PerangkatDesa |
perangkatdesa |
Staff organizational structure | ✅ Active |
ProfilKonten |
profilkonten |
About page (visi, misi, sejarah) | ✅ Active |
SiteConfig |
siteconfig |
Global site config (phone, email) | ✅ Active |
UlasanLayanan |
ulasanlayanan |
Service reviews and IKM ratings | ✅ Active |
PesanMasuk |
pesanmasuk |
Contact form messages | ✅ Active |
Umkm |
umkm |
Legacy — unused | ❌ Deprecated |
Penduduk |
penduduk |
Legacy — unused | ❌ Deprecated |
| File | Route | Purpose | Status |
|---|---|---|---|
app/page.tsx |
/ |
Root redirect → /home |
✅ Active |
app/home/page.tsx |
/home |
Homepage | ✅ Active |
app/berita/page.tsx |
/berita |
News listing | ✅ Active |
app/berita/[slug]/page.tsx |
/berita/[slug] |
News detail | ✅ Active |
app/potensi-desa/page.tsx |
/potensi-desa |
Village potentials listing | ✅ Active |
app/potensi-desa/[slug]/page.tsx |
/potensi-desa/[slug] |
Potensi detail | ✅ Active |
app/layanan/page.tsx |
/layanan |
Services overview | ✅ Active |
app/kontak/page.tsx |
/kontak |
Contact page + form | ✅ Active |
app/tentang-kami/page.tsx |
/tentang-kami |
About page | ✅ Active |
| File | Route | Purpose | Status |
|---|---|---|---|
app/admin/layout.tsx |
— | Admin layout + JWT verification | ✅ Active |
app/admin/page.tsx |
/admin |
Redirect → /admin/dashboard |
✅ Active |
app/admin/(auth)/login/page.tsx |
/admin/login |
Admin login | ✅ Active |
app/admin/(dashboard)/dashboard/page.tsx |
/admin/dashboard |
Dashboard overview | ✅ Active |
app/admin/(dashboard)/pesan-masuk/page.tsx |
/admin/pesan-masuk |
Contact messages inbox | ✅ Active |
app/admin/halaman/beranda/page.tsx |
/admin/halaman/beranda |
Homepage content manager | ✅ Active |
app/admin/halaman/beranda/sambutan/page.tsx |
/admin/halaman/beranda/sambutan |
Welcome message editor | ✅ Active |
app/admin/halaman/beranda/layanan-icon/page.tsx |
/admin/halaman/beranda/layanan-icon |
Home service icons editor | ✅ Active |
app/admin/halaman/banner/page.tsx |
/admin/halaman/banner |
Banner carousel manager | ✅ Active |
app/admin/halaman/berita/daftar/page.tsx |
/admin/halaman/berita/daftar |
News management (CRUD) | ✅ Active |
app/admin/halaman/potensi-desa/daftar/page.tsx |
/admin/halaman/potensi-desa/daftar |
Potensi management | ✅ Active |
app/admin/halaman/layanan/daftar/page.tsx |
/admin/halaman/layanan/daftar |
Services management | ✅ Active |
app/admin/halaman/kontak/daftar/page.tsx |
/admin/halaman/kontak/daftar |
Contact info management | ✅ Active |
app/admin/halaman/tentang-kami/page.tsx |
/admin/halaman/tentang-kami |
About content manager | ✅ Active |
app/admin/halaman/tentang-kami/teks/page.tsx |
/admin/halaman/tentang-kami/teks |
Visi/misi text editor | ✅ Active |
app/admin/halaman/tentang-kami/struktur/page.tsx |
/admin/halaman/tentang-kami/struktur |
Org structure editor | ✅ Active |
app/admin/halaman/tentang-kami/statistik/page.tsx |
/admin/halaman/tentang-kami/statistik |
Statistics editor | ✅ Active |
app/admin/settings/page.tsx |
/admin/settings |
Redirect → manajemen-admin | ✅ Active |
app/admin/settings/manajemen-admin/page.tsx |
/admin/settings/manajemen-admin |
Admin user management (super only) | ✅ Active |
| Component | Purpose | Status |
|---|---|---|
Navbar.tsx |
Global layout navigation & responsive DOM structure | ✅ Active |
Footer.tsx |
Footer semantics & external system linking | ✅ Active |
TopBar.tsx |
High-priority utility & localization toggle interface | ✅ Active |
ClientLayout.tsx |
Root UI provider & core viewport wrapper | ✅ Active |
BackToTop.tsx |
Scroll-depth reactive floating action button | ✅ Active |
HeroCarousel.tsx |
Dynamic hero carousel with auto-rotation state | ✅ Active |
HomeView.tsx |
Landing page aggregator & primary view controller | ✅ Active |
SorotanDesa.tsx |
Village highlights & geographic features UI | ✅ Active |
StaticBanner.tsx |
Fallback static banner interface | ✅ Active |
BeritaView.tsx |
News catalog pagination & listing interface | ✅ Active |
BeritaDetailView.tsx |
News entity detail & SSR content renderer | ✅ Active |
PotensiDesaView.tsx |
Village potentials (UMKM) index view | ✅ Active |
PotensiDetailView.tsx |
Village potential entity renderer | ✅ Active |
LayananView.tsx |
Service directory presentation layer | ✅ Active |
KontakView.tsx |
Contact portal & lead-generation form UI | ✅ Active |
TentangKamiView.tsx |
Institutional profile & vision-mission renderer | ✅ Active |
GlobalSearchModal.tsx |
FTS (Full Text Search) omnibox interface (Cmd+K) | ✅ Active |
SkeletonDetail.tsx |
Loading state placeholder (Optimistic UI) | ✅ Active |
| Component | Purpose | Status |
|---|---|---|
AdminSidebar.tsx |
Admin contextual routing & sidebar DOM | ✅ Active |
AdminHeader.tsx |
Session control & top-level administrative bar | ✅ Active |
CommandPalette.tsx |
Administrative shortcut orchestrator (Cmd+K) | ✅ Active |
AdminBannerManager.tsx |
Hero Banner CMS & media asset controller | ✅ Active |
AdminHomeFeatures.tsx |
Dynamic Landing Page Configurator | ✅ Active |
AdminStrukturClient.tsx |
Organizational Chart (Perangkat Desa) editor interface | ✅ Active |
AdminLayananManager.tsx |
Public Services directory manager | ✅ Active |
ManajemenAdminClient.tsx |
RBAC (Role-Based Access Control) user provisioning interface | ✅ Active |
ModalTambahBerita.tsx |
News entity creation modal (Write Operations) | ✅ Active |
ModalEditBerita.tsx |
News entity mutation modal (Update Operations) | ✅ Active |
BeritaRowActions.tsx |
News table contextual actions (Edit/Delete dispatchers) | ✅ Active |
PotensiModals.tsx |
Village Potentials CRUD mutation interfaces | ✅ Active |
PotensiRowActions.tsx |
Potensi table contextual actions | ✅ Active |
ConfirmDeleteButton.tsx |
Destructive action confirmation guard | ✅ Active |
InboxClient.tsx |
Contact messages aggregation & viewer UI | ✅ Active |
PanduanLayanan.tsx |
Service directory schema guide | ⏳ Planned |
⚠️ File ini berada diapp/admin/(bukancomponents/admin/) karena terikat langsung dengan routing Next.js App Router.
| Component | Purpose | Status |
|---|---|---|
AdminShell.tsx |
Layout shell admin: merangkum AdminSidebar + AdminHeader, dipanggil oleh app/admin/layout.tsx |
✅ Active |
| File | Purpose | Status |
|---|---|---|
proxy.ts |
Global routing proxy for JWT auth redirect protection on /admin |
✅ Active |
app/globals.css |
Tailwind v4 + CSS custom properties (@layer theme) |
✅ Active |
app/tw-safelist.txt |
Dynamic Tailwind class safelist — VITAL untuk kelas dinamis | ✅ Active |
app/layout.tsx |
Root layout (Plus Jakarta Sans, metadata SEO) | ✅ Active |
app/loading.tsx |
Global loading skeleton (Next.js Streaming SSR) | ✅ Active |
app/sitemap.ts |
XML sitemap auto-generate untuk SEO production | ✅ Active |
next.config.ts |
Next.js config (HTTPS, Server Actions allowedOrigins) |
✅ Active |
postcss.config.mjs |
PostCSS + Tailwind v4 pipeline (tailwind.config.ts tidak ada di v4) |
✅ Active |
| Directory | Purpose | Status |
|---|---|---|
.docs/ |
ANF-Agentic system prompt rules, architecture, manifest, and changelogs. Includes optimization-hardening.md (Advanced RAG features) and resync-protocol.md (AI SOP). |
✅ Active |
context/ |
React Context providers (LanguageContext.tsx) |
✅ Active |
scripts/ |
Security and utility scripts (security-validator.js, setup-hooks.js) |
✅ Active |
| public/images/ | Hero images, potensi photos (+ subdirektori potensi/) | ✅ Active |
| public/icons/ | SVG icons (belum diisi — reserved) | 🆕 Empty |
| public/uploads/ | User-uploaded content (foto berita, lurah, potensi dari admin panel) | ✅ Active |
| public/logo-kudus.svg | Logo resmi Kabupaten Kudus (200KB) — dipakai di Navbar/Footer | ✅ Active |
| lib/services/ | Business logic layer (reserved) | 🔄 Optional |
| trash-temp/ | REVIEW QUEUE — files pending decision | 🔍 Review |
| .github/workflows/ci.yml | CI Pipeline — Lint, TypeCheck, Build di setiap push/PR | ✅ Active |
| .github/workflows/docs-sync.yml | Enforce ANF Docs-Sync Law di setiap PR | ✅ Active |
| .github/workflows/security-audit.yml | Weekly npm audit keamanan dependency | ✅ Active |
| .github/PULL_REQUEST_TEMPLATE.md | Checklist PR otomatis (ANF + BE/FE/Security) | ✅ Active |
| .github/ISSUE_TEMPLATE/bug_report.yml | Form bug report terstruktur | ✅ Active |
| .github/ISSUE_TEMPLATE/feature_request.yml | Form feature request terstruktur | ✅ Active |
| .github/ISSUE_TEMPLATE/config.yml | Issue chooser config — nonaktifkan blank issues | ✅ Active |
| CONTRIBUTING.md | Panduan kontribusi standar GitHub | ✅ Active |
| SECURITY.md | Security policy — cara lapor kerentanan secara privat | ✅ Active |
Out-of-scope (tidak diimplementasi):
components/ui/— primitive component library (TODO)app/api/— hanyatemplate/stats(Excel export); tidak ada REST API- Error monitoring (Sentry) — belum dikonfigurasi
| Feature | BE Action | FE Route | FE Component(s) | Status |
|---|---|---|---|---|
| Admin Auth | auth.action.ts |
/admin/login |
LoginForm (in page.tsx) | ✅ Done |
| Admin User Management | admin.action.ts |
/admin/settings/manajemen-admin |
ManajemenAdminClient |
✅ Done |
| News CRUD | berita.action.ts |
/admin/halaman/berita/daftar |
ModalTambahBerita, ModalEditBerita, BeritaRowActions | ✅ Done |
| News Public View | berita.action.ts |
/berita, /berita/[slug] |
BeritaView, BeritaDetailView | ✅ Done |
| Banner Management | banner.action.ts |
/admin/halaman/banner |
AdminBannerManager, HeroCarousel | ✅ Done |
| Homepage Content | home.action.ts |
/home, /admin/halaman/beranda |
HomeView, AdminHomeFeatures | ✅ Done |
| Potensi CRUD | potensi.action.ts |
/admin/halaman/potensi-desa/daftar |
PotensiModals, PotensiRowActions | ✅ Done |
| Potensi Public View | potensi.action.ts |
/potensi-desa, /potensi-desa/[slug] |
PotensiDesaView, PotensiDetailView | ✅ Done |
| Services Management | layanan.action.ts |
/admin/halaman/layanan/daftar |
AdminLayananManager | ✅ Done |
| Services Public View | layanan.action.ts |
/layanan |
LayananView | ✅ Done |
| Contact Management | kontak.action.ts |
/admin/halaman/kontak/daftar |
KontakView | ✅ Done |
| Contact Page (Public) | kontak.action.ts |
/kontak |
KontakView | ✅ Done |
| About Content | tentang-kami.action.ts |
/admin/halaman/tentang-kami |
TentangKamiView | ✅ Done |
| About Page (Public) | tentang-kami.action.ts |
/tentang-kami |
TentangKamiView | ✅ Done |
| Site Search | search.action.ts |
Global | GlobalSearchModal | ✅ Done |
| Contact Messages Inbox | pesan.action.ts |
/admin/pesan-masuk |
InboxClient | ✅ Done |
| Service Reviews (IKM) | ulasan.action.ts |
— | FormUlasan | ⏳ Planned (FE) / ✅ Done (BE) |
| File | Dari | Alasan | Aksi |
|---|---|---|---|
AdminUlasanView.tsx |
components/admin/ |
Zero imports — orphan (fitur Ulasan belum jalan) | 🔍 Simpan untuk fitur IKM, hapus jika tidak |
ttd-test.png |
public/ |
Test image tanda tangan — tidak ada referensi di kode | 🔍 Konfirmasi dulu |
file.svg |
public/ |
Boilerplate Next.js — tidak dipakai | 🗑️ Hapus |
globe.svg |
public/ |
Boilerplate Next.js — tidak dipakai | 🗑️ Hapus |
next.svg |
public/ |
Boilerplate Next.js — tidak dipakai | 🗑️ Hapus |
vercel.svg |
public/ |
Boilerplate Next.js — tidak dipakai | 🗑️ Hapus |
window.svg |
public/ |
Boilerplate Next.js — tidak dipakai | 🗑️ Hapus |
| Item | Tindakan | Tanggal |
|---|---|---|
fix.js (root) |
✅ Sudah tidak ada — confirmed clean | 14 Mei 2026 |
scripts/ (root) |
✅ Dihapus — folder kosong | 14 Mei 2026 |
.docs/README.md |
✅ Dihapus — duplikat, README cukup di root | 14 Mei 2026 |
| Default Next.js SVGs | ✅ Dipindah ke trash-temp/ |
14 Mei 2026 |
settings/page.tsx (427-line dummy) |
✅ Diganti — redirect bersih ke manajemen-admin | 14 Mei 2026 |
settings/manajemen-admin/page.tsx |
✅ Direfactor — Server Component + real DB | 14 Mei 2026 |
force-dynamic missing (6 pages) |
✅ Fixed — semua page sudah dinamis | 14 Mei 2026 |
Route group (user)/ di docs |
✅ Dihapus dari architecture.md — tidak ada di kode | 14 Mei 2026 |
Hapus jika:
- File tidak ada di Active Inventory dan tidak disebut di
architecture.md - File tidak diimport di mana pun (cek dengan
grepatau IDE search) - File adalah sisa eksperimen gagal (
*.old.tsx,*.bak, dll.)
Archive jika:
- Fitur eksperimental → pindah ke
archive/(buat jika belum ada) - Kode deprecated → tambah komentar
// DEPRECATED: <alasan>lalu pindah
Agent Instruction: File tidak terdaftar di Active Inventory = kandidat hapus, kecuali ada exemption eksplisit di manifest ini.
| Dokumen | Untuk Siapa | Isi |
|---|---|---|
architecture.md |
Tech Lead, AI Agent | Master blueprint, branching, data contracts, routing, file ownership |
backend-logic.md |
BE Dev, AI Agent | Server Actions pattern, Prisma, Zod validation |
frontend-design.md |
FE Dev, AI Agent | Design system, component hole pattern |
security-policy.md |
Semua Dev | RLS, JWT, Zod, secrets management |
roadmap.md |
Product, Teams | Feature timeline, sprint planning |
Update triggers:
- File baru dibuat → tambah ke Active Inventory dengan status
- File dihapus/dipindah → pindah ke Cleanup Queue / Completed Log
- Refactor → update path dan nama komponen
- Feature selesai → update Feature Coverage Matrix (⏳ → ✅)
- Sprint retro → review status flags
Review cadence: Setiap sprint planning session.
Note: This manifest is the inventory of truth. New files must be registered here before merging to main.
Owner: Tech Lead | Next Review: Sprint Planning