Kasirku
๐ฝ๏ธ Modern open-source POS system for restaurants & cafes. Features digital menu, Midtrans payments, thermal printer integration & real-time order tracking. Built with Laravel & React.
Install / Use
/learn @rezadrian01/KasirkuREADME
๐ฝ๏ธ Kasirku - Point of Sale (POS) System
Kasirku is a modern Point of Sale (POS) system specifically designed for restaurants and cafes. Built with cutting-edge web technologies to provide a seamless experience for both customers and administrators.
โจ Key Features
๐๏ธ Customer Interface
- Digital Menu: Interactive product catalog with photos and descriptions
- Smart Cart: Shopping cart with persistent storage
- Advanced Search & Filter: Product search by name and category
- Infinite Scroll: Automatic product loading on scroll
- Mobile Responsive: Optimized for all devices
๐ณ Payment System
- Midtrans Integration: Trusted payment gateway for Indonesia
- Multiple Payment Methods: Support for various digital payment methods
- Tax Calculation: Automatic 10% tax calculation with clear breakdown
- Real-time Status: Real-time payment status updates
- Payment Webhook: Automatic notifications from payment gateway
๐ฑ Order Management
- Real-time Order Tracking: Customers can track order status
- Order Status Updates: Pending โ Completed โ Ready for pickup
- Digital Receipt: Digital receipt that customers can save
- Table Management: Table number system for dine-in orders
๐ง Admin Dashboard
- Product Management: CRUD operations for products with multi-photo upload
- Category Management: Product organization by categories
- Order Management: Monitor and update order status
- Payment Tracking: Monitor payments and reconciliation
- Receipt Printing: Print thermal receipts for customers
๐จ๏ธ Printing System
- Thermal Printer Support: Integration with ESC/POS thermal printers
- Custom Receipt Format: Customizable receipt layout
- Auto Print: Automatic printing after order completion
๐ธ Screenshots
Customer Interface
<div align="center"> <img src="public/images/docs/main-page.png" alt="Main Page - Digital Menu" width="80%"> <img src="public/images/docs/checkout-page.png" alt="Checkout Page" width="80%"> <img src="public/images/docs/waiting-page.png" alt="Order Status Tracking" width="80%"> </div>Digital menu with product catalog, checkout page with tax calculation, and real-time order status tracking
Admin Dashboard
<div align="center"> <img src="public/images/docs/products-management-page.png" alt="Admin Products Management" width="80%"> </div>Admin products management dashboard for managing inventory and orders
๐๏ธ Tech Stack
Backend
- Laravel 12.x - PHP Framework
- Inertia.js - Modern monolith approach
- SQLite Database - Lightweight database solution
- Midtrans SDK - Payment gateway integration
- ESC/POS PHP - Thermal printer integration
Frontend
- React 18 - User interface library
- TypeScript - Type-safe JavaScript
- Tailwind CSS - Utility-first CSS framework
- shadcn/ui - Modern UI components
- Vite - Fast build tool and dev server
Development Tools
- Composer - PHP dependency management
- NPM - Node.js package management
- Laravel Pint - PHP code styling
- ESLint & Prettier - JavaScript/TypeScript linting and formatting
- Pest - PHP testing framework
๐ Installation
Prerequisites
- PHP 8.2 or higher
- Composer
- Node.js 18+ and NPM
- SQLite (or other Laravel-supported database)
Step 1: Clone Repository
git clone https://github.com/rezadrian01/Kasirku.git
cd Kasirku
Step 2: Install Dependencies
# Install PHP dependencies
composer install
# Install Node.js dependencies
npm install
Step 3: Environment Setup
# Copy environment file
cp .env.example .env
# Generate application key
php artisan key:generate
Step 4: Database Setup
# Run migrations
php artisan migrate
# Seed database (optional)
php artisan db:seed
Step 5: Configure Midtrans
Edit the .env file and add Midtrans configuration:
MIDTRANS_SERVER_KEY=your-server-key
MIDTRANS_CLIENT_KEY=your-client-key
MIDTRANS_IS_PRODUCTION=false
MIDTRANS_IS_SANITIZED=true
MIDTRANS_IS_3DS=true
Step 6: Build Assets
# Development
npm run dev
# Production
npm run build
Step 7: Start Development Server
# Laravel development server
php artisan serve
# Vite development server (in separate terminal)
npm run dev
The application will be available at http://localhost:8000
๐ Usage Guide
Customer Flow
- Browse Menu: Customers access the homepage to view the menu
- Add to Cart: Select products and add them to the cart
- Checkout: Enter customer name and table number
- Payment: Pay using Midtrans payment gateway
- Order Tracking: Track order status through the provided link
Admin Flow
- Login: Admin logs in to the dashboard (
/admin/dashboard) - Manage Products: Add, edit, or delete products
- Manage Categories: Manage product categories
- Monitor Orders: View and update order status
- Print Receipt: Print receipts for customers
๐ง Configuration
Midtrans Setup
- Register an account at Midtrans
- Get your Server Key and Client Key
- Configure webhook URL for production:
yourdomain.com/checkout/notification
Printer Setup (Optional)
- Connect thermal printer via USB
- Ensure printer is detected at
/dev/usb/lp0 - Adjust printer path in
PrintController.phpif needed
Environment Variables
# Application
APP_NAME=Kasirku
APP_URL=http://localhost:8000
# Database
DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/database.sqlite
# Midtrans Configuration
MIDTRANS_SERVER_KEY=your-server-key
MIDTRANS_CLIENT_KEY=your-client-key
MIDTRANS_IS_PRODUCTION=false
๐งช Testing
# Run PHP tests
php artisan test
# Run with coverage
php artisan test --coverage
# Run JavaScript tests
npm run test
# Type checking
npm run types
๐ Project Structure
kasirku/
โโโ app/
โ โโโ Http/Controllers/ # Laravel controllers
โ โโโ Models/ # Eloquent models
โ โโโ Providers/ # Service providers
โโโ database/
โ โโโ migrations/ # Database migrations
โ โโโ seeders/ # Database seeders
โ โโโ factories/ # Model factories
โโโ resources/
โ โโโ js/ # React/TypeScript frontend
โ โ โโโ components/ # Reusable UI components
โ โ โโโ pages/ # Page components
โ โ โโโ types/ # TypeScript type definitions
โ โโโ css/ # Stylesheets
โโโ routes/
โ โโโ web.php # Web routes
โ โโโ auth.php # Authentication routes
โโโ public/ # Public assets
๐ค Contributing
We warmly welcome contributions! Please follow these steps:
- Fork this repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Create a Pull Request
Development Guidelines
- Follow PSR-12 for PHP code
- Use TypeScript for all frontend code
- Ensure all tests pass before submitting PR
- Write descriptive commit messages
๐ Bug Reports & Feature Requests
If you find a bug or want to request a new feature:
- Check first in Issues
- If it doesn't exist, create a new issue with the appropriate template
- Provide detailed information and reproduction steps for bugs
๐ License
This project uses the MIT License. You are free to use, modify, and distribute this project according to the license terms.
๐ Acknowledgments
- Laravel - Amazing PHP framework
- React - The best UI library
- Tailwind CSS - Utility-first CSS framework
- shadcn/ui - Beautiful UI components
- Midtrans - Indonesian payment gateway
- Inertia.js - Modern monolith approach
๐จโ๐ป Author
Reza Adrian
- GitHub: @rezadrian01
๐ Support
If you need help or have questions:
- Create an issue in the GitHub repository
- Email: support@kasirku.com (if available)
โญ Don't forget to star this repository if it's helpful!
Made with โค๏ธ for Indonesian F&B industry
Related Skills
bluebubbles
350.8kUse when you need to send or manage iMessages via BlueBubbles (recommended iMessage integration). Calls go through the generic message tool with channel="bluebubbles".
node-connect
350.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
slack
350.8kUse when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
frontend-design
110.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
