Skip to main content
Get your POS Kasir system running quickly with Docker. This guide will have you up and running in under 5 minutes.

Prerequisites

Before you begin, ensure you have the following installed:
  • Go 1.22 or higher
  • Bun 1.0 or higher (for frontend)
  • Docker and Docker Compose
  • Git for cloning the repository

Quick Setup

1

Clone the Repository

Clone the POS Kasir repository to your local machine:
git clone https://github.com/agpprastyo/POS-kasir.git
cd POS-kasir
2

Configure Environment Variables

Copy the environment files for both backend and frontend:
cp .env.example .env
cp web/.env.example web/.env
The default configuration works for local development. You can customize settings later.
3

Start Docker Containers

Launch the application using Docker Compose:
docker-compose up -d
This will start both the backend API and frontend web application.
4

Run Database Migrations

Apply the database schema migrations:
make migrate-up
5

Seed Sample Data (Optional)

Populate the database with sample data including users, categories, and payment methods:
make seed
This creates default users:
6

Access the Application

Open your browser and navigate to:Login with one of the seeded credentials to start using POS Kasir.

What’s Next?

Now that you have POS Kasir running, explore these guides:

Detailed Installation

Learn about manual installation and advanced setup options

Configuration

Configure database, JWT, payment gateway, and cloud storage

First Steps

Learn about user roles, initial setup, and basic operations

API Reference

Explore the complete API documentation

Troubleshooting

If port 3000 or 8080 is already in use, you can change the ports in your .env file:
APP_PORT=8081  # Change backend port
For frontend, modify the Docker configuration or run it outside Docker.
Ensure Docker containers are running:
docker-compose ps
Check your database configuration in .env matches your Docker setup.
If migrations fail, check the migration version:
make migrate-version
You may need to force a specific version if there are dirty migrations:
make migrate-force version=<version_number>

Build docs developers (and LLMs) love