Skip to content

aqilfajar08/Absence-Backend

Repository files navigation

Sistem Informasi Presensi Karyawan

Sistem presensi karyawan berbasis Laravel dengan QR Code, GPS tracking, dan laporan absensi lengkap.

Fitur Utama

  • Absensi QR Code - Absen masuk dan absen pulang dengan scan QR Code
  • GPS Tracking - Validasi lokasi karyawan dengan radius kantor
  • Multi-Role System - Admin, Resepsionis, dan Karyawan
  • Laporan Excel - Ekspor laporan absensi bulanan
  • Notifikasi Otomatis - Reminder checkout otomatis 10 menit sebelum dan saat jam pulang
  • Kalender Riwayat - Visualisasi kehadiran bulanan
  • Pengaturan Fleksibel - Konfigurasi jam kerja dan potongan

Tech Stack

  • Backend: Laravel 11
  • Frontend: Blade Templates + Tailwind CSS + Alpine.js
  • Database: MySQL
  • Notifications: Firebase Cloud Messaging

Persyaratan Sistem

  • PHP >= 8.2
  • Composer
  • MySQL >= 8.0
  • Node.js >= 18.x
  • NPM atau Yarn

Instalasi Development

1. Clone Repository

git clone https://github.com/yourusername/absence-backend.git
cd absence-backend

2. Install Dependencies

# Install PHP dependencies
composer install

# Install JavaScript dependencies
npm install

3. Setup Environment

# Copy environment file
copy .env.example .env

# Generate application key
php artisan key:generate

4. Konfigurasi Database

Edit file .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_absence_backend
DB_USERNAME=root
DB_PASSWORD=your_password_here

5. Setup Firebase (Optional untuk Notifikasi)

  1. Download firebase-auth.json dari Firebase Console
  2. Letakkan di folder storage/app/firebase-auth.json
  3. Update .env:
FIREBASE_DATABASE_URL=https://your-project.firebaseio.com
FIREBASE_CREDENTIALS=storage/app/firebase-auth.json

6. Migrate & Seed Database

php artisan migrate:fresh --seed

Default Login Credentials:

7. Build Assets

npm run build

8. Create Storage Link

php artisan storage:link

9. Run Development Server

php artisan serve

Akses: http://localhost:8000

10. Setup Notifikasi Otomatis (Optional)

Untuk mengaktifkan reminder checkout otomatis:

# Windows - Buat task scheduler yang menjalankan setiap menit:
# Buat file run-scheduler.bat dengan isi:
# cd d:\KP\Absence-Backend && php artisan schedule:run

# Atau jalankan manual untuk testing:
php artisan schedule:run

Lihat panduan lengkap: NOTIFIKASI_CHECKOUT.md


Quick Steps:

  1. Copy .env.production ke .env di server
  2. Update semua konfigurasi (database, APP_URL, dll)
  3. Set APP_DEBUG=false dan APP_ENV=production
  4. Setup HTTPS/SSL Certificate
  5. Run optimization:
composer install --optimize-autoloader --no-dev
php artisan config:cache
php artisan route:cache
php artisan view:cache
  1. Set proper permissions:
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache

Keamanan

  • Rate Limiting - Login dibatasi 5 percobaan per menit
  • CSRF Protection - Aktif di semua form
  • Password Hashing - BCrypt dengan 12 rounds
  • SQL Injection Protection - Eloquent ORM dengan prepared statements
  • Input Validation - Validasi ketat di semua input

PENTING saat production:

  • Set APP_DEBUG=false
  • Set SESSION_SECURE_COOKIE=true (jika pakai HTTPS)
  • Gunakan database password yang kuat
  • Setup HTTPS dengan SSL certificate
  • Hapus atau amankan route /fix-lateness

Fitur Detail

Authentication & Authorization

  • Multi-role system (Admin, Resepsionis, Karyawan)
  • Laravel Sanctum untuk API authentication
  • Session-based auth untuk web

Absensi QR Code

  • QR Code harian yang di-generate resepsionis
  • Validasi token dan tanggal
  • GPS radius checking
  • Auto-calculate keterlambatan

Sistem Keterlambatan

  • Terlambat 1: 08:01 - 08:30 (Potongan GPH 25%)
  • Terlambat 2: 08:31 - 09:00 (Potongan GPH 30%)
  • Terlambat 3: 09:01 - 12:00 (Potongan GPH 35%)
  • Setengah Hari: > 12:00 (Potongan GPH 100%)
  • Threshold dan persentase potongan bisa diatur admin

Laporan & Ekspor

  • Filter berdasarkan tanggal dan nama
  • Ekspor ke Excel dengan format lengkap
  • Perhitungan otomatis potongan gaji
  • Visualisasi calendar view

UI/UX Features

  • Responsive design (Desktop to Mobile)
  • Real-time attendance monitoring
  • Interactive calendar
  • Badge status berwarna
  • Toast notifications

Commands Penting

# Clear all cache
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear

# Recreate database
php artisan migrate:fresh --seed

# Build assets for production
npm run build

# Run tests (jika ada)
php artisan test

Troubleshooting

Error: "500 Internal Server Error"

tail -f storage/logs/laravel.log

Error: "Permission Denied"

chmod -R 775 storage bootstrap/cache

Assets tidak load

npm run build
php artisan view:clear

License

This project is proprietary software. All rights reserved.


Credits

Developed for Kantor KASAU Sinar Samudera
© 2025 - All Rights Reserved

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages