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.
- Login dan autentikasi
- Form pengajuan biaya operasional
- Melihat riwayat pengajuan dan status
- Notifikasi perubahan status pengajuan
- Login dan autentikasi
- Dashboard untuk melihat semua pengajuan biaya
- Detail pengajuan biaya
- Persetujuan atau penolakan pengajuan biaya
- Unggah bukti transfer untuk pengajuan yang disetujui
- 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
Proyek ini terbagi menjadi tiga bagian utama:
- Backend (Golang)
- Frontend Web (React JS)
- Aplikasi Mobile (Kotlin)
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
-
Clone repositori ini:
git clone https://github.com/username/operational-expense-system.git cd operational-expense-system/backend -
Salin file
.env.examplemenjadi.envdan atur variabel lingkungan:cp .env.example .env
-
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 -
Install dependensi:
go mod tidy
-
Inisialisasi database:
go run cmd/main.go migrate
-
Jalankan server:
go run cmd/main.go serve
-
Pindah ke direktori frontend-web:
cd ../frontend-web -
Salin file
.env.examplemenjadi.env:cp .env.example .env
-
Atur variabel lingkungan di file
.env:REACT_APP_API_URL=http://localhost:8080/api -
Install dependensi:
npm install
-
Jalankan aplikasi dalam mode pengembangan:
npm start
-
Untuk build aplikasi untuk produksi:
npm run build
- Buka Android Studio
- Pilih "Open an Existing Project"
- Navigasi ke direktori
mobile-appdan buka proyek - Buat file
local.propertiesdi direktori root proyek mobile-app dan atur path SDK Android:sdk.dir=/path/to/your/android/sdk - Buka file
app/src/main/java/com/example/operationalexpense/api/ApiClient.ktdan ubah BASE_URL ke alamat backend Anda - Build dan jalankan aplikasi di emulator atau perangkat fisik
Database terdiri dari beberapa tabel utama:
- id (UUID) - Primary Key
- username (VARCHAR) - Unique
- password (VARCHAR) - Hashed password
- name (VARCHAR)
- role (VARCHAR) - 'admin' atau 'employee'
- created_at (TIMESTAMP)
- updated_at (TIMESTAMP)
- 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)
- id (UUID) - Primary Key
- expense_id (UUID) - Foreign Key ke Expenses
- proof_image_url (VARCHAR)
- transferred_at (TIMESTAMP)
- created_at (TIMESTAMP)
- updated_at (TIMESTAMP)
- POST /api/auth/login - Login pengguna
- POST /api/auth/logout - Logout 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)
- 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)
Aplikasi ini mengimplementasikan beberapa fitur keamanan:
- Autentikasi berbasis JWT
- Enkripsi password menggunakan bcrypt
- Role-based access control
- Input validation
- Error handling yang aman
- Dapat di-deploy ke server Linux dengan Nginx sebagai reverse proxy
- Dapat juga di-deploy ke container Docker
- Build dengan
npm run build - Deploy static files ke Nginx, Apache, atau layanan hosting statis seperti Netlify, Vercel, dll
- Build APK menggunakan Android Studio
- Distribusikan melalui Google Play Store atau melalui file APK langsung
- Fork repositori
- Buat branch fitur (
git checkout -b feature/amazing-feature) - Commit perubahan Anda (
git commit -m 'Add some amazing feature') - Push ke branch (
git push origin feature/amazing-feature) - Buka Pull Request
Jika Anda memiliki pertanyaan, silakan buka issue di repositori GitHub ini.
Proyek ini dilisensikan di bawah MIT License.