379 lines
8.1 KiB
Markdown
379 lines
8.1 KiB
Markdown
# 💎 Aplikasi Kasir Toko Perhiasan
|
||
|
||
Aplikasi kasir modern berbasis web untuk toko perhiasan dengan sistem manajemen yang lengkap dan antarmuka yang user-friendly. Dibuat khusus sesuai kebutuhan Toko Emas Jakarta Citayam.
|
||
|
||
## 👥 Tim Development
|
||
|
||
**PT Teknologi Mulia Sejahtera Cemerlang (Abbauf Tech) - Internship Program**
|
||
|
||
- **Baghaztra Van Ril** - Backend Developer
|
||
- **Aditya Ahmad Afarison** - Frontend Developer
|
||
- **Timotius Julius Iwan** - Backend Developer
|
||
- **Dhilan Radya Irawan** - Frontend Developer
|
||
|
||
---
|
||
|
||
## 🚀 Tentang Aplikasi
|
||
|
||
Semuah sistem Point of Sale (POS) yang dirancang khusus untuk kebutuhan toko perhiasan dengan fitur manajemen yang komprehensif dan sistem role-based access control.
|
||
|
||
### ✨ Fitur Utama
|
||
|
||
#### 👑 Role Owner
|
||
|
||
- **Manajemen Produk** - CRUD produk perhiasan lengkap dengan detail
|
||
- **Manajemen Nampan** - Organisasi produk berdasarkan nampan display
|
||
- **Manajemen Brankas** - Sistem penyimpanan produk berharga
|
||
- **Manajemen Sales** - Kelola data karyawan dan sales performance
|
||
- **Kasir** - Akses penuh ke sistem transaksi
|
||
- **Laporan** - Dashboard analytics dan laporan keuangan
|
||
- **Manajemen Akun** - User management dan pengaturan sistem
|
||
|
||
#### 💼 Role Kasir
|
||
|
||
- **Lihat Produk** - View-only access ke database produk
|
||
- **Kasir** - Interface transaksi untuk penjualan
|
||
|
||
### 🛠️ Tech Stack
|
||
|
||
- **Backend**: Laravel 11.x
|
||
- **Frontend**: Vue.js 3 + Vue Router
|
||
- **Database**: MySQL
|
||
- **Styling**: Tailwind CSS
|
||
- **Build Tool**: Vite
|
||
- **Authentication**: Laravel Sanctum
|
||
- **HTTP Client**: Axios
|
||
|
||
---
|
||
|
||
## 📋 Prerequisites
|
||
|
||
### Opsi 1: Docker (Recommended) 🐳
|
||
|
||
- **Docker Desktop** (Windows/Mac) atau **Docker Engine** (Linux)
|
||
- **Docker Compose** v2.0+
|
||
- **Git**
|
||
|
||
### Opsi 2: Manual Installation
|
||
|
||
- **PHP** 8.2+
|
||
- **Composer**
|
||
- **Node.js** 18+
|
||
- **NPM**
|
||
- **MySQL** 8.0+
|
||
- **Redis** (optional)
|
||
- **Git**
|
||
|
||
---
|
||
|
||
## <20> Docker Installation (Recommended)
|
||
|
||
### Quick Start dengan Docker
|
||
|
||
```bash
|
||
# 1. Clone repository
|
||
git clone https://git.abbauf.com/Magang-2025/Kasir.git
|
||
cd Kasir
|
||
|
||
# 2. Setup environment
|
||
copy .env.docker .env # Windows
|
||
# atau
|
||
cp .env.docker .env # Linux/Mac
|
||
|
||
# 3. Edit .env (PENTING: ganti password!)
|
||
notepad .env # Windows
|
||
nano .env # Linux/Mac
|
||
|
||
# 4. Deploy dengan satu command
|
||
docker-deploy.bat # Windows
|
||
# atau
|
||
./docker-deploy.sh # Linux/Mac
|
||
|
||
# 5. Akses aplikasi
|
||
# http://localhost
|
||
```
|
||
|
||
**Dokumentasi Docker Lengkap:**
|
||
- 📖 Quick Start: [README-DOCKER.md](README-DOCKER.md)
|
||
- 📚 Full Guide: [DOCKER-DEPLOYMENT.md](DOCKER-DEPLOYMENT.md)
|
||
- 📋 Checklist: [DEPLOYMENT-CHECKLIST.md](DEPLOYMENT-CHECKLIST.md)
|
||
- 🎯 Quick Reference: [QUICK-REFERENCE.txt](QUICK-REFERENCE.txt)
|
||
|
||
**Management Commands:**
|
||
```bash
|
||
docker-helper.bat status # Cek status containers
|
||
docker-helper.bat logs # Lihat logs
|
||
docker-helper.bat backup # Backup database
|
||
docker-helper.bat restart # Restart containers
|
||
```
|
||
|
||
---
|
||
|
||
## <20>🔧 Manual Installation
|
||
|
||
### 1. Clone Repository
|
||
|
||
```bash
|
||
git clone https://git.abbauf.com/Magang-2025/Kasir.git
|
||
cd Kasir
|
||
```
|
||
|
||
### 2. Install Dependencies Backend
|
||
|
||
```bash
|
||
# Install PHP dependencies
|
||
composer install
|
||
|
||
# Copy environment file
|
||
cp .env.example .env
|
||
|
||
# Generate application key
|
||
php artisan key:generate
|
||
```
|
||
|
||
### 3. Install Dependencies Frontend
|
||
|
||
```bash
|
||
# Install Node.js dependencies
|
||
npm install
|
||
```
|
||
|
||
### 4. Konfigurasi Database
|
||
|
||
Edit file `.env` sesuai dengan konfigurasi database:
|
||
|
||
```env
|
||
DB_CONNECTION=mysql
|
||
DB_HOST=127.0.0.1
|
||
DB_PORT=3306
|
||
DB_DATABASE=toko_emas
|
||
DB_USERNAME=root
|
||
DB_PASSWORD=
|
||
```
|
||
|
||
---
|
||
|
||
### 5. Setup Database
|
||
|
||
```bash
|
||
php artisan migrate
|
||
```
|
||
|
||
```bash
|
||
php artisan db:seed
|
||
```
|
||
|
||
### 6. Storage Link
|
||
|
||
```bash
|
||
php artisan storage:link
|
||
```
|
||
|
||
### 7. Jalankan Aplikasi
|
||
|
||
#### Development Mode
|
||
|
||
```bash
|
||
npm run dev
|
||
```
|
||
|
||
---
|
||
|
||
## 🌐 Akses Aplikasi
|
||
|
||
Setelah instalasi berhasil, akses aplikasi melalui:
|
||
|
||
- **URL**: http://localhost:8000
|
||
- **Admin Panel**: http://localhost:8000/admin (jika tersedia)
|
||
|
||
### 👤 Default Login
|
||
|
||
**Owner Account:**
|
||
|
||
- Email: `owner@tokoperhiasan.com`
|
||
- Password: `password123`
|
||
|
||
**Kasir Account:**
|
||
|
||
- Email: `kasir@tokoperhiasan.com`
|
||
- Password: `password123`
|
||
|
||
---
|
||
|
||
## 📁 Struktur Folder
|
||
|
||
```
|
||
kasir-toko-perhiasan/
|
||
├── app/
|
||
│ ├── Http/Controllers/ # API Controllers
|
||
│ └── Models/ # Database Models
|
||
├── database/
|
||
│ ├── migrations/ # Database Migrations
|
||
│ ├── seeders/ # Data Seeders
|
||
│ └── factories/ # Model Factories
|
||
├── public/ # Public Files
|
||
├── resources/
|
||
│ ├── css/
|
||
│ │ └── app.css # Main CSS File
|
||
│ ├── js/
|
||
│ │ ├── components/ # Reusable Vue Components
|
||
│ │ ├── pages/ # Vue Pages
|
||
│ │ ├── router/ # Vue Routes
|
||
│ │ ├── services/ # API Services
|
||
│ │ └── App.vue
|
||
│ └── views/
|
||
│ └── app.blade.php # Main SPA Template
|
||
└── routes/
|
||
└── web.php # Laravel Routes
|
||
```
|
||
|
||
---
|
||
|
||
Oke, jadi penjelasan “📊 Fitur Database” yang kamu tulis nggak sepenuhnya sesuai sama struktur tabel yang udah kamu definisikan di awal. Ada tabel yang salah nama, ada juga relasi yang kebalik. Gue rapihin biar konsisten dengan skema yang udah kamu kasih:
|
||
|
||
---
|
||
|
||
## 📊 Fitur Database (Revisi)
|
||
|
||
### Tabel Utama
|
||
|
||
- **akun** → Data pengguna (owner, kasir)
|
||
- **produk** → Master data produk perhiasan
|
||
- **foto** → Kumpulan foto untuk tiap produk
|
||
- **nampan** → Organisasi tempat penyimpanan produk (display)
|
||
- **item** → Stok unit fisik dari produk (bisa ada banyak untuk 1 produk)
|
||
- **transaksi** → Data transaksi penjualan
|
||
- **item_transaksi** → Detail item yang dijual per transaksi
|
||
- **sales** → Data marketing/sales yang membawa pelanggan
|
||
|
||
_(catatan: “brankas” nggak perlu tabel khusus, karena sudah diwakili `item.id_nampan = null`)_
|
||
|
||
### Relationships
|
||
|
||
```php
|
||
// Produk bisa punya banyak foto
|
||
Produk -> hasMany -> Foto
|
||
|
||
// Produk bisa punya banyak item fisik
|
||
Produk -> hasMany -> Item
|
||
|
||
// Item bisa ada di satu nampan, atau null (brankas)
|
||
Item -> belongsTo -> Nampan
|
||
|
||
// Transaksi dicatat oleh satu kasir
|
||
Transaksi -> belongsTo -> Akun (kasir)
|
||
|
||
// Transaksi bisa melibatkan 0/1 sales
|
||
Transaksi -> belongsTo -> Sales
|
||
|
||
// Transaksi punya banyak item_transaksi
|
||
Transaksi -> hasMany -> ItemTransaksi
|
||
|
||
// Item_transaksi menghubungkan 1 transaksi dengan 1 item
|
||
ItemTransaksi -> belongsTo -> Item
|
||
```
|
||
|
||
---
|
||
|
||
## 🛠️ Development
|
||
|
||
### Code Quality
|
||
|
||
```bash
|
||
npm run dev
|
||
```
|
||
|
||
### Database Management
|
||
|
||
```bash
|
||
# Reset database dan re-seed
|
||
php artisan migrate:fresh --seed
|
||
|
||
# Backup database
|
||
php artisan backup:run
|
||
|
||
# Generate model dengan migration
|
||
php artisan make:model ProductCategory -m
|
||
```
|
||
|
||
### Production Deployment
|
||
|
||
**Dengan Docker (Recommended):**
|
||
```bash
|
||
# 1. Setup .env untuk production
|
||
copy .env.docker .env
|
||
# Edit: APP_ENV=production, APP_DEBUG=false, set password kuat
|
||
|
||
# 2. Deploy
|
||
docker-deploy.bat
|
||
|
||
# 3. Monitor
|
||
docker-helper.bat status
|
||
docker-helper.bat logs
|
||
```
|
||
|
||
**Manual Deployment:**
|
||
```bash
|
||
# Build assets
|
||
npm run build
|
||
|
||
# Optimize Laravel
|
||
php artisan config:cache
|
||
php artisan route:cache
|
||
php artisan view:cache
|
||
|
||
# Set permissions
|
||
chmod -R 775 storage bootstrap/cache
|
||
```
|
||
|
||
**Dokumentasi lengkap:** [DOCKER-DEPLOYMENT.md](DOCKER-DEPLOYMENT.md)
|
||
|
||
---
|
||
|
||
## 🔄 Update Aplikasi
|
||
|
||
**Dengan Docker:**
|
||
```bash
|
||
docker-helper.bat update # Otomatis: pull, rebuild, migrate, cache
|
||
```
|
||
|
||
**Manual:**
|
||
```bash
|
||
git pull origin main
|
||
composer install --no-dev
|
||
npm install && npm run build
|
||
php artisan migrate --force
|
||
php artisan config:cache
|
||
```
|
||
|
||
---
|
||
|
||
## 💾 Backup & Restore
|
||
|
||
**Backup Database (Docker):**
|
||
```bash
|
||
docker-helper.bat backup
|
||
# File tersimpan di: docker/mysql/backups/
|
||
```
|
||
|
||
**Restore Database (Docker):**
|
||
```bash
|
||
docker-helper.bat restore
|
||
# Pilih file backup yang tersedia
|
||
```
|
||
|
||
**Manual Backup:**
|
||
```bash
|
||
mysqldump -u root -p toko_emas > backup.sql
|
||
```
|
||
|
||
---
|
||
|
||
## 📄 License
|
||
|
||
Lisensi dan kepemilikan atascource code adalah milik PT Teknologi Mulia Sejahtera Cemerlang.
|
||
|
||
---
|
||
|
||
_Tim Internship TMSC 2025_
|