An open API service indexing awesome lists of open source software.

https://github.com/bintang-r/pos-system-django-real-implementation

RestFul API POS (Point Of Sale) implementation with Django Framework Python
https://github.com/bintang-r/pos-system-django-real-implementation

api application authentication django django-framework django-project django-rest-framework jwt python restful-api

Last synced: 21 days ago
JSON representation

RestFul API POS (Point Of Sale) implementation with Django Framework Python

Awesome Lists containing this project

README

          

# ๐Ÿ›’ POS System Django - Real Implementation

Sistem Point of Sale (POS) backend dengan fitur Manajemen Produk, Autentikasi JWT, dan Transaksi otomatis (Potong Stok).

![Django](https://img.shields.io/badge/Django-6.0.3-092E20?logo=django)
![Python](https://img.shields.io/badge/Python-3.14-blue?logo=python)
![MySQL](https://img.shields.io/badge/MySQL-8.0-orange?logo=mysql)
![License](https://img.shields.io/badge/License-MIT-green)

Sistem backend **Point of Sale (POS)** berbasis **Django REST Framework** dengan fitur:

- Manajemen Produk
- Autentikasi JWT
- Sistem Transaksi otomatis (dengan pemotongan stok)

---

## ๐Ÿš€ Prasyarat (Prerequisites)

Sebelum memulai, pastikan Anda telah menginstal:

- **Python 3.10+**
- **Laragon** (untuk MySQL Database)
- **Git**

---

## ๐Ÿ› ๏ธ Langkah Instalasi

### 1. Persiapan Folder & Virtual Environment

Buka terminal (PowerShell/CMD) di folder proyek Anda:

```powershell
# Buat virtual environment
python -m venv venv

# Aktifkan venv
.\venv\Scripts\activate
```

### 2. Instalasi Library

Instal semua dependensi yang dibutuhkan:

```powershell
pip install django djangorestframework djangorestframework-simplejwt django-environ mysqlclient pymysql faker
```

### 3 Konfigurasi Database (MySQL Laragon)

1. Buka Laragon dan pastikan MySQL berjalan.

2. Buka HeidiSQL, buat database baru dengan nama pos_db.

3. Pastikan core/settings.py sudah terkonfigurasi untuk MySQL.

### 4 Migrasi Database

Jalankan perintah ini untuk membuat struktur tabel di MySQL:

```powershell
# Membuat file migrasi
python manage.py makemigrations

# Menerapkan migrasi ke MySQL
python manage.py migrate

# Membuat akun Superuser untuk akses admin
python manage.py createsuperuser
```

### 5 Membuat Akun Admin

```powershell
python manage.py createsuperuser
```

---

## ๐Ÿ› ๏ธ Langkah Awal: Membuat Struktur Proyek

Jika Anda ingin membangun ulang atau menambah aplikasi, berikut adalah urutan perintah yang kita gunakan:

```bash
# 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 ..
```

---

### ๐Ÿ“ฆ Menjalankan Data Seeder

```powershell
python manage.py seed_products
```

### ๐Ÿ”Œ Dokumentasi API Endpoints

Gunakan Postman untuk melakukan tes pada endpoint berikut:

#### ๐Ÿ” Autentikasi (JWT)

| Method | Endpoint | Description |
| ------ | ------------------ | ----------------------------- |
| POST | /api/auth/login/ | Login & Mendapatkan JWT Token |
| POST | /api/auth/refresh/ | Memperbarui Token |

#### ๐ŸŽ Produk (CRUD)

| 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 |

#### ๐Ÿ›’ Transaksi

| Method | Endpoint | Description |
| ------ | --------------------------- | --------------------------------- |
| POST | /api/transactions/checkout/ | Melakukan transaksi & potong stok |

---

## Format Body Checkout (JSON):

```json
{
"items": [
{ "product": 1, "quantity": 2 },
{ "product": 5, "quantity": 1 }
]
}
```

---

## ๐Ÿงช Menjalankan Unit Test

```powershell
python manage.py test
```

---

### ๐Ÿ“‚ Struktur Proyek

- core/: Pengaturan utama Django & Routing global.
- apps/users/: Custom User Model & Manajemen Role.
- apps/products/: Logika produk & Seeder.
- apps/transactions/: Logika transaksi & Service Layer.