Skip to content

Lyynov/Operational-Cost-Approval-Apps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sistem Pengajuan Biaya Operasional

Aplikasi ini adalah sistem pengajuan biaya operasional yang memiliki dua jenis pengguna: admin dan karyawan. Aplikasi ini memungkinkan karyawan untuk mengajukan permintaan biaya operasional, melihat riwayat pengajuan, dan melihat status persetujuan. Admin dapat melihat, meninjau, dan menyetujui pengajuan biaya operasional serta mengunggah bukti transfer.

Fitur Utama

Untuk Karyawan (Aplikasi Mobile)

  • Login dan autentikasi
  • Form pengajuan biaya operasional
  • Melihat riwayat pengajuan dan status
  • Notifikasi perubahan status pengajuan

Untuk Admin (Aplikasi Web)

  • Login dan autentikasi
  • Dashboard untuk melihat semua pengajuan biaya
  • Detail pengajuan biaya
  • Persetujuan atau penolakan pengajuan biaya
  • Unggah bukti transfer untuk pengajuan yang disetujui

Teknologi yang Digunakan

  • Backend: Golang (Echo Framework)
  • Frontend Web: React JS
  • Mobile App: Kotlin
  • Database: PostgreSQL
  • Authentication: JWT (JSON Web Token)
  • Storage: AWS S3 atau penyimpanan lokal untuk file dan gambar

Struktur Proyek

Proyek ini terbagi menjadi tiga bagian utama:

  1. Backend (Golang)
  2. Frontend Web (React JS)
  3. Aplikasi Mobile (Kotlin)

Prasyarat

Untuk mengembangkan dan menjalankan aplikasi ini, Anda memerlukan:

  • Go (versi 1.18 atau lebih tinggi)
  • Node.js (versi 14 atau lebih tinggi)
  • Android Studio (untuk pengembangan aplikasi mobile)
  • PostgreSQL (versi 12 atau lebih tinggi)
  • Git

Cara Instalasi dan Penggunaan

Pengaturan Backend

  1. Clone repositori ini:

    git clone https://github.com/username/operational-expense-system.git
    cd operational-expense-system/backend
  2. Salin file .env.example menjadi .env dan atur variabel lingkungan:

    cp .env.example .env
  3. Atur variabel lingkungan di file .env:

    DB_HOST=localhost
    DB_PORT=5432
    DB_USER=postgres
    DB_PASSWORD=password
    DB_NAME=operational_expense
    JWT_SECRET=your_jwt_secret
    SERVER_PORT=8080
    
  4. Install dependensi:

    go mod tidy
  5. Inisialisasi database:

    go run cmd/main.go migrate
  6. Jalankan server:

    go run cmd/main.go serve

Pengaturan Frontend Web

  1. Pindah ke direktori frontend-web:

    cd ../frontend-web
  2. Salin file .env.example menjadi .env:

    cp .env.example .env
  3. Atur variabel lingkungan di file .env:

    REACT_APP_API_URL=http://localhost:8080/api
    
  4. Install dependensi:

    npm install
  5. Jalankan aplikasi dalam mode pengembangan:

    npm start
  6. Untuk build aplikasi untuk produksi:

    npm run build

Pengaturan Aplikasi Mobile

  1. Buka Android Studio
  2. Pilih "Open an Existing Project"
  3. Navigasi ke direktori mobile-app dan buka proyek
  4. Buat file local.properties di direktori root proyek mobile-app dan atur path SDK Android:
    sdk.dir=/path/to/your/android/sdk
    
  5. Buka file app/src/main/java/com/example/operationalexpense/api/ApiClient.kt dan ubah BASE_URL ke alamat backend Anda
  6. Build dan jalankan aplikasi di emulator atau perangkat fisik

Struktur Database

Database terdiri dari beberapa tabel utama:

Tabel Users

  • id (UUID) - Primary Key
  • username (VARCHAR) - Unique
  • password (VARCHAR) - Hashed password
  • name (VARCHAR)
  • role (VARCHAR) - 'admin' atau 'employee'
  • created_at (TIMESTAMP)
  • updated_at (TIMESTAMP)

Tabel Expenses

  • id (UUID) - Primary Key
  • user_id (UUID) - Foreign Key ke Users
  • title (VARCHAR)
  • description (TEXT)
  • amount (DECIMAL)
  • status (VARCHAR) - 'pending', 'approved', 'rejected'
  • created_at (TIMESTAMP)
  • updated_at (TIMESTAMP)

Tabel Transfers

  • id (UUID) - Primary Key
  • expense_id (UUID) - Foreign Key ke Expenses
  • proof_image_url (VARCHAR)
  • transferred_at (TIMESTAMP)
  • created_at (TIMESTAMP)
  • updated_at (TIMESTAMP)

API Endpoints

Autentikasi

  • POST /api/auth/login - Login pengguna
  • POST /api/auth/logout - Logout pengguna

Pengguna

  • GET /api/users - Mendapatkan daftar pengguna (hanya admin)
  • POST /api/users - Membuat pengguna baru (hanya admin)
  • GET /api/users/:id - Mendapatkan detail pengguna
  • PUT /api/users/:id - Memperbarui pengguna (hanya admin)
  • DELETE /api/users/:id - Menghapus pengguna (hanya admin)

Biaya Operasional

  • GET /api/expenses - Mendapatkan daftar biaya (semua untuk admin, hanya milik sendiri untuk karyawan)
  • POST /api/expenses - Membuat pengajuan biaya baru (karyawan)
  • GET /api/expenses/:id - Mendapatkan detail biaya
  • PUT /api/expenses/:id/status - Memperbarui status biaya (hanya admin)
  • POST /api/expenses/:id/transfer - Mengunggah bukti transfer (hanya admin)

Keamanan

Aplikasi ini mengimplementasikan beberapa fitur keamanan:

  1. Autentikasi berbasis JWT
  2. Enkripsi password menggunakan bcrypt
  3. Role-based access control
  4. Input validation
  5. Error handling yang aman

Deployment

Backend

  • Dapat di-deploy ke server Linux dengan Nginx sebagai reverse proxy
  • Dapat juga di-deploy ke container Docker

Frontend Web

  • Build dengan npm run build
  • Deploy static files ke Nginx, Apache, atau layanan hosting statis seperti Netlify, Vercel, dll

Aplikasi Mobile

  • Build APK menggunakan Android Studio
  • Distribusikan melalui Google Play Store atau melalui file APK langsung

Kontribusi

  1. Fork repositori
  2. Buat branch fitur (git checkout -b feature/amazing-feature)
  3. Commit perubahan Anda (git commit -m 'Add some amazing feature')
  4. Push ke branch (git push origin feature/amazing-feature)
  5. Buka Pull Request

Kontak

Jika Anda memiliki pertanyaan, silakan buka issue di repositori GitHub ini.

Lisensi

Proyek ini dilisensikan di bawah MIT License.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published