kolonilinus/absensi-app

By kolonilinus

Updated 4 months ago

Enterprise Resource Planning (ERP) employee attendance management & etc

Image
Languages & frameworks
0

621

kolonilinus/absensi-app repository overview

Absensi & Payroll System (Kolonilinus)

A comprehensive, containerized Enterprise Resource Planning (ERP) application focused on employee attendance management, leave tracking (API boundaries), geolocation-fenced clock-ins, Facial Recognition and automated payroll calculations.

🌟 Key Features

  • Facial Recognition Suite: Dual-Mode Registration (Live Camera or Photo Upload) powered by face-api.js for real-time validation.
  • Geolocation Attendance: Enforces clock-in/out boundaries (radius-based) around designated branch locations (Kantor Cabang, Pusat).
  • Shift Management: Multi-tier support for Office, Night, and Day shifts with automated penalty calculations for late arrivals or early departures (Telat/Pulang Cepat).
  • Dynamic Payroll Generation: Fully integrated calculation engine that tabulates base pay, health insurance (BPJS), attendance deductions (Mangkir/Telat), overtime (Lembur), and income tax (PPh21).
  • HR Workflows: Self-service Leave Requests (Cuti), Official Travel (Dinas Luar), and Cash Advances (Kasbon).
  • Hierarchical Access Control: Robust role-based access management ensuring privacy and organizational scale.

🛠️ Prerequisites

Before deploying the application, ensure your host server has the following installed:

  • Docker Framework (v20.10+)
  • Docker Compose (v2.x+)
  • Ports: 8501, 8443, and 3306 must be unblocked on your firewall (adjusted for local OrbStack compatibility).

🚀 Quick Start / Installation

This application uses a fully dockerized stack including PHP 8.1 / Apache, MariaDB 10.6, and an Nginx SSL proxy.

Step 1: Prepare Environment Files

Create your .env and docker-compose.yml files. This acts as the blueprint for your "Complete System."

1.1 Setup Environment (.env) Copy the template provided in the workspace:

cp .env.example .env

1.2 Configure docker-compose.yml Ensure your docker-compose.yml is configured with the correct images and ports:

services:
  absensi-app:
    image: kolonilinus/absensi-app:latest
    container_name: absensi-app
    restart: always
    ports:
      - "8000:80"
    environment:
      - APP_KEY=base64:e8H42qvJ+nkBJBRmM92B1rB9ITvv2yITeiLMb79fvcc=
      - APP_DEBUG=true
      - DB_CONNECTION=mysql
      - DB_HOST=absensi-db
      - DB_PORT=3306
      - DB_DATABASE=absensi
      - DB_USERNAME=user_absensi
      - DB_PASSWORD=kQrmit88
      - APP_URL=http://localhost:8000
      - ASSET_URL=http://localhost:8000
      - TRUST_PROXIES=*
    depends_on:
      - absensi-db

  absensi-db:
    image: mariadb:10.6
    container_name: absensi-db
    restart: always
    environment:
      - MYSQL_DATABASE=absensi
      - MYSQL_USER=user_absensi.       # <- Change your username
      - MYSQL_PASSWORD=kQrmit88        # <- Change your password
      - MYSQL_ROOT_PASSWORD=kQrmit88   # <- Change your root password for easier development in the future
    volumes:
      - absensi-db:/var/lib/mysql

  https-proxy:
    image: 'steveltn/https-portal:1'
    container_name: absensi-proxy
    restart: always
    ports:
      - "8501:80" # <- Change Host Port (HTTP)
      - "8443:443" # <- Change Host Port (HTTPS)
    environment:
      DOMAINS: 'localhost -> http://absensi-app:80'
      STAGE: 'local'
    depends_on:
      - absensi-app

volumes:
  absensi-db:
Step 2: Setup the Reverse Proxy Config

The stack runs securely behind an Nginx-based proxy. For local development, we use https-portal which handles SSL auto-generation.

  • SSL: Self-signed certificates are generated automatically.
  • Redirection: Port 8501 (HTTP) automatically redirects to 8443 (HTTPS).
Step 3: Deploy the Platform

Spin up the complete infrastructure with a single orchestrator command:

docker-compose up -d
Step 4: Initialize the Database (First-Time Only)

If this is your first time starting the server, the database will be empty. Run the following command to create tables and seed default user accounts:

docker-compose exec absensi-app php artisan migrate --seed

🌐 Accessing the Application

Important

**SSL Security**: In local mode, your browser will show a warning. Click **"Advanced"** -> **"Proceed"** to continue. This is required for Facial Recognition (Camera) features.

🔐 Default Credentials

RoleUsernamePassword
Superadminsuperadminpassword
Adminadminpassword
Useruseruser123
Employeepegawaipassword
HRDhrdpassword

Tag summary

Content type

Image

Digest

sha256:a703b637d

Size

366 MB

Last updated

4 months ago

docker pull kolonilinus/absensi-app