Initial Login
After running the database seeder, you’ll have three default user accounts available:Admin
Email:
Password:
Role: Administrator
[email protected]Password:
passwordrahasiaRole: Administrator
Cashier
Email:
Password:
Role: Cashier
[email protected]Password:
passwordrahasiaRole: Cashier
Manager
Email:
Password:
Role: Manager
[email protected]Password:
passwordrahasiaRole: Manager
Login as Admin
For your first login, use the admin account:
- Email:
[email protected] - Password:
passwordrahasia
Understanding User Roles
POS Kasir implements Role-Based Access Control (RBAC) with three distinct roles:Administrator
Full System Access- User management (create, edit, delete users)
- Product and inventory management
- Category management
- Payment method configuration
- System settings and branding
- Full access to reports and analytics
- Activity logs and audit trails
- Promotion and discount management
Manager
Management & Reporting- View and manage products
- Access reports and analytics
- View transaction history
- Monitor cashier performance
- View activity logs
- Limited user management
Cashier
Point of Sale Operations- Process sales transactions
- Handle cash and digital payments
- Manage shift operations
- View product catalog
- Generate receipts
- Limited access to reports (own transactions only)
User roles are enforced both on the frontend (UI restrictions) and backend (API authorization).
Initial Setup Tasks
Complete these essential setup tasks to prepare your POS system:1. Configure System Branding
Upload Logo
Go to Settings → Branding and upload your business logo.This logo will appear on:
- Login page
- Dashboard header
- Printed receipts
2. Set Up Product Categories
Create Categories
Navigate to Products → CategoriesCreate categories for organizing your products:
- Beverages
- Food
- Snacks
- Merchandise
3. Add Products
Fill Product Details
Enter product information:
- Name: Product name
- SKU: Stock keeping unit (unique identifier)
- Category: Select from created categories
- Price: Selling price
- Cost: Purchase cost (for profit calculation)
- Stock: Initial quantity
- Description: Product description
- Image: Upload product image (stored in R2)
Add Product Options (Optional)
For products with variants (e.g., sizes, flavors):
- Click Add Option
- Name: “Size”, “Flavor”, etc.
- Values: “Small”, “Medium”, “Large”
- Price adjustments for each option
4. Configure Payment Methods
Review Default Methods
Navigate to Settings → Payment MethodsDefault methods from seeder:
- Cash
- Credit/Debit Card
- Digital Wallet (Midtrans)
Enable/Disable Methods
Toggle payment methods based on your needs:
- Enable Cash for traditional payments
- Enable Midtrans for digital payments (requires configuration)
- Disable unused methods
Test Midtrans Integration
If using digital payments:
- Ensure
MIDTRANS_SERVER_KEYis set in.env - Keep
MIDTRANS_IS_PROD=falsefor testing - Create a test transaction
- Use Midtrans test cards to verify
5. Create Additional Users
Fill User Information
- Username: Unique username
- Email: User email address
- Password: Initial password (user should change on first login)
- Role: Select appropriate role (Admin/Manager/Cashier)
- Active: Enable user account
First Transaction
Test your setup by processing a test transaction:Start a Shift
Before processing transactions:
- Go to Shift → Start Shift
- Enter starting cash amount
- Confirm to begin accepting transactions
Shifts track cashier activities and cash flow during work periods.
Add Products to Cart
- Browse or search for products
- Click products to add to cart
- Adjust quantities if needed
- Select product options if available
Apply Discounts (Optional)
- Add manual discount (percentage or fixed amount)
- Or apply promotion codes if configured
Process Payment
- Click Checkout
- Select payment method:
- Cash: Enter amount received, system calculates change
- Digital: Generates Midtrans payment link
- Complete payment
- Print or email receipt
Exploring the Dashboard
Dashboard Overview
View key metrics:
- Today’s sales
- Transaction count
- Popular products
- Cashier performance
Reports & Analytics
Access detailed reports:
- Sales reports (daily/weekly/monthly)
- Product performance
- Profit analysis
- Payment method breakdown
- Cashier performance
Transaction History
View and manage orders:
- Filter by date, status, cashier
- View order details
- Print receipts
- Process refunds/cancellations
Activity Logs
Audit trail of system activities:
- User actions
- Product changes
- Order modifications
- System events
API Exploration
Explore the backend API using Swagger documentation:Authenticate
- Click Authorize button
- Use the
/auth/loginendpoint to get JWT token - Copy the token from response
- Paste token in authorization field:
Bearer <your-token>
The API follows RESTful conventions and returns responses in JSON format.
Multi-language Support
POS Kasir frontend supports multiple languages:- English (en)
- Indonesian (id)
Best Practices
Security
Security
- Change all default passwords immediately
- Use strong passwords (min 8 characters, mix of letters, numbers, symbols)
- Regularly review user access and roles
- Monitor activity logs for suspicious activities
- Keep JWT tokens secure (never share)
- Set appropriate session timeout (
JWT_DURATION_HOURS)
Operations
Operations
- Always start and end shifts properly
- Count cash at shift end to detect discrepancies
- Regularly backup your database
- Monitor stock levels and set reorder points
- Review daily reports for anomalies
- Train staff on proper POS usage
Data Management
Data Management
- Keep product information up to date
- Regular stock audits and adjustments
- Archive old transactions periodically
- Clean up unused products and categories
- Maintain accurate cost prices for profit tracking
Performance
Performance
- Monitor system resources (CPU, memory, disk)
- Regular database maintenance and optimization
- Optimize product images (compress before upload)
- Review slow queries in logs
- Scale resources as transaction volume grows
Common Tasks
Managing Stock
- Adjust Stock: Go to product details → Stock History → Adjust
- View History: See all stock movements with timestamps and reasons
- Low Stock Alerts: Products below minimum threshold are highlighted
Processing Refunds
- Find transaction in Transaction History
- Click View Details
- Select Refund or Cancel
- Choose cancellation reason
- Confirm refund (stock is automatically adjusted)
Creating Promotions
- Navigate to Promotions → Create Promotion
- Set promotion details:
- Name and description
- Discount type (percentage/fixed)
- Start and end dates
- Target: All products, category, or specific products
- Define rules (minimum purchase, quantity requirements)
- Activate promotion
Viewing Reports
- Sales Report: Revenue over time periods
- Product Performance: Best/worst sellers, quantity sold
- Profit Analysis: Profit margins per product/category
- Cashier Performance: Transactions and sales per cashier
- Payment Methods: Breakdown of payment types used
Troubleshooting
Can't Login
Can't Login
- Verify credentials (case-sensitive)
- Check if user account is active
- Ensure backend is running:
docker-compose ps - Check browser console for API errors
- Verify
VITE_API_BASEinweb/.envis correct
Payment Failed
Payment Failed
- For Midtrans: Check
MIDTRANS_SERVER_KEYis set - Verify Midtrans sandbox mode for testing
- Check browser console and backend logs
- Ensure internet connectivity for external payment gateway
Image Upload Failed
Image Upload Failed
- Verify R2 credentials in
.env - Check R2 bucket exists and is accessible
- Verify file size (may have limits)
- Check backend logs for S3 errors
Stock Not Updating
Stock Not Updating
- Check if product has stock tracking enabled
- Verify transaction was completed (not pending)
- Review activity logs for stock adjustments
- Check for database connection issues
Next Steps
API Reference
Explore detailed API documentation
Core Features
Learn about advanced features and capabilities
Deployment
Deploy POS Kasir to production
Development
System architecture and development guide
Getting Help
If you need assistance:- Check the API Documentation
- Review Activity Logs for error details
- Check backend logs:
docker-compose logs backend - Check frontend logs in browser console (F12)
For the live demo, visit: