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": "[email protected]" } }
- 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" } }