SatuSurya adalah platform HRIS (Human Resource Information System) terintegrasi untuk PT Surya Komponen Nusantara. Aplikasi ini dibangun dengan arsitektur multi-tenant berbasis subdomain (hrd.*, pegawai.*, keuangan.* / finance.*) untuk mengelola data master karyawan, absensi berbasis lokasi (geofencing) & verifikasi wajah (facial verification), pengajuan lembur, cuti, serta kalkulasi slip gaji/payroll bulanan secara otomatis.
Website produksi dapat diakses di: katajuanpentingjadi.web.id
- Portal Pegawai (
pegawai.*): Presensi masuk/kelang mandiri dengan validasi GPS & foto wajah, histori kehadiran heatmap ala GitHub, pengajuan lembur & cuti, serta slip gaji bulanan. - Portal HRD (
hrd.*): Pengelolaan data master karyawan, pengaturan grade & gaji pokok, verifikasi jadwal shift kerja, dan approval pengajuan lembur & cuti. - Portal Keuangan (
keuangan.*/finance.*): Rekonsiliasi data kehadiran untuk penggajian, kalkulasi otomatis tunjangan/potongan, pembuatan draf payroll, serta finalisasi slip gaji bulanan.
Sebelum menjalankan aplikasi secara lokal, pastikan Anda telah menginstal perangkat lunak berikut:
- Node.js (Versi 18 atau lebih baru, direkomendasikan versi LTS)
- Python (Versi 3.11.x)
- PostgreSQL Database (Aktif dan dapat diakses)
- Web Browser modern dengan akses kamera (untuk fitur presensi wajah)
Karena aplikasi mendeteksi portal berdasarkan subdomain, Anda harus mendaftarkan domain lokal berikut ke file hosts sistem Anda agar subdomain dapat diakses.
Buka terminal dan edit file /etc/hosts (di Linux/macOS) atau C:\Windows\System32\drivers\etc\hosts (di Windows) dengan hak akses Administrator/sudo, lalu tambahkan baris berikut:
127.0.0.1 localhost
127.0.0.1 hrd.localhost
127.0.0.1 pegawai.localhost
127.0.0.1 keuangan.localhost
127.0.0.1 finance.localhost
-
Masuk ke direktori backend:
cd satusurya-be -
Buat Virtual Environment Python:
python3 -m venv .venv source .venv/bin/activate # Untuk Linux/macOS # atau .venv\Scripts\activate # Untuk Windows
-
Instal dependensi:
pip install -r requirements.txt
-
Konfigurasi Environment Variable: Salin file
.env.examplemenjadi.envdan sesuaikan nilainya:cp .env.example .env
Isi file
.envminimal mencakup:DATABASE_URL=postgresql+asyncpg://<username>:<password>@localhost:5432/satu_surya SECRET_KEY=your-secret-key-here-change-in-production ALGORITHM=HS256 ACCESS_TOKEN_EXPIRE_MINUTES=60 APP_NAME="HRIS SKN"
Catatan: Pastikan database PostgreSQL dengan nama
satu_suryasudah dibuat sebelum melanjutkan. -
Jalankan Migrasi Database: Gunakan Alembic untuk membuat seluruh tabel di database PostgreSQL:
alembic upgrade head
-
Jalankan Aplikasi Backend: Jalankan server pengembangan FastAPI menggunakan Uvicorn:
uvicorn app.main:app --reload --port 8000
Dokumentasi interaktif Swagger API lokal akan tersedia di: http://localhost:8000/api/v1/docs
-
Masuk ke direktori frontend:
cd ../satusurya-fe -
Instal dependensi Node.js:
npm install
-
Konfigurasi Environment Variable: Ubah atau buat file
.env.localdi root foldersatusurya-fe:# Mengarah ke API Backend lokal yang sedang berjalan NEXT_PUBLIC_API_URL=http://localhost:8000/api/v1
-
Jalankan Aplikasi Frontend:
npm run dev
Aplikasi akan berjalan dan dapat diakses melalui portal subdomain lokal:
- Halaman Utama: http://localhost:3000
- Portal HRD: http://hrd.localhost:3000
- Portal Pegawai: http://pegawai.localhost:3000
- Portal Keuangan: http://keuangan.localhost:3000 atau http://finance.localhost:3000
Aplikasi menyediakan dua jenis script seeder di direktori satusurya-be yang dapat digunakan untuk mengisi data awal demi kemudahan pengujian.
Warning
Menjalankan seeder master (seed_master.py) akan menghapus data lama di database (TRUNCATE) sebelum memasukkan data baru. Lakukan backup jika terdapat data penting.
Script ini melakukan pembersihan tabel secara otomatis dan meng-seed seluruh data fungsional secara komprehensif, meliputi: akun pengguna, data karyawan lengkap, struktur shift kerja, jadwal shift kerja selama satu tahun, riwayat absensi 365 hari ke belakang, lemburan, komponen gaji pokok, tunjangan, potongan, serta pengumuman.
Jalankan perintah berikut dari folder satusurya-be:
python scripts/seed_master.pyScript ini hanya meng-seed data dasar seperti user admin HRD utama, kelas jabatan (Job Grades) standar, dan 3 user karyawan default tanpa histori absensi yang panjang.
Jalankan perintah berikut dari folder satusurya-be:
python seed.pyBerikut adalah akun uji coba hasil bentukan seeder yang dapat Anda gunakan untuk login sesuai dengan role masing-masing:
| Portal | Email Akun | Password | Keterangan / Deskripsi |
|---|---|---|---|
| HRD | agus.prabowo@skn.co.id |
password123 |
Administrator HRD utama, memiliki wewenang verifikasi data karyawan, pengajuan cuti, lembur, dan shift. |
| Finance | dewi.sartika@skn.co.id |
password123 |
Administrator Keuangan, bertugas menghitung payroll bulanan karyawan, mengedit draf, dan memfinalisasi gaji. |
| Pegawai (Employee) | budi.santoso@skn.co.id |
password123 |
Akun Pegawai (NIK: SKN-2022-047, Dept: Teknologi Informasi, Shift: Pagi, JobGrade: G2). |
| Pegawai (Employee) | rina.wulandari@skn.co.id |
password123 |
Akun Pegawai (NIK: SKN-2019-012, Dept: Teknologi Informasi, Shift: Flexible, JobGrade: G3). |
| Pegawai (Employee) | hendra.w@skn.co.id |
password123 |
Akun Pegawai (NIK: SKN-2023-101, Dept: Produksi, Shift: Malam, JobGrade: G1). |
Aplikasi SatuSurya dapat diakses secara publik melalui subdomain berikut:
- Halaman Utama (Landing Page): https://katajuanpentingjadi.web.id/
- Portal HRD: https://hrd.katajuanpentingjadi.web.id/
- Portal Pegawai: https://pegawai.katajuanpentingjadi.web.id/
- Portal Keuangan: https://keuangan.katajuanpentingjadi.web.id/ (atau https://finance.katajuanpentingjadi.web.id/)
- Backend API Docs (Swagger): https://api.katajuanpentingjadi.web.id/api/v1/docs