Sistem Point of Sale (POS) backend dengan fitur Manajemen Produk, Autentikasi JWT, dan Transaksi otomatis (Potong Stok).
Sistem backend Point of Sale (POS) berbasis Django REST Framework dengan fitur:
- Manajemen Produk
- Autentikasi JWT
- Sistem Transaksi otomatis (dengan pemotongan stok)
Sebelum memulai, pastikan Anda telah menginstal:
- Python 3.10+
- Laragon (untuk MySQL Database)
- Git
Buka terminal (PowerShell/CMD) di folder proyek Anda:
# Buat virtual environment
python -m venv venv
# Aktifkan venv
.\venv\Scripts\activateInstal semua dependensi yang dibutuhkan:
pip install django djangorestframework djangorestframework-simplejwt django-environ mysqlclient pymysql faker-
Buka Laragon dan pastikan MySQL berjalan.
-
Buka HeidiSQL, buat database baru dengan nama pos_db.
-
Pastikan core/settings.py sudah terkonfigurasi untuk MySQL.
Jalankan perintah ini untuk membuat struktur tabel di MySQL:
# Membuat file migrasi
python manage.py makemigrations
# Menerapkan migrasi ke MySQL
python manage.py migrate
# Membuat akun Superuser untuk akses admin
python manage.py createsuperuserpython manage.py createsuperuserJika Anda ingin membangun ulang atau menambah aplikasi, berikut adalah urutan perintah yang kita gunakan:
# 1. Membuat Folder Utama & Project
django-admin startproject core .
# 2. Membuat Folder Apps (untuk merapikan struktur)
mkdir apps
cd apps
python ../manage.py startapp users
python ../manage.py startapp products
python ../manage.py startapp transactions
cd ..python manage.py seed_productsGunakan Postman untuk melakukan tes pada endpoint berikut:
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/login/ | Login & Mendapatkan JWT Token |
| POST | /api/auth/refresh/ | Memperbarui Token |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/products/ | List semua produk |
| POST | /api/products/ | Tambah produk baru (Admin) |
| PUT | /api/products/{id}/ | Update produk |
| DELETE | /api/products/{id}/ | Hapus produk |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/transactions/checkout/ | Melakukan transaksi & potong stok |
{
"items": [
{ "product": 1, "quantity": 2 },
{ "product": 5, "quantity": 1 }
]
}python manage.py test- core/: Pengaturan utama Django & Routing global.
- apps/users/: Custom User Model & Manajemen Role.
- apps/products/: Logika produk & Seeder.
- apps/transactions/: Logika transaksi & Service Layer.