PaynEat POS설치 안내

PaynEat POS로 매장을 여는 네 가지 방법

맞는 방법을 골라 한 단계씩 따라 하세요. 가입도 비용도 없고, 매장 데이터는 사장님 기기에 그대로 있습니다.

  • 무료 · Apache 2.0
  • 가입 불필요
  • 가지고 계신 기기 그대로
먼저

무엇을 하고 싶으세요?

아직 모르겠다면 첫 번째부터 — 충분히 눌러 보신 뒤에 실제로 설치하셔도 됩니다.

  • 브라우저에서 체험

    소요 시간
    바로
    필요한 것
    브라우저만 있으면 됩니다
    이런 분께
    결정 전에 화면을 보고 직접 눌러 보고 싶은 분
    데모 열기
  • 추천

    Windows 한 줄 설치

    소요 시간
    3~5분
    필요한 것
    Windows + Docker Desktop
    이런 분께
    내 PC에서 실제 시스템을 써 보고 싶은 사장님
    설치 방법 보기
  • Docker로 모든 기기 연결

    소요 시간
    처음 10~15분
    필요한 것
    Docker Desktop (Windows / Mac / Linux)
    이런 분께
    휴대폰·태블릿·주방 화면이 한 서버를 함께 쓰는 매장
    설치 방법 보기
  • 소스에서 실행

    소요 시간
    약 5분
    필요한 것
    Node.js 22 + Flutter 3.35
    이런 분께
    고치거나 확장하고 싶은 개발자
    실행 방법 보기
방법 2 · 사장님께 추천

Windows에 한 줄로 설치

서버, 창 사이 실시간 반영, 가상 저울, PDF 영수증까지 갖춘 실제 시스템을 코드 다운로드나 빌드 없이 — 설치 프로그램이 미리 빌드된 이미지를 받아 옵니다.

소요 시간
3~5분 (처음에 약 200MB 다운로드)
필요한 것
64비트 Windows + Docker Desktop
결과
이 PC의 http://localhost:8080 에서 PaynEat 실행
  1. Docker Desktop 설치 후 실행

    없으시면 docker.com에서 받아 설치하고 실행하세요. 왼쪽 아래에 Engine running이 뜰 때까지 기다립니다.

  2. PowerShell 열기

    Windows 키를 누르고 PowerShell을 입력한 뒤 Enter를 누르세요.

  3. 이 한 줄을 붙여 넣고 Enter

    상자 모서리의 복사를 누르고, PowerShell 창에서 마우스 오른쪽 버튼으로 붙여 넣으세요.

    PowerShell
    [Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object Net.WebClient).DownloadString('https://github.com/SuruchBoss/PaynEat/releases/download/demo/install-demo.ps1'))
  4. 잠시 기다린 뒤 로그인

    브라우저가 http://localhost:8080 을 알아서 엽니다. admin / admin123으로 로그인하거나 로그인 화면의 데모 계정 버튼을 누르세요.

PowerShell에 초록색으로 PaynEat is ready: http://localhost:8080이 나오고 브라우저에 로그인 화면이 뜨면 성공입니다.

매일 쓰실 때

시작 / 중지 / 초기화
사용자 폴더의 PaynEat-Demo에 더블클릭 파일 Start, Stop, Reset PaynEat data가 있습니다 (Reset은 체험한 계산서를 모두 지우고 예시 데이터로 되돌립니다).
PC를 다시 켰을 때
Docker Desktop을 열면 PaynEat이 저절로 올라옵니다.
최신 버전으로 업데이트
같은 한 줄을 다시 붙여 넣으세요. 데이터는 그대로 남습니다.

⚠️ 체험용 설정입니다 (데모 계정, 가상 저울, 실제로 보내지지 않는 이메일). 또한 이 PC에서만 열립니다 — 매장의 휴대폰과 태블릿까지 연결하시려면 방법 3을 쓰세요. 붙여 넣기 전에 스크립트 내용을 보시려면: install-demo.ps1

방법 3 · 매장의 모든 기기

Docker로 실행해 모든 기기 연결하기

서버는 매장 컴퓨터 한 대에 두고, 직원 휴대폰·캐셔 태블릿·주방 화면은 브라우저로 엽니다. 한 기기에서 넣은 주문이 다른 기기의 주방 화면에 바로 뜹니다.

