Executive Command Center (ECC) adalah aplikasi fullstack untuk monitoring dan manajemen perjalanan dinas direksi dengan desain modern dan menarik menggunakan gradient purple-blue.
- Statistik real-time (agenda, surat, kontak, users)
- Ringkasan anggaran dengan visual cards
- Recent agenda dan surat
- Animasi smooth on load
- CRUD lengkap dengan modal forms
- Filter by status & tanggal
- Status tracking: On Schedule, Delayed, Completed, Cancelled
- Peserta internal & eksternal
- Tracking urgensi: Urgent, High, Medium, Low
- Status: Pending, Approved, Rejected
- Upload dokumen surat
- Table view dengan statistics
- Card layout dengan avatar
- Info lengkap: nama, jabatan, instansi
- Kontak telepon & email clickable
- Progress bar visual per mata anggaran
- Summary cards (pagu, realisasi, sisa)
- Color-coded alerts
- Nilai dalam Milyar Rupiah
- Upload disposisi
- Tracking tanggal & keterangan
- Card layout dengan header gradient
- 4 Role: Sekretaris, Protokoler, Direksi, PA
- Statistics per role
- Status active/inactive
- Complete CRUD operations
- Express.js 4.18.2 - Backend framework
- Bootstrap 5.3.2 - Modern UI framework
- PostgreSQL 14.18 - Reliable database
- Drizzle ORM 0.29.5 - Type-safe ORM
- EJS 3.1.9 + express-ejs-layouts - Template engine with layouts
- bcryptjs 2.4.3 - Password hashing
- Google Fonts (Inter) - Clean typography
β¨ Gradient Backgrounds - Purple-blue aesthetic
π― Sidebar Navigation - Clean & intuitive
π± Fully Responsive - Mobile-first design
π Color-coded Status - Easy visual identification
β¨ Hover Animations - Interactive elements
π Modal Forms - Seamless data entry
π Progress Bars - Visual budget tracking
# 1. Install dependencies
npm install
# 2. Setup database
createdb ecc_db
# 3. Configure environment
cp .env.example .env
# Edit DATABASE_URL di .env
# 4. Run migrations & seed
npm run db:migrate
npm run db:seed
# 5. Start server
npm run devServer: http://localhost:3000
| Role | Username | Password |
|---|---|---|
| Sekretaris | sekretaris1 | password123 |
| Protokoler | protokoler1 | password123 |
| Direksi | direksi1 | password123 |
| PA | pa1 | password123 |
npm run dev # Development dengan nodemon
npm start # Production server
npm run db:generate # Generate migrations
npm run db:migrate # Run migrations
npm run db:seed # Seed sample dataPOST /api/login- User loginPOST /api/logout- User logout
- Agenda:
GET|POST|PUT|DELETE /api/agenda/:id? - Surat:
GET|POST|PUT|DELETE /api/surat/:id? - Contact:
GET|POST|PUT|DELETE /api/contact/:id? - Anggaran:
GET|POST|PUT|DELETE /api/anggaran/:id? - Protokol:
GET|POST|PUT|DELETE /api/protokol/:id? - Users:
GET|POST|PUT|DELETE /api/users/:id?
GET /api/dashboard/stats- Dashboard statisticsGET /api/anggaran/summary- Budget summary
/- Dashboard dengan stats/agenda- Manajemen agenda/surat- Manajemen surat/contact- Database kontak/anggaran- Monitor anggaran/protokol- Data protokol/users- Manajemen users
ecc/
βββ src/
β βββ config/ # Environment config
β βββ db/
β β βββ migrations/ # SQL migrations
β β βββ schema.js # Database schema
β β βββ seed.js # Sample data
β β βββ index.js # DB connection
β βββ routes/
β β βββ index.js # Web routes
β β βββ api.js # API routes
β βββ views/ # EJS templates
β β βββ layout.ejs # Main layout
β β βββ dashboard.ejs
β β βββ agenda.ejs
β β βββ surat.ejs
β β βββ contact.ejs
β β βββ anggaran.ejs
β β βββ protokol.ejs
β β βββ users-ecc.ejs
β βββ server.js # Express app
βββ public/ # Static files
βββ .env # Environment vars
βββ package.json # Dependencies
- Auto-highlight active page
- Smooth hover animations
- Icon + text labels
- Gradient background
- Gradient backgrounds per category
- Large numbers with icons
- Hover lift effect
- Smooth fade-in animations
- Alternating row colors
- Hover highlights
- Badge indicators for status
- Responsive design
- Bootstrap 5 modals
- Inline validation
- AJAX submissions
- Success/error alerts
# Kill process on port 3000
lsof -ti:3000 | xargs kill -9
# Restart
npm run dev# Reset database
dropdb ecc_db
createdb ecc_db
npm run db:migrate
npm run db:seed# Clean migrations
rm -rf src/db/migrations/*.sql
rm -rf src/db/migrations/meta
# Regenerate
npm run db:generate
npm run db:migrateSeed data includes:
- 4 users (one per role)
- 3 agenda items
- 3 surat with different urgency levels
- 3 contacts from different institutions
- 3 budget items (total Rp 1.45 Miliar)
- 2 protocol entries
- β Password hashing (bcryptjs)
- β Session-based auth
- β SQL injection protection (Drizzle ORM)
- β Environment variables for secrets
- β CORS enabled
- File upload untuk dokumen
- Export to PDF/Excel
- Email notifications
- Calendar integration
- Advanced reporting & charts
- Role-based permissions
- Real-time updates
- Document versioning
- Search & advanced filters
Dashboard menyajikan overview lengkap dengan:
- 4 stat cards dengan gradient unik
- Budget summary dengan 3 metrik
- Recent agenda list
- Recent surat list
Semua halaman menggunakan:
- Consistent sidebar navigation
- Page headers dengan gradient
- Action buttons dengan icons
- Responsive tables & cards
- Update
src/db/schema.js - Generate migration:
npm run db:generate - Run migration:
npm run db:migrate - Add API routes in
src/routes/api.js - Add web routes in
src/routes/index.js - Create view in
src/views/
- users - Authentication & roles
- agenda - Schedule management
- surat - Document management
- contact - Contact database
- anggaran - Budget tracking
- protokol - Protocol records
MIT License
Pull requests are welcome!
Built with β€οΈ using Express.js, Bootstrap 5, PostgreSQL & Drizzle ORM
Desain modern dengan gradient purple-blue, sidebar navigation, dan animasi smooth untuk pengalaman pengguna yang menarik!