PaynEat POS설치 안내
PaynEat POS로 매장을 여는 네 가지 방법
맞는 방법을 골라 한 단계씩 따라 하세요. 가입도 비용도 없고, 매장 데이터는 사장님 기기에 그대로 있습니다.
- 무료 · Apache 2.0
- 가입 불필요
- 가지고 계신 기기 그대로
Windows에 한 줄로 설치
서버, 창 사이 실시간 반영, 가상 저울, PDF 영수증까지 갖춘 실제 시스템을 코드 다운로드나 빌드 없이 — 설치 프로그램이 미리 빌드된 이미지를 받아 옵니다.
- 소요 시간
- 3~5분 (처음에 약 200MB 다운로드)
- 필요한 것
- 64비트 Windows + Docker Desktop
- 결과
- 이 PC의 http://localhost:8080 에서 PaynEat 실행
Docker Desktop 설치 후 실행
없으시면 docker.com에서 받아 설치하고 실행하세요. 왼쪽 아래에 Engine running이 뜰 때까지 기다립니다.
PowerShell 열기
Windows 키를 누르고 PowerShell을 입력한 뒤 Enter를 누르세요.
이 한 줄을 붙여 넣고 Enter
상자 모서리의 복사를 누르고, PowerShell 창에서 마우스 오른쪽 버튼으로 붙여 넣으세요.
PowerShell[Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object Net.WebClient).DownloadString('https://github.com/SuruchBoss/PaynEat/releases/download/demo/install-demo.ps1'))잠시 기다린 뒤 로그인
브라우저가 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
Docker로 실행해 모든 기기 연결하기
서버는 매장 컴퓨터 한 대에 두고, 직원 휴대폰·캐셔 태블릿·주방 화면은 브라우저로 엽니다. 한 기기에서 넣은 주문이 다른 기기의 주방 화면에 바로 뜹니다.
- 소요 시간
- 처음 10~15분 (그다음부터는 1분 이내)
- 필요한 것
- Windows, Mac 또는 Linux의 Docker Desktop
- 결과
- 같은 와이파이의 모든 기기에서 http://<이 컴퓨터 IP>:8080
코드 내려받기
가장 쉬운 방법: ZIP 파일 내려받기 후 압축을 풀면
PaynEat-main폴더가 생깁니다. git이 있으시면 이렇게 하셔도 됩니다:Terminalgit clone https://github.com/SuruchBoss/PaynEat.git이 컴퓨터의 IP 찾기
Windows: PowerShell에서
ipconfig를 입력하고 IPv4 Address를 보세요. Mac/Linux:ifconfig | grep inet.192.168.1.15같은 모양입니다.앱에 서버 위치 알려 주기
코드 폴더(
docker-compose.yml옆)에.env파일을 만들고 이 줄을 넣으세요. 숫자는 사장님 IP로 바꿉니다. 이 컴퓨터에서만 쓰실 거라면 건너뛰셔도 됩니다..envAPI_BASE_URL=http://192.168.1.15:3000시작하기
코드 폴더에서 터미널(Windows는 PowerShell)을 열고 실행하세요. 처음에는 앱을 빌드하느라 5~10분 걸립니다.
Terminaldocker compose up --build모든 기기에서 열기
같은 와이파이에서 휴대폰·태블릿·주방 화면으로 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 포트를 허용하는지 확인하세요. 직원이 실제로 쓰기 전에 운영 전 체크리스트를 모두 마쳐 주세요.
소스에서 직접 실행
코드를 고치거나, 요청마다 로그를 보거나, Flutter로 실제 휴대폰에서 돌려 볼 때.
- 소요 시간
- 약 5분
- 필요한 것
- Node.js 20 이상(22 권장) + Flutter 3.35 이상
- 결과
- http://localhost:3000 의 API와 Chrome의 앱
코드 받기
Terminalgit clone https://github.com/SuruchBoss/PaynEat.git cd PaynEat창 1 — 서버
.env에는 로컬용JWT_SECRET이 들어 있고, 없으면 서버가 시작되지 않습니다 (Windows는cp대신copy). 데이터베이스와 예시 데이터는 자동으로 만들어집니다.Terminal 1cd backend npm install cp .env.example .env npm run dev창 2 — 앱
새 창을 여세요. 첫 번째 창은 닫지 마세요.
Terminal 2cd 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 (영문)에 있습니다.
어떤 역할로든 로그인
로그인 화면에 모든 데모 계정 버튼이 있어 한 번 누르면 바로 들어갑니다. 입력하실 필요가 없습니다.
| 역할 | 아이디 | 비밀번호 | 볼 수 있는 것 |
|---|---|---|---|
| 관리자 | admin | admin123 | 전부 — 대시보드, 메뉴, 직원, 리포트, 설정 |
| 매니저 | manager | manager123 | 관리자와 같지만 계정 삭제는 불가 |
| 홀 직원 | waiter1 | waiter123 | 테이블 배치도, 주문, 주방 화면 |
| 주방 | kitchen | kitchen123 | 주방 화면만 |
| 캐셔 | cashier | cashier123 | 테이블 배치도, 주문, 리포트 |
| 홀 직원 (2개 지점) | waiter2 | waiter123 | waiter1과 같지만 지점 선택 가능 — 직접 입력, 실제 서버에서만 (방법 2~4) |
직원이 실제로 쓰기 전 체크리스트
위의 데모 계정과 비밀번호는 인터넷에 공개되어 있어서 시스템이 막아 두었습니다: 운영 모드에서 데모 비밀번호가 남아 있으면 서버가 아예 켜지지 않습니다.
항목별 자세한 내용과 취약점 신고 방법: 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으로 물어봐 주세요 — 쓰신 방법, 운영체제, 화면에 나온 메시지를 함께 알려 주세요.