Faclie (Freelance Client Simulator) adalah platform simulasi percakapan interaktif berbasis web dan desktop untuk melatih kemampuan negosiasi, manajemen scope creep, dan penanganan red flags klien. Dirancang menyerupai realita dunia freelance agensi, platform ini menyimulasikan emosi klien yang dinamis, kejadian krisis tak terduga (surprise events), serta memberikan rapor evaluasi performa di akhir sesi.
Simulator mendeteksi intensitas, penawaran harga, penolakan, atau persetujuan secara dinamis berdasarkan input freelancer. Klien akan merespons menggunakan state emosional (Satisfaction, Patience, Urgency) dan sistem memori jangka pendek/panjang.
- Diagnostic Meters: Status emosional klien (Satisfaction, Patience, Urgency) ditampilkan secara real-time.
- Tabbed Sidebar: Beralih mudah antara tab Project Spec (spesifikasi, scope, milestones, risks) dan tab Client Persona (psikologi Big-Five, tone bahasa, red flags, dan kesan live klien terhadap Anda berdasarkan memori aktif mereka).
- 🎵 Synthesized Sound Effects (Web Audio API): Sound effect interaktif yang disintesis secara dinamis langsung di browser (suara ketikan, chime notifikasi masuk, alarm sirine darurat saat krisis, dan melodi kemenangan saat proyek sukses). Tanpa perlu mengunduh file suara tambahan.
- 🗣️ Text-To-Speech Voice Notes (Web Speech API): Klien dapat mengirimkan voice notes transkrip yang bisa dibacakan langsung menggunakan suara sintesis bahasa Inggris, Indonesia, atau campuran, lengkap dengan penyesuaian nada (pitch) dan kecepatan (rate) berdasarkan tingkat emosi klien.
- 🛠️ Custom Client Creator: Buat klien impian (atau terburuk) Anda sendiri dengan form interaktif glassmorphic. Tentukan traits psikologis mereka menggunakan slider (Agreeableness, Neuroticism, dll.), atur bahasa komunikasi, tingkat kesulitan, serta red flags dan quirks khusus mereka.
- Input Sanitization: Penyaringan karakter dan pembersihan tag HTML/Script pada obrolan untuk mencegah XSS & Prompt Injection.
- Payload Validation: Verifikasi skema data input server yang aman dari crash.
- IP-Based Rate Limiting: Pembatasan lalu lintas API (maksimal 30 request/menit per IP) untuk menghemat dan melindungi API key NVIDIA.
- Secure Error Handling: Menutup kebocoran informasi jejak error (error stack trace) pada respons klien.
Dapatkan penilaian terperinci mengenai Professionalism, Scope Management, dan Negotiation Skill saat simulasi selesai. Rapor penilaian beserta grafik batang indikator visual hasil performa dan riwayat obrolan lengkap dapat diekspor langsung ke format PDF.
Panduan terperinci tentang sistem dan pengembangan dapat ditemukan di folder docs/:
- 📄 Arsitektur Proyek: Alur kerja data, modularitas Zustand stores, dialogue engine, dan local sound/speech synthesis.
- 📄 Katalog Personas: Metadata lengkap 8 klien bawaan, traits psikologis, tingkat kesulitan, dan red flags mereka.
- 📄 Dialogue Engine & Prompt: Penjelasan cara kerja Intent Parser, Offline Dialogue Tree, dan Prompt LLM terjemahan dinamis (Jaksel, ID, EN).
- 📄 Panduan Desktop App: Detail kemasan Electron, manajemen server Next.js di background, serta instruksi rilis GitHub.
Pastikan Anda sudah menginstal Node.js (Versi 18 ke atas direkomendasikan).
- Clone repositori:
git clone https://github.com/username/faclie.git cd faclie - Instal dependensi:
npm install
- Jalankan server pengembangan web:
npm run dev
- Buka browser: Akses http://localhost:3000 (atau port lain yang ditunjuk) untuk melihat aplikasi berjalan secara lokal.
Aplikasi desktop dapat dijalankan secara lokal atau dikompilasi menjadi berkas installer:
- Jalankan versi desktop dev (Next.js server + Electron window):
npm run desktop:dev
- Kompilasi dan pack lokal (Uji coba build tanpa installer):
npm run desktop:pack
- Build installer desktop resmi (Menghasilkan berkas
.exe,.dmg, atau.AppImagedi folderdist/):npm run desktop:build
Sebelum melakukan push commits ke GitHub, pastikan kode lulus pemeriksaan berikut:
- Build check:
npm run build
- Linter check:
npm run lint
Proyek ini dilisensikan di bawah lisensi MIT. Silakan gunakan dan kembangkan secara bebas untuk melatih talenta freelance agensi profesional.