Skip to content

Latest commit

 

History

44 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SatuSurya - Sistem Informasi HRIS Terintegrasi

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


🚀 Fitur Utama

  • 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.

🛠️ Prasyarat (Prerequisites)

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)

⚙️ Langkah Instalasi & Konfigurasi Lokal

1. Konfigurasi Domain Lokal (/etc/hosts)

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

2. Setup Backend (satusurya-be)

  1. Masuk ke direktori backend:

    cd satusurya-be
  2. Buat Virtual Environment Python:

    python3 -m venv .venv
    source .venv/bin/activate  # Untuk Linux/macOS
    # atau
    .venv\Scripts\activate     # Untuk Windows
  3. Instal dependensi:

    pip install -r requirements.txt
  4. Konfigurasi Environment Variable: Salin file .env.example menjadi .env dan sesuaikan nilainya:

    cp .env.example .env

    Isi file .env minimal 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_surya sudah dibuat sebelum melanjutkan.

  5. Jalankan Migrasi Database: Gunakan Alembic untuk membuat seluruh tabel di database PostgreSQL:

    alembic upgrade head
  6. 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


3. Setup Frontend (satusurya-fe)

  1. Masuk ke direktori frontend:

    cd ../satusurya-fe
  2. Instal dependensi Node.js:

    npm install
  3. Konfigurasi Environment Variable: Ubah atau buat file .env.local di root folder satusurya-fe:

    # Mengarah ke API Backend lokal yang sedang berjalan
    NEXT_PUBLIC_API_URL=http://localhost:8000/api/v1
  4. Jalankan Aplikasi Frontend:

    npm run dev

    Aplikasi akan berjalan dan dapat diakses melalui portal subdomain lokal:


🗄️ Database Seeder

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.

Pilihan 1: Master Seeder (Direkomendasikan untuk Demo)

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.py

Pilihan 2: Basic Seeder (Sederhana)

Script 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.py

🔑 Akun Uji Coba Default (Default Credentials)

Berikut 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).

🌐 Tautan Live Produksi (Production Deployment)

Aplikasi SatuSurya dapat diakses secara publik melalui subdomain berikut:

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages