Aplikasi web untuk Sistem Penunjang Keputusan menggunakan metode TOPSIS (Technique for Order Preference by Similarity to Ideal Solution) yang dibangun dengan Laravel dan React. Aplikasi ini menyediakan solusi lengkap untuk pengambilan keputusan multi-kriteria dengan interface yang modern dan user-friendly.
- Statistik lengkap sistem (jumlah alternatif, kriteria, evaluasi, hasil)
- Top 5 hasil TOPSIS terbaik dengan ranking
- Data terbaru alternatif dan kriteria
- Quick actions untuk perhitungan TOPSIS
- Export dashboard ke PDF dengan laporan lengkap
- CRUD (Create, Read, Update, Delete) alternatif
- Informasi detail setiap alternatif dengan deskripsi
- Interface yang user-friendly dan responsif
- Export data alternatif ke PDF
- Import data alternatif dari Excel
- CRUD kriteria dengan bobot dan tipe (benefit/cost)
- Validasi total bobot kriteria (harus = 100%)
- Pengaturan tipe kriteria untuk perhitungan TOPSIS
- Export data kriteria ke PDF dengan ringkasan bobot
- Import data kriteria dari Excel dengan validasi otomatis
- Input evaluasi dalam bentuk matriks interaktif
- Bulk input untuk efisiensi kerja
- Validasi data evaluasi real-time
- Export matriks evaluasi ke PDF (format landscape)
- Import data evaluasi dari Excel dengan mapping otomatis
- Algoritma TOPSIS lengkap dengan langkah-langkah:
- Normalisasi matriks keputusan
- Pembobotan matriks ternormalisasi
- Penentuan solusi ideal positif dan negatif
- Perhitungan jarak dan skor preferensi
- Ranking alternatif berdasarkan skor
- Penyimpanan hasil ke database
- Export hasil TOPSIS ke PDF dengan analisis lengkap
- Visualisasi hasil dengan grafik interaktif
- Grafik batang skor preferensi interaktif
- Grafik perbandingan ranking alternatif
- Charts responsif menggunakan Recharts
- Export charts ke PDF dengan kualitas tinggi
- Visualisasi yang mobile-friendly
- Export semua data ke format PDF profesional
- Template PDF yang konsisten dan rapi
- Support untuk:
- Data alternatif dengan tabel terstruktur
- Data kriteria dengan ringkasan bobot
- Matriks evaluasi dalam format landscape
- Hasil TOPSIS dengan analisis mendalam
- Charts dan grafik berkualitas tinggi
- Dashboard report komprehensif
- Error handling yang robust untuk kompatibilitas browser
- Import data dari file Excel (.xlsx, .xls, .csv)
- Template Excel yang dapat didownload
- Validasi data otomatis saat import
- Support untuk:
- Import alternatif dengan nama dan deskripsi
- Import kriteria dengan bobot dan tipe
- Import matriks evaluasi dengan mapping relasi
- Error handling dan feedback real-time
- Batch processing untuk efisiensi
- Laravel 12 - PHP Framework
- Inertia.js - Modern monolith untuk SPA experience
- SQLite - Database ringan dan cepat
- Eloquent ORM - Database abstraction
- Laravel Excel - Excel import/export functionality
- React 18 - UI Library dengan hooks modern
- TypeScript - Type safety dan developer experience
- Tailwind CSS - Utility-first styling
- Recharts - Data visualization library
- Shadcn/ui - Modern UI components
- Lucide React - Beautiful icons
- jsPDF - PDF generation client-side
- html2canvas - Chart to image conversion
- Vite - Fast build tool dan development server
- Pest - Modern PHP testing framework
- Laravel Pint - Code formatting
- ESLint - JavaScript/TypeScript linting
- PHP 8.2+
- Composer
- Node.js 18+
- NPM atau Yarn
-
Clone repository dan install dependencies
git clone <repository-url> cd spk-topsis composer install npm install
-
Setup environment
cp .env.example .env php artisan key:generate
-
Setup database
php artisan migrate php artisan db:seed --class=TopsisSeeder
-
Build frontend assets
npm run build
-
Jalankan aplikasi
php artisan serve
-
Akses aplikasi Buka browser dan kunjungi:
http://127.0.0.1:8000
- Buat akun atau login ke sistem
- Tambah alternatif melalui menu "Alternatif" atau import dari Excel
- Tambah kriteria dengan bobot dan tipe melalui menu "Kriteria" atau import dari Excel
- Input evaluasi melalui menu "Evaluasi" atau import dari Excel
- Kunjungi menu "Import Data"
- Download template Excel untuk format yang benar
- Isi data sesuai template dan upload file
- Sistem akan memvalidasi dan mengimpor data otomatis
- Klik "Hitung TOPSIS" di dashboard atau menu "TOPSIS"
- Sistem akan menjalankan algoritma TOPSIS secara otomatis
- Hasil akan ditampilkan dengan ranking dan skor preferensi
- Lihat hasil ranking di halaman "TOPSIS"
- Analisis visualisasi data di halaman "Charts"
- Export hasil ke PDF untuk dokumentasi atau presentasi
- Export charts untuk laporan visual
Aplikasi sudah dilengkapi dengan data sample untuk testing:
- Ahmad Syukur - Kandidat dengan pengalaman senior
- Budi Santoso - Fresh graduate dengan potensi tinggi
- Siti Nurhayati - Kandidat dengan komunikasi excellent
- Maya Sari - Spesialis dengan keahlian khusus
- Eko Prasetyo - Kandidat dengan background teknis kuat
- Pengalaman Kerja (Bobot: 25%, Benefit) - Lamanya pengalaman kerja
- Pendidikan (Bobot: 20%, Benefit) - Tingkat pendidikan formal
- Kemampuan Komunikasi (Bobot: 20%, Benefit) - Skill komunikasi dan interpersonal
- Gaji yang Diharapkan (Bobot: 15%, Cost) - Ekspektasi gaji kandidat
- Usia (Bobot: 20%, Cost) - Usia kandidat
Aplikasi menyediakan template Excel yang bisa langsung digunakan:
template_alternatif.xlsx
- Template untuk import alternatiftemplate_kriteria.xlsx
- Template untuk import kriteria dengan validasi bobottemplate_evaluasi.xlsx
- Template untuk import matriks evaluasi
- Dashboard Report: Laporan lengkap dengan statistik dan grafik
- Data Tables: Semua data dalam format tabel yang rapi
- Charts: Visualisasi berkualitas tinggi
- Analysis Results: Hasil TOPSIS dengan penjelasan detail
- Batch Import: Import banyak data sekaligus
- Data Validation: Validasi otomatis dengan error reporting
- Template Download: Template siap pakai untuk setiap jenis data
- Error Handling: Feedback jelas untuk setiap kesalahan input
-
Normalisasi Matriks Keputusan
r_ij = x_ij / β(Ξ£x_ijΒ²)
-
Pembobotan Matriks Ternormalisasi
v_ij = w_j Γ r_ij
-
Solusi Ideal Positif dan Negatif
- AβΊ = {max(v_ij) jika benefit, min(v_ij) jika cost}
- Aβ» = {min(v_ij) jika benefit, max(v_ij) jika cost}
-
Perhitungan Jarak
DβΊ_i = βΞ£(v_ij - AβΊ_j)Β² Dβ»_i = βΞ£(v_ij - Aβ»_j)Β²
-
Skor Preferensi
C_i = Dβ»_i / (DβΊ_i + Dβ»_i)
alternatives
- Data alternatif dengan nama dan deskripsicriteria
- Data kriteria dengan bobot dan tipe (benefit/cost)evaluations
- Data evaluasi/penilaian (matriks keputusan)topsis_results
- Hasil perhitungan TOPSIS dengan rankingusers
- Data pengguna sistem
evaluations
βalternatives
(Many-to-One)evaluations
βcriteria
(Many-to-One)topsis_results
βalternatives
(Many-to-One)
app/
βββ Http/Controllers/ # Controllers untuk API endpoints
βββ Models/ # Eloquent models
βββ Services/ # Business logic (TopsisService)
βββ Imports/ # Excel import classes
βββ Console/Commands/ # Artisan commands
resources/js/
βββ pages/ # React pages/components
βββ components/ # Reusable UI components
βββ layouts/ # Layout components
βββ utils/ # Utility functions (pdfExport)
storage/app/templates/ # Excel templates for import
public/build/ # Compiled frontend assets
# Test aplikasi
php test_app.php
# Generate Excel templates
php artisan templates:generate
# Development server
npm run dev
# Production build
npm run build
Buka public/test-pdf-export.html
untuk testing PDF export functionality secara manual.
- β Optimized Vite build dengan code splitting
- β Laravel production configuration
- β SQLite database (portable)
- β Error handling dan user feedback
- β Responsive design untuk mobile
- β SEO-friendly routing dengan Inertia.js
# Production environment
cp .env.example .env.production
php artisan config:cache
php artisan route:cache
php artisan view:cache
npm run build
- β¨ New: Excel Import functionality untuk semua data types
- β¨ New: PDF Export untuk semua komponen (tables, charts, dashboard)
- β¨ New: Professional PDF templates dengan branding
- β¨ New: Excel templates ready-to-use
- π§ Improved: Error handling dan user feedback
- π§ Improved: UI/UX dengan modern design
- π§ Improved: Mobile responsiveness
- π Fixed: Type safety issues dengan TypeScript
- π Fixed: Chart compatibility dengan html2canvas
- β Basic CRUD operations
- β TOPSIS algorithm implementation
- β Data visualization dengan charts
- β User authentication
- β Dashboard dengan statistics
- β Chrome 90+
- β Firefox 88+
- β Safari 14+
- β Edge 90+
- Modern browser dengan support untuk:
- HTML5 Canvas API
- File download API
- ES6+ JavaScript features
- β‘ Fast Loading: Vite untuk development dan build
- β‘ Code Splitting: Automatic code splitting untuk optimal loading
- β‘ Lazy Loading: Charts dan components dimuat saat diperlukan
- β‘ Caching: Laravel caching untuk database queries
- β‘ Optimized Images: Automatic image optimization
- β‘ Gzip Compression: Built-in asset compression
- π Authentication: Laravel Sanctum untuk API security
- π Authorization: Role-based access control
- π Input Validation: Comprehensive validation untuk semua inputs
- π CSRF Protection: Built-in CSRF protection
- π SQL Injection Prevention: Eloquent ORM protection
- π XSS Protection: Automatic output escaping
Kami menyambut kontribusi dari komunitas! Berikut cara untuk berkontribusi:
- Fork repository ini
- Clone ke local machine:
git clone <your-fork-url>
- Install dependencies:
composer install && npm install
- Setup environment:
cp .env.example .env && php artisan key:generate
- Run migrations:
php artisan migrate
- Start development:
npm run dev
- Buat feature branch (
git checkout -b feature/amazing-feature
) - Follow coding standards (Laravel Pint untuk PHP, ESLint untuk JS/TS)
- Write tests untuk new features
- Commit dengan clear message (
git commit -m 'Add amazing feature'
) - Push ke branch (
git push origin feature/amazing-feature
) - Buat Pull Request dengan deskripsi yang jelas
- PHP: Follow PSR-12 coding standards
- TypeScript/React: Follow ESLint dan Prettier configuration
- Database: Use Eloquent migrations untuk schema changes
- Testing: Write tests untuk new functionality
MIT License - see LICENSE file for details.
- π Documentation: Lengkap di README ini
- π Bug Reports: Gunakan GitHub Issues
- π‘ Feature Requests: Diskusi di GitHub Discussions
- π§ Direct Support: Email untuk support khusus
- π TOPSIS Algorithm Theory
- π― Laravel Documentation
- βοΈ React Documentation
- π¨ Tailwind CSS