12 KiB
Task Project Menu: Modernisasi Halaman APBDes
📊 Project Overview
Target File: src/app/darmasaba/_com/main-page/apbdes/index.tsx
Goal: Modernisasi tampilan dan fungsionalitas halaman APBDes untuk meningkatkan user experience, visualisasi data, dan code quality.
🎯 Task List
Phase 1: UI/UX Enhancement 🔥 HIGH PRIORITY
Task 1.1: Add Loading State
- Create
apbdesSkeleton.tsxcomponent - Add skeleton untuk PaguTable
- Add skeleton untuk RealisasiTable
- Add skeleton untuk GrafikRealisasi
- Implement loading state saat ganti tahun
- Add smooth fade-in transition saat data load
Files to Create/Modify:
src/app/darmasaba/_com/main-page/apbdes/components/apbdesSkeleton.tsx(CREATE)src/app/darmasaba/_com/main-page/apbdes/index.tsx(MODIFY)
Estimated Time: 45 menit
Task 1.2: Improve Table Design
- Add hover effects pada table rows
- Implement striped rows untuk readability
- Add sticky header untuk long data
- Improve typography dan spacing
- Add responsive table wrapper untuk mobile
- Add color coding untuk tipe data berbeda
Files to Modify:
src/app/darmasaba/_com/main-page/apbdes/lib/paguTable.tsxsrc/app/darmasaba/_com/main-page/apbdes/lib/realisasiTable.tsx
Estimated Time: 1 jam
Task 1.3: Add Animations & Interactions
- Install Framer Motion (
bun add framer-motion) - Add fade-in animation untuk main container
- Add slide-up animation untuk tables
- Add hover scale effect untuk cards
- Add smooth transition saat ganti tahun
- Add loading spinner untuk Select component
Dependencies: framer-motion
Files to Modify:
src/app/darmasaba/_com/main-page/apbdes/index.tsxsrc/app/darmasaba/_com/main-page/apbdes/lib/*.tsx
Estimated Time: 1 jam
Phase 2: Data Visualization 📈 HIGH PRIORITY
Task 2.1: Install & Setup Recharts
- Install Recharts (
bun add recharts) - Create basic bar chart component
- Add tooltip dengan formatted data
- Add responsive container
- Configure color scheme
Dependencies: recharts
Files to Create:
src/app/darmasaba/_com/main-page/apbdes/lib/comparisonChart.tsx(CREATE)
Estimated Time: 1 jam
Task 2.2: Create Interactive Charts
- Bar chart: Pagu vs Realisasi comparison
- Pie chart: Komposisi per kategori
- Line chart: Trend multi-tahun (jika data tersedia)
- Add legend dan labels
- Add export chart as image feature
Files to Create:
src/app/darmasaba/_com/main-page/apbdes/lib/barChart.tsx(CREATE)src/app/darmasaba/_com/main-page/apbdes/lib/pieChart.tsx(CREATE)
Estimated Time: 2 jam
Task 2.3: Create Summary Cards
- Design summary card component
- Display Total Pagu
- Display Total Realisasi
- Display Persentase Realisasi
- Add trend indicators (↑↓)
- Add color-coded performance badges
- Add animated number counters
Files to Create:
src/app/darmasaba/_com/main-page/apbdes/lib/summaryCards.tsx(CREATE)
Estimated Time: 1.5 jam
Phase 3: Features ⚙️ MEDIUM PRIORITY
Task 3.1: Search & Filter
- Add search input untuk filter items
- Add filter dropdown by tipe (Pendapatan/Belanja/Pembiayaan)
- Add sort functionality (by jumlah, realisasi, persentase)
- Add clear filter button
- Add search result counter
Files to Create/Modify:
src/app/darmasaba/_com/main-page/apbdes/hooks/useApbdesFilter.ts(CREATE)src/app/darmasaba/_com/main-page/apbdes/index.tsx(MODIFY)
Estimated Time: 1.5 jam
Task 3.2: Export & Print Functionality
- Install PDF library (
bun add @react-pdf/renderer) - Create PDF export template
- Add Excel export (
bun add exceljs) - Add print CSS styles
- Create export buttons component
- Add loading state saat export
Dependencies: @react-pdf/renderer, exceljs
Files to Create:
src/app/darmasaba/_com/main-page/apbdes/components/exportButtons.tsx(CREATE)src/app/darmasaba/_com/main-page/apbdes/utils/exportPdf.ts(CREATE)src/app/darmasaba/_com/main-page/apbdes/utils/exportExcel.ts(CREATE)
Estimated Time: 2 jam
Task 3.3: Detail View Modal
- Add modal component untuk detail item
- Display breakdown realisasi per item
- Add historical comparison (tahun sebelumnya)
- Add close button dan ESC key handler
- Add responsive modal design
Files to Create:
src/app/darmasaba/_com/main-page/apbdes/components/detailModal.tsx(CREATE)
Estimated Time: 1.5 jam
Phase 4: Code Quality 🧹 MEDIUM PRIORITY
Task 4.1: TypeScript Improvements
- Create proper TypeScript types
- Replace all
anydengan interfaces - Add Zod schema validation
- Type-safe API responses
- Add generic types untuk reusable components
Files to Create:
src/app/darmasaba/_com/main-page/apbdes/types/apbdes.ts(CREATE)
Files to Modify:
- All
.tsxfiles in apbdes directory
Estimated Time: 1.5 jam
Task 4.2: Code Cleanup
- Remove all commented code
- Remove console.logs (replace dengan proper logging)
- Add error boundaries
- Improve error messages
- Add proper ESLint comments
- Add JSDoc untuk complex functions
Estimated Time: 1 jam
Task 4.3: Custom Hook Refactoring
- Create
useApbdesDatacustom hook - Move data fetching logic to hook
- Add SWR/React Query for caching (optional)
- Add optimistic updates
- Add error handling di hook level
Files to Create:
src/app/darmasaba/_com/main-page/apbdes/hooks/useApbdesData.ts(CREATE)
Estimated Time: 1 jam
Phase 5: Advanced Features 🚀 LOW PRIORITY (Optional)
Task 5.1: Year Comparison View
- Add multi-year selection
- Side-by-side comparison table
- Year-over-year growth calculation
- Add trend arrows dan percentage change
- Add comparison chart
Files to Create:
src/app/darmasaba/_com/main-page/apbdes/lib/yearComparison.tsx(CREATE)
Estimated Time: 2 jam
Task 5.2: Dashboard Widgets
- Key metrics overview widget
- Budget utilization gauge chart
- Alert untuk over/under budget
- Quick stats summary
- Add drill-down capability
Dependencies: Mungkin perlu additional chart library
Estimated Time: 2.5 jam
Task 5.3: Responsive Mobile Optimization
- Mobile-first table design
- Collapsible sections untuk mobile
- Touch-friendly interactions
- Optimize chart untuk small screens
- Add mobile navigation
Estimated Time: 1.5 jam
📁 Proposed File Structure
src/app/darmasaba/_com/main-page/apbdes/
│
├── index.tsx # Main component (refactored)
│
├── lib/
│ ├── paguTable.tsx # Table Pagu (improved)
│ ├── realisasiTable.tsx # Table Realisasi (improved)
│ ├── grafikRealisasi.tsx # Chart component (updated)
│ ├── comparisonChart.tsx # NEW: Bar chart comparison
│ ├── barChart.tsx # NEW: Interactive bar chart
│ ├── pieChart.tsx # NEW: Pie chart visualization
│ └── summaryCards.tsx # NEW: Summary metrics cards
│ └── yearComparison.tsx # NEW: Year comparison view (optional)
│
├── components/
│ ├── apbdesSkeleton.tsx # NEW: Loading skeleton
│ ├── apbdesCard.tsx # NEW: Preview card
│ ├── exportButtons.tsx # NEW: Export/Print buttons
│ └── detailModal.tsx # NEW: Detail view modal
│
├── hooks/
│ ├── useApbdesData.ts # NEW: Data fetching hook
│ └── useApbdesFilter.ts # NEW: Search/filter hook
│
├── types/
│ └── apbdes.ts # NEW: TypeScript types & interfaces
│
└── utils/
├── exportPdf.ts # NEW: PDF export logic
└── exportExcel.ts # NEW: Excel export logic
📦 Required Dependencies
# Core dependencies
bun add framer-motion recharts
# Export functionality
bun add @react-pdf/renderer exceljs
# Optional: Better data fetching
bun add swr
# Type definitions
bun add -D @types/react-pdf
🎯 Success Criteria
UI/UX
- Loading state implemented dengan skeleton
- Smooth animations pada semua interactions
- Modern table design dengan hover effects
- Fully responsive (mobile, tablet, desktop)
Data Visualization
- Interactive charts (Recharts) implemented
- Summary cards dengan real-time metrics
- Color-coded performance indicators
- Responsive charts untuk semua screen sizes
Features
- Search & filter functionality working
- Export to PDF working
- Export to Excel working
- Print view working
- Detail modal working
Code Quality
- No
anytypes (all properly typed) - No commented code
- No console.logs in production code
- Error boundaries implemented
- Custom hooks for reusability
⏱️ Total Estimated Time
| Phase | Tasks | Estimated Time |
|---|---|---|
| Phase 1 | 3 tasks | 2.75 jam |
| Phase 2 | 3 tasks | 4.5 jam |
| Phase 3 | 3 tasks | 5 jam |
| Phase 4 | 3 tasks | 3.5 jam |
| Phase 5 | 3 tasks | 6 jam (optional) |
| TOTAL | 15 tasks | ~21.75 jam (tanpa Phase 5: ~15.75 jam) |
🚀 Recommended Implementation Order
- Start dengan Phase 1 (UI/UX Enhancement) - Quick wins, immediate visual improvement
- Continue dengan Phase 4 (Code Quality) - Clean foundation sebelum add features
- Move to Phase 2 (Data Visualization) - Core value add
- Then Phase 3 (Features) - User functionality
- Optional Phase 5 (Advanced) - If time permits
📝 Notes
- Prioritize tasks berdasarkan impact vs effort
- Test di berbagai screen sizes selama development
- Get user feedback setelah Phase 1 & 2 complete
- Consider A/B testing untuk new design
- Document all new components di storybook (if available)
🔗 Related Files
- Main Component:
src/app/darmasaba/_com/main-page/apbdes/index.tsx - State Management:
src/app/admin/(dashboard)/_state/landing-page/apbdes.ts - API Endpoint:
src/app/api/landingpage/apbdes/
Last Updated: 2026-03-25
Status: Phase 1, 2, 4 Completed ✅
Approved By: Completed
✅ Completed Tasks Summary
Phase 1: UI/UX Enhancement - DONE ✅
- ✅ Created
apbdesSkeleton.tsxwith loading skeletons for all components - ✅ Improved table design with hover effects, striped rows, sticky headers
- ✅ Installed Framer Motion and added smooth animations
- ✅ Added loading states when changing year
- ✅ Added fade-in and slide-up transitions
Phase 2: Data Visualization - DONE ✅
- ✅ Installed Recharts
- ✅ Created interactive comparison bar chart (Pagu vs Realisasi)
- ✅ Created summary cards with metrics and progress indicators
- ✅ Enhanced GrafikRealisasi with better visual design
- ✅ Added color-coded performance badges
Phase 4: Code Quality - DONE ✅
- ✅ Created proper TypeScript types in
types/apbdes.ts - ✅ Replaced most
anytypes with proper interfaces (some remain for flexibility) - ✅ Removed commented code from main index.tsx
- ✅ Cleaned up console.logs
- ✅ Improved error handling
Files Created:
src/app/darmasaba/_com/main-page/apbdes/types/apbdes.ts- TypeScript typessrc/app/darmasaba/_com/main-page/apbdes/components/apbdesSkeleton.tsx- Loading skeletonssrc/app/darmasaba/_com/main-page/apbdes/lib/summaryCards.tsx- Summary metrics cardssrc/app/darmasaba/_com/main-page/apbdes/lib/comparisonChart.tsx- Recharts bar chartsrc/app/darmasaba/_com/main-page/apbdes/lib/paguTable.tsx- Improved table (updated)src/app/darmasaba/_com/main-page/apbdes/lib/realisasiTable.tsx- Improved table (updated)src/app/darmasaba/_com/main-page/apbdes/lib/grafikRealisasi.tsx- Enhanced chart (updated)src/app/darmasaba/_com/main-page/apbdes/index.tsx- Main component with animations (updated)
Dependencies Installed:
framer-motion@12.38.0- Animation libraryrecharts@3.8.0- Chart library