소요 시간
처음 10~15분 (그다음부터는 1분 이내)
필요한 것
Windows, Mac 또는 Linux의 Docker Desktop
결과
같은 와이파이의 모든 기기에서 http://<이 컴퓨터 IP>:8080
  1. 코드 내려받기

    가장 쉬운 방법: ZIP 파일 내려받기 후 압축을 풀면 PaynEat-main 폴더가 생깁니다. git이 있으시면 이렇게 하셔도 됩니다:

    Terminal
    git clone https://github.com/SuruchBoss/PaynEat.git
  2. 이 컴퓨터의 IP 찾기

    Windows: PowerShell에서 ipconfig를 입력하고 IPv4 Address를 보세요. Mac/Linux: ifconfig | grep inet. 192.168.1.15 같은 모양입니다.

  3. 앱에 서버 위치 알려 주기

    코드 폴더(docker-compose.yml 옆)에 .env 파일을 만들고 이 줄을 넣으세요. 숫자는 사장님 IP로 바꿉니다. 이 컴퓨터에서만 쓰실 거라면 건너뛰셔도 됩니다.

    .env
    API_BASE_URL=http://192.168.1.15:3000
  4. 시작하기

    코드 폴더에서 터미널(Windows는 PowerShell)을 열고 실행하세요. 처음에는 앱을 빌드하느라 5~10분 걸립니다.

    Terminal
    docker compose up --build
  5. 모든 기기에서 열기

    같은 와이파이에서 휴대폰·태블릿·주방 화면으로 http://192.168.1.15:8080 (사장님 IP)을 여세요. 서버 컴퓨터에서는 http://localhost:8080 도 됩니다.

터미널에 payneat-api와 payneat-web이 보이고 http://localhost:3000/health 가 응답하면 성공입니다.

매일 쓰실 때

중지
터미널에서 Ctrl+C를 누른 뒤 docker compose down을 실행하세요.
데이터를 처음부터
docker compose down -v (계산서와 모든 데이터가 지워집니다)
가상 저울과 테스트 이메일 켜기
같은 .env 파일에 SCALE_DRIVER=simulator와 MAIL_TRANSPORT=json을 추가하고 docker compose up --build를 다시 실행하세요. 실제 매장에서는 simulator를 쓰지 마세요.

💡 다른 기기에서 안 열리면: 같은 와이파이인지, 서버 컴퓨터 방화벽이 8080과 3000 포트를 허용하는지 확인하세요. 직원이 실제로 쓰기 전에 운영 전 체크리스트를 모두 마쳐 주세요.

방법 4 · 개발자용

소스에서 직접 실행

코드를 고치거나, 요청마다 로그를 보거나, Flutter로 실제 휴대폰에서 돌려 볼 때.

소요 시간
약 5분
필요한 것
Node.js 20 이상(22 권장) + Flutter 3.35 이상
결과
http://localhost:3000 의 API와 Chrome의 앱
  1. 코드 받기

    Terminal
    git clone https://github.com/SuruchBoss/PaynEat.git
    cd PaynEat
  2. 창 1 — 서버

    .env에는 로컬용 JWT_SECRET이 들어 있고, 없으면 서버가 시작되지 않습니다 (Windows는 cp 대신 copy). 데이터베이스와 예시 데이터는 자동으로 만들어집니다.

    Terminal 1
    cd backend
    npm install
    cp .env.example .env
    npm run dev
  3. 창 2 — 앱

    새 창을 여세요. 첫 번째 창은 닫지 마세요.

    Terminal 2
    cd app
    flutter pub get
    flutter run -d chrome

창 1에 PaynEat POS API listening on http://localhost:3000 줄이 나오고 Chrome에 로그인 화면이 뜨면 성공입니다.

자주 쓰는 방법

서버 없이 앱만
flutter run -d chrome --dart-define=DEMO_MODE=true (브라우저 안의 예시 데이터, 새로고침하면 초기화)
같은 와이파이의 실제 휴대폰
flutter run --dart-define=API_BASE_URL=http://<컴퓨터 IP>:3000
Android 에뮬레이터
10.0.2.2:3000을 자동으로 사용합니다. 설정할 것이 없습니다.
테스트 실행
cd backend && npm test · cd app && flutter test

구조, API, 모든 테스트는 README (영문)에 있습니다.

데모 계정

어떤 역할로든 로그인

로그인 화면에 모든 데모 계정 버튼이 있어 한 번 누르면 바로 들어갑니다. 입력하실 필요가 없습니다.

역할아이디비밀번호볼 수 있는 것
관리자adminadmin123전부 — 대시보드, 메뉴, 직원, 리포트, 설정
매니저managermanager123관리자와 같지만 계정 삭제는 불가
홀 직원waiter1waiter123테이블 배치도, 주문, 주방 화면
주방kitchenkitchen123주방 화면만
캐셔cashiercashier123테이블 배치도, 주문, 리포트
홀 직원 (2개 지점)waiter2waiter123waiter1과 같지만 지점 선택 가능 — 직접 입력, 실제 서버에서만 (방법 2~4)
여러 기기로 함께 써 보기

브라우저 데모는 기기마다 데이터를 따로 저장합니다 — 휴대폰에서 주문해도 다른 태블릿의 주방 화면에는 나타나지 않습니다. 기기 사이로 주문이 오가는 걸 보시려면 방법 3을 쓰시거나, 방법 2의 PC 한 대에서 창을 여러 개 여세요. 오른쪽 위 지구본 버튼으로 로그인 전에도 ไทย / English / 한국어를 바꿀 수 있습니다.

운영 전 확인

직원이 실제로 쓰기 전 체크리스트

위의 데모 계정과 비밀번호는 인터넷에 공개되어 있어서 시스템이 막아 두었습니다: 운영 모드에서 데모 비밀번호가 남아 있으면 서버가 아예 켜지지 않습니다.

항목별 자세한 내용과 취약점 신고 방법: SECURITY.md

  • JWT_SECRET을 매장 고유의 무작위 값으로 — 예: openssl rand -hex 32. 예시 값은 절대 쓰지 마세요.
  • 시작 계정 6개의 비밀번호를 모두 직접 정하거나(SEED_ADMIN_PASSWORD … SEED_CASHIER_PASSWORD), AUTO_SEED를 끄고 실제 직원 계정을 직접 만드세요.
  • CORS_ORIGIN을 * 대신 매장의 실제 주소로.
  • 데이터베이스 파일과 .env는 매장 기기에만 — 업로드하거나 공유하지 말고, 정기적으로 백업하세요.
  • Windows 한 줄 설치는 실제 매장에 쓰지 마세요. 체험용 설정입니다.
문제 해결

막히셨나요? 증상을 눌러 보세요

"port is already allocated"가 나와요

다른 프로그램이 3000 또는 8080 포트를 쓰고 있습니다. 그 프로그램(또는 켜 둔 PaynEat)을 닫고 다시 해 보세요.

"Docker Desktop is not running" 또는 "is not installed"가 나와요

필요하면 docker.com에서 Docker Desktop을 설치하고 실행한 뒤, 왼쪽 아래에 Engine running이 뜨면 한 줄을 다시 붙여 넣으세요.

"PaynEat started but is not answering yet"가 나와요

켜졌지만 응답이 늦는 중입니다. 잠시 뒤 http://localhost:8080 을 열어 보시고, 그래도 안 되면 Docker Desktop → Containers → payneat에서 원인을 확인하세요.

Docker가 Flutter 단계에서 오래 멈춰 있어요

처음에는 Flutter SDK 약 2GB를 받습니다. 5~10분 기다려 주세요. 다음부터는 캐시를 씁니다.

화면은 열리는데 로그인이 안 돼요

http://localhost:3000/health 를 열어 보세요. 응답이 없으면 서버가 아직 안 켜진 것입니다. API_BASE_URL을 설정하셨다면 IP를 확인하고, 바꾼 뒤 docker compose up --build를 다시 실행하세요.

휴대폰이나 태블릿이 연결되지 않아요

서버와 같은 와이파이여야 하고, localhost 대신 IP를 쓰고, 방화벽이 8080과 3000 포트를 허용해야 합니다.

JWT_SECRET을 설정하라고 나와요

.env가 아직 없습니다. backend에서 cp .env.example .env (Windows: copy) 후 npm run dev를 다시 실행하세요.

npm install이 better-sqlite3에서 실패해요

빌드 도구가 없습니다. macOS: xcode-select --install · Linux: sudo apt install build-essential python3 · Windows: Visual Studio Build Tools 설치.

데이터를 처음부터 다시 하고 싶어요

방법 2: Reset PaynEat data 더블클릭 · 방법 3: docker compose down -v · 방법 4: cd backend && npm run db:reset

그래도 안 되나요?GitHub Issues 또는 LinkedIn으로 물어봐 주세요 — 쓰신 방법, 운영체제, 화면에 나온 메시지를 함께 알려 주세요.