POS Toko adalah aplikasi Point of Sale (POS) untuk mengelola penjualan dan inventaris toko.
-
Clone repositori ini:
git clone https://github.com/pemula11/pos-toko.git cd pos-toko
-
Install dependencies:
npm install
-
Buat file .env dan tambahkan konfigurasi berikut:
JWT_SECRET=your_jwt_secret JWT_SECRET_REFRESH_TOKEN=your_refresh_token_secret JWT_ACCESS_TOKEN_EXPIRED=1h
-
Ubah konfigurasi database pada [config/config.json]
- Jalankan migrasi database:
npx sequelize-cli db:migrate
- Jalankan seed untuk mengisi database dengan data awal:
npx sequelize-cli db:seed:all
- Jalankan tes unit menggunakan Mocha:
npx mocha
- URL:
/register
- Method:
POST
- Body Parameters:
name
: Nama pengguna (required)email
: Email pengguna (required)password
: Kata sandi pengguna (required)
- Success Response:
- Code: 201
- Content:
{ "status": "success", "data": { "id": 1, "name": "User Name", "email": "user@example.com" } }
- Error Response:
- Code: 400
- Content:
{ "status": "error", "message": "Validation error" }
- URL:
/login
- Method:
POST
- Body Parameters:
email
: Email pengguna (required)password
: Kata sandi pengguna (required)
- Success Response:
- Code: 200
- Content:
{ "status": "success", "data": { "token": "jwt_token" } }
- Error Response:
- Code: 401
- Content:
{ "status": "error", "message": "Invalid email or password" }
- URL:
/products
- Method:
GET
- Query Parameters:
page
(optional): Nomor halaman (default: 1)limit
(optional): Jumlah item per halaman (default: 10)
- Success Response:
- Code: 200
- Content:
{ "status": "success", "data": { "data": [ { "id": 1, "name": "Product 1", "price": 100, "stock": 10, "description": "Description of Product 1", "category": "Category 1" }, ... ], "page": 1, "limit": 10, "total": 100, "pages": 10 } }
- URL:
/products/:id
- Method:
GET
- URL Parameters:
id
: ID produk
- Success Response:
- Code: 200
- Content:
{ "status": "success", "data": { "id": 1, "name": "Product 1", "price": 100, "stock": 10, "description": "Description of Product 1", "category": "Category 1" } }
- Error Response:
- Code: 404
- Content:
{ "status": "error", "message": "Product not found" }
- URL:
/products
- Method:
POST
- Body Parameters:
name
: Nama produk (required)price
: Harga produk (required)stock
: Stok produk (optional, default: 0)description
: Deskripsi produk (optional, default: "No description")category
: Kategori produk (optional, default: "Uncategorized")
- Success Response:
- Code: 201
- Content:
{ "status": "success", "data": { "id": 1, "name": "Product 1", "price": 100, "stock": 10, "description": "Description of Product 1", "category": "Category 1" } }
- URL:
/products/:id
- Method:
PUT
- URL Parameters:
id
: ID produk
- Body Parameters:
name
: Nama produk (optional)price
: Harga produk (optional)stock
: Stok produk (optional)description
: Deskripsi produk (optional)category
: Kategori produk (optional)
- Success Response:
- Code: 200
- Content:
{ "status": "success", "data": { "id": 1, "name": "Updated Product", "price": 150, "stock": 20, "description": "Updated description", "category": "Updated category" } }
- Error Response:
- Code: 404
- Content:
{ "status": "error", "message": "Product not found" }
- URL:
/products/:id
- Method:
DELETE
- URL Parameters:
id
: ID produk
- Success Response:
- Code: 200
- Content:
{ "status": "success", "message": "Product deleted successfully" }
- Error Response:
- Code: 404
- Content:
{ "status": "error", "message": "Product not found" }
- URL:
/transactions
- Method:
GET
- Query Parameters:
- Success Response:
- Code: 200
- Content:
{ "status": "success", "data": [ { "id": 1, "details": [ { "productId": 1, "quantity": 2, "price": 100 } ], "total": 200, "createdAt": "2023-01-01T00:00:00.000Z" }, ... ], "page": 1, "limit": 10, "total": 100, "pages": 10 }
- URL:
/transactions/:id
- Method:
GET
- URL Parameters:
- id: ID transaksi
- Success Response:
- Code: 200
- Content:
{ "status": "success", "data": { "id": 1, "details": [ { "productId": 1, "quantity": 2, "price": 100 } ], "total": 200, "createdAt": "2023-01-01T00:00:00.000Z" } }
- Error Response:
- Code: 404
- Content:
{ "status": "error", "message": "Transaction not found" }
- URL:
/transactions
- Method:
POST
- Body Parameters:
- details: Array of transaction details (required)
productId
: ID produk (required)quantity
: Jumlah produk (required)price
: Harga produk (required)
- details: Array of transaction details (required)
- Success Response:
- Code: 201
- Content:
{ "status": "success", "data": { "id": 1, "details": [ { "productId": 1, "quantity": 2, "price": 100 } ], "total": 200, "createdAt": "2023-01-01T00:00:00.000Z" } }