# πŸ’Ž 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** --- ## οΏ½ 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 ``` --- ## οΏ½πŸ”§ 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_