Demo

တင်သွင်းခြင်း

./install.sh ဖြင့် host ကို ပြင်ဆင်ပြီး၊ Docker Compose ဖြင့် Quan ERP base ကို လည်ပတ်ကာ၊ plugin များကို build → available → installed လမ်းကြောင်းဖြင့် တင်သွင်းပြီး၊ staging / production အတွက် ခိုင်မာအောင် ပြုလုပ်နည်း ဖြစ်ပါသည်။

အနှစ်ချုပ်

Quark ERP / Quan ERP သည် base stack (Postgres၊ Redis၊ backend၊ frontend) နှင့် ဗားရှင်းပါ plugin များဖြင့် deploy လုပ်ပါသည်။ Server အသစ်တွင် install script ဖြင့် Docker နှင့် Nginx ကို ပြင်ဆင်ပြီး compose ကို စတင်ပါ။ Plugin များကို plugins/ အောက်တွင် တည်ဆောက်ကာ available-plugins/ သို့ build လုပ်ပြီး၊ ERP UI မှ installed-plugins/ သို့ အသက်ဝင်စေပါသည်။ Base image များနှင့် @quan-erp/* package များသည် တူညီသော ဗားရှင်းလိုင်းတွင် ရှိရပါမည်။

  • installation/ — ./install.sh (သို့မဟုတ် installation.sh) ဖြင့် host bootstrap နှင့် compose start/stop
  • docker-compose.yaml — Postgres၊ Redis၊ backend၊ frontend
  • plugins/ — source; quan-erp CLI က available-plugins/ သို့ တည်ဆောက်ပါသည်
  • ERP UI install — installed-plugins/ သို့ ကူးယူ / အသက်ဝင်စေပါသည်
  • UAT သို့မဟုတ် production တွင် module ဇယားကို SQL seed မလုပ်ရပါ

1. Host bootstrap (./install.sh)

Server deploy များတွင် production docker-compose.yaml ဘေးရှိ installation/ အောက်တွင် helper script ပါရှိပါသည်။ သာမန် user အဖြစ် run ရပါမည် — sudo / root အဖြစ် မဟုတ်ပါ။ Script သည် Docker Engine၊ Compose plugin နှင့် Nginx ကို သွင်းပြီး၊ stack ကို စတင် သို့မဟုတ် ရပ်တန့်နိုင်ပါသည်။

  • Command များ — install | start | stop (./install.sh --help ကို ကြည့်ပါ)
  • root အဖြစ် မ run ရပါ — လိုအပ်သည့်နေရာတွင်သာ sudo အသုံးပြုပါသည်
  • install — Ubuntu/Debian သို့မဟုတ် RHEL-family ကို ရှာဖွေပြီး Docker + Compose + Nginx သွင်းကာ service များကို ဖွင့်ပေးပါသည်
  • start — installation/ ဘေးရှိ stack အတွက် docker compose up -d
  • stop — တူညီသော compose ဖိုင်အတွက် docker compose stop
  • ပံ့ပိုးသော OS — Ubuntu၊ Debian၊ RHEL၊ CentOS၊ Fedora၊ Rocky၊ AlmaLinux
  • install ပြီးနောက် docker group အကျိုးသက်ရောက်ရန် shell အသစ် သို့မဟုတ် re-login လိုအပ်နိုင်ပါသည်
SHTerminal
1cd installation 2chmod +x ./install.sh # or ./installation.sh 3 4# One-time host setup (Docker + Compose + Nginx) 5./install.sh install 6 7# Start compose services 8./install.sh start 9 10# Stop compose services 11./install.sh stop

2. Base stack (Docker Compose)

ဒေသခံ template အလုပ်အတွက် base/ အောက်တွင် compose ကို တိုက်ရိုက် စတင်နိုင်ပါသည်။ ./install.sh ဖြင့် ပြင်ဆင်ထားသော server တွင် ./install.sh start ကို ဦးစားပေး အသုံးပြုပါ။ နမူနာ stack တွင် shared bridge network ပေါ်ရှိ ဝန်ဆောင်မှု လေးခု — db (Postgres)၊ redis၊ backend၊ frontend — ပါဝင်ပါသည်။ Backend သည် Postgres နှင့် Redis သို့ compose service အမည်ဖြင့် ချိတ်ဆက်ပါသည်။

  • Container အတွင်း host များသည် compose service အမည်များ (db၊ redis) ဖြစ်ပါသည် — ဝန်ဆောင်မှုအချင်းချင်းအတွက် localhost မသုံးရပါ
  • အသုံးများသော volume များ — ./data၊ ./available-plugins၊ ./backend/installed-plugins၊ ./backend/logs
  • BASE_VERSION / image tag များ (base-backend၊ base-frontend) ကို plugin @quan-erp/* ဗားရှင်းများနှင့် ကိုက်ညီအောင် ထားရှိရပါမည်
  • Template စကားဝှက်နှင့် token လျှို့ဝှက်ချက်များသည် local/dev သာ ဖြစ်ပါသည် — မျှဝေအသုံးပြုသော ပတ်ဝန်းကျင် မတိုင်မီ ပြောင်းလဲရပါမည်
SHLocal template
cd base docker compose up -d docker compose ps
SHServer (via install script)
cd installation ./install.sh start ./install.sh stop

2b. နမူနာ docker-compose.yaml

အောက်ပါ local/dev template ကို ကူးယူပြီး၊ change-me တန်ဖိုးအားလုံးကို ပြောင်းလဲကာ၊ VITE_BACKEND_API ကို browser ရောက်နိုင်သော URL ထားရှိပြီး၊ image tag / BASE_VERSION ကို သင့် release လိုင်းသို့ ညွှန်ပါ။ Backend သည် Postgres (db:5432) သို့ တိုက်ရိုက် ချိတ်ဆက်ပါသည်။

  • DATABASE_HOST / DB_HOST=db၊ DB_PORT=5432 — ဤ template တွင် pooler မပါဝင်ပါ
  • OPENAI_* / FIREBASE_CONFIG — လိုအပ်မှသာ ထည့်ပါ; private key များကို git မတင်ရပါ
YAMLdocker-compose.yaml
1services: 2 db: 3 image: postgres:17 4 container_name: postgres 5 restart: always 6 environment: 7 POSTGRES_USER: postgres 8 POSTGRES_PASSWORD: change-me 9 POSTGRES_DB: quan-erp 10 ports: 11 - "5432:5432" 12 volumes: 13 - ./data/db-data:/var/lib/postgresql/data 14 networks: 15 - app-network 16 17 redis: 18 image: redis:7 19 container_name: quanerp-redis 20 restart: unless-stopped 21 ports: 22 - "6379:6379" 23 command: > 24 redis-server 25 --requirepass "change-me" 26 --appendonly yes 27 volumes: 28 - ./data/redis:/data 29 networks: 30 - app-network 31 healthcheck: 32 test: ["CMD", "redis-cli", "ping", "-a", "change-me"] 33 interval: 5s 34 timeout: 2s 35 retries: 5 36 37 backend: 38 build: 39 context: ./backend 40 dockerfile: Dockerfile 41 image: theparadance/quan-erp-base-backend:1.0.0 42 restart: unless-stopped 43 platform: linux/amd64 44 container_name: backend 45 ports: 46 - "8080:8080" 47 - "8081:8081" 48 environment: 49 NODE_ENV: production 50 MODE: dev 51 BASE_VERSION: 1.0.0 52 ORGANIZATION_ID: quan-erp 53 54 FRONTEND_URL: http://localhost 55 BACKEND_URL: http://localhost:8080 56 DEV_TOOL_URL: http://localhost:8081 57 PLUGIN_SERVER_URL: http://localhost:8082 58 59 ACCESS_TOKEN_SECRET: change-me 60 ACCESS_TOKEN_SECRET_EXPIRATION_TIME: 15m 61 REFRESH_TOKEN_SECRET: change-me 62 REFRESH_TOKEN_SECRET_EXPIRATION_TIME: 30d 63 64 DATABASE_HOST: db 65 DB_HOST: db 66 DB_USERNAME: postgres 67 DB_PASSWORD: change-me 68 DB_PORT: 5432 69 DB_SCHEMA: quan-erp 70 DB_SYNC: true 71 72 REDIS_HOST: redis 73 REDIS_PORT: 6379 74 REDIS_PASSWORD: change-me 75 76 CLUSTER_MODE: false 77 CLUSTER_MAX_COUNT: 2 78 ENV_ENCRYPTION_KEY: change-me-32-char-hex-or-secret 79 FIREBASE_CONFIG: '' 80 81 OPENAI_BASE_URL: https://api.deepseek.com 82 OPENAI_API_KEY: <sk-key> 83 84 CORS_ALLOWED_ORIGINS: http://localhost:3000,http://127.0.0.1:3000,http://localhost,https://localhost 85 86 AVAILABLE_PLUGINS_FOLDER: /app/available-plugins 87 INSTALLED_PLUGINS_FOLDER: /app/installed-plugins 88 APP_DATA_FOLDER: /app/data/data/ 89 UPLOAD_FILE_TEMP_FOLDER: /app/data/temp 90 UPLOAD_FILE_FOLDER: /app/data/data/ 91 PLUGINS_ENV_FILE: /app/data/data/plugin.env.json 92 RUNNER_FLOW_FILE: /app/data/data/workflows/ 93 94 ROOT_ADMIN_USERNAME: admin 95 ROOT_ADMIN_PASSWORD: change-me 96 DEVELOPER_CONFIG_PASSWORD: change-me 97 98 MAX_USER_LIMIT: 5 99 MAX_ACTIVE_USER_LIMIT: 5 100 MAX_USER_SESSION_LIMIT_PER_USER: 1 101 MAX_ORGANIZATION_BRANCH: 1 102 MAX_ROLE_LIMIT: 5 103 MAX_SUBSCRIPTION_GRACE_PERIOD_DAYS: 14 104 SUBSCRIPTION_END_DATE: '2099-01-01' 105 volumes: 106 - ./backend/installed-plugins:/app/installed-plugins 107 - ./data:/app/data 108 - ./backend/logs:/app/logs 109 - ./available-plugins:/app/available-plugins 110 depends_on: 111 - db 112 - redis 113 networks: 114 - app-network 115 dns: 116 - 1.1.1.1 117 - 8.8.8.8 118 119 frontend: 120 build: 121 context: ./frontend 122 dockerfile: Dockerfile 123 image: theparadance/quan-erp-base-frontend:1.0.0 124 restart: unless-stopped 125 platform: linux/amd64 126 container_name: frontend 127 environment: 128 VITE_BACKEND_API: http://localhost:8080 129 VITE_MODE: dev 130 ports: 131 - "80:80" 132 volumes: 133 - ./data/frontend/web-env.json:/usr/share/nginx/html/web-env.json 134 networks: 135 - app-network 136 137networks: 138 app-network: 139 driver: bridge

3. ဝန်ဆောင်မှုများနှင့် port များ

db:5432 (DB_HOST)၊ redis:6379၊ backend:8080/8081၊ frontend:80 နှင့် host Nginx တို့ ပါဝင်ပါသည်။ Production တွင် db / redis ကို အများပြည်သူသို့ မဖွင့်ရပါ။

  • db (postgres:17) — 5432; DB_HOST=db၊ DB_PORT=5432; schema quan-erp; ./data/db-data
  • redis — 6379; REDIS_HOST=redis + REDIS_PASSWORD; ./data/redis
  • backend — :8080 / :8081; plugin နှင့် data + logs volume များ
  • frontend — :80; VITE_BACKEND_API သည် browser ရောက်နိုင်ရပါမည်
  • Host Nginx — ./install.sh install ဖြင့် TLS / reverse proxy

4. Plugin တင်သွင်းခြင်း

quan-erp build:prod|watch|pack:prod ဖြင့် stage လုပ်ပြီး၊ ERP UI မှ Install လုပ်ရပါသည်။

  • Build → available-plugins/<name>/<version>/
  • UI install ပြီးနောက် → installed-plugins/<name>/
  • Backend သည် installed=true ဖြစ်သော module များကို တင်သွင်းပါသည်
  • Frontend သည် module.js ကို load လုပ်ပြီး register(AppRegistry) ကို ခေါ်ပါသည်
  • local/dev တွင်သာ module row INSERT လုပ်ရပါမည် — UAT/prod မလုပ်ရပါ
TSBuild & stage
1# From repo root 2quan-erp build:prod sample-es 3# Continuous during development 4quan-erp watch sample-es 5 6# Distributable zip (frontend + backend + metadata) 7quan-erp pack:prod sample-es 8quan-erp pack:prod sample-es ./dist-archives

5. ဗားရှင်း ကိုက်ညီမှု

Base image tag များနှင့် plugin @quan-erp/* ဗားရှင်းများကို တူညီအောင် ထားရှိရပါမည်။

  • plugin package.json အတွင်း @quan-erp/* သည် base image နှင့် တူညီရပါမည်
  • compose image tag များနှင့် BASE_VERSION ကို sync ထားရှိရပါမည်
  • module.metadata.json ရှိ pluginVersion / requiredBasedVersion ကိုက်ညီရပါမည်
  • base အဆင့်မြှင့်ပြီးနောက် ကိုက်ညီသော @quan-erp/* ဖြင့် plugin ကို ပြန်လည် တည်ဆောက်ရပါမည်

6. ပတ်ဝန်းကျင် ပြောင်းလဲမှုများ

DB_* → db:5432၊ REDIS_*၊ token များ၊ CORS၊ URL များနှင့် plugin/data folder များကို volume ဖြင့် တည်မြဲအောင် ထားရှိပါ။ Production တွင် migration များကို အသုံးပြုရပါမည်။

  • DB_* / DATABASE_HOST — နမူနာ stack တွင် db:5432; DB_SCHEMA = POSTGRES_DB
  • REDIS_* — redis service requirepass နှင့် တူညီရပါမည်
  • ACCESS_TOKEN_* / REFRESH_TOKEN_* / ENV_ENCRYPTION_KEY — template တန်ဖိုး မသုံးရပါ
  • CORS_ALLOWED_ORIGINS — browser origin များကို ထည့်သွင်းပါ
  • FRONTEND_URL / BACKEND_URL / VITE_BACKEND_API — ရောက်နိုင်သော URL များ
  • plugin / data folder path များ — volume ဖြင့် persist လုပ်ပါ
  • BASE_VERSION + image tag များ — plugin ဗားရှင်းများနှင့် ကိုက်ညီရပါမည်
  • DB_SYNC — local/dev သာ; staging/prod တွင် migration များ
  • MODE — template သည် dev; production mode ကို အသုံးပြုပါ

7. Staging နှင့် production စစ်ဆေးစာရင်း

./install.sh install ကို ဦးစွာ လုပ်ဆောင်ပါ။ ပုံသေ လျှို့ဝှက်ချက်များကို ပြောင်းလဲပါ။ db / redis ကို အများပြည်သူသို့ မဖွင့်ရပါ။ Nginx TLS ကို အသုံးပြုပါ။ Firebase / npm လျှို့ဝှက်ချက်များကို git မတင်ရပါ။ module seed မလုပ်ရပါ။

  • ပထမ start မတိုင်မီ ./install.sh install လုပ်ရပါမည်
  • Postgres / Redis / ROOT_ADMIN_* / token လျှို့ဝှက်ချက်အားလုံးကို ပြောင်းလဲရပါမည်
  • Postgres / Redis port များကို အများပြည်သူသို့ မဖွင့်ရပါ; Nginx TLS ကို အသုံးပြုပါ
  • ./data၊ plugin နှင့် log များကို backup လုပ်ပါ
  • DB_SYNC=true၊ open CORS နှင့် နမူနာ လျှို့ဝှက်ချက်များကို ပိတ်ပါ
  • Plugin များကို UI install ဖြင့် တင်သွင်းပါ — production တွင် SQL seed မလုပ်ရပါ
  • Schema ပြောင်းလဲမှုကို migration များဖြင့် လုပ်ဆောင်ရပါမည်
  • FRONTEND_URL / BACKEND_URL / VITE_BACKEND_API သည် public hostname နှင့် တူညီရပါမည်
  • အဆင့်မြှင့်မီ base နှင့် @quan-erp/* ဗားရှင်းများကို စစ်ဆေးပါ
  • FIREBASE / npm လျှို့ဝှက်ချက်များကို git မတင်ရပါ

8. နေ့စဉ် လုပ်ငန်းဆောင်ရွက်မှုများ

./install.sh start|stop၊ base / plugin အဆင့်မြှင့်တင်ခြင်း၊ log၊ backup နှင့် rollback အစီအစဉ် ထားရှိရပါမည်။

  • Stack — cd installation && ./install.sh start|stop
  • Base update — image tag အသစ် → container များကို recreate
  • Plugin update — quan-erp build:prod|pack:prod → available-plugins → UI install
  • Health — docker compose ps; backend log များ
  • Data — Postgres volume နှင့် APP_DATA_FOLDER ကို backup လုပ်ပါ
  • Rollback — plugin ဗားရှင်း folder / image tag ဟောင်းများကို ထားရှိပါ
YAMLUseful compose commands
1cd installation # or cd base for the Node template 2docker compose logs -f backend 3docker compose restart backend frontend 4docker compose down 5./install.sh start

ပြဿနာဖြေရှင်းခြင်း

  • install မအောင်မြင် — OS / sudo / Docker repo ကို စစ်ဆေးပါ
  • docker permission — docker group အတွက် re-login လုပ်ပါ
  • start မအောင်မြင် — POSTGRES_* / REDIS_* / image tag များကို စစ်ဆေးပါ
  • DB မရောက်ရှိ — DB_HOST=db၊ DB_PORT=5432
  • VITE_BACKEND_API — browser ရောက်နိုင်သော host ကို အသုံးပြုပါ
  • Plugin မပေါ် — available-plugins / ဗားရှင်း / ဒေသခံ module row
  • UI ဗလာ — frontend ပြန်လည် တည်ဆောက် + ထပ်မံ Install
  • CORS / auth — FRONTEND_URL နှင့် origin များ
  • ဗားရှင်း အမှား — base နှင့် @quan-erp/* မတူညီခြင်း

Deployment အကူအညီ လိုအပ်ပါသလား

Quark ERP ကို တင်သွင်းရာတွင် အခက်အခဲရှိပါက The Paradance ထံမှ အကူအညီ ရယူနိုင်ပါသည်။ အခြေအနေအလိုက် အခမဲ့ သို့မဟုတ် အပိုကျသင့်ငွေ ဖြစ်နိုင်ပါသည် — လုပ်ငန်းအတိုင်းအတာ၊ အရေးပေါ်မှုနှင့် ပတ်ဝန်းကျင်ပေါ် မူတည်ပါသည်။

  • BASE_VERSION / image tag များ၊ OS၊ compose log နှင့် ပြန်လည် ထပ်မံစမ်းသပ်ရန် အဆင့်များကို ထည့်ပေးပါ
  • ရိုးရိုး လမ်းညွှန်မှုသည် အခမဲ့ ဖြစ်နိုင်ပါသည်; hands-on setup / production harden / custom ops များအတွက် ကျသင့်နိုင်ပါသည်
  • အခမဲ့ / အခပေး ကို စတင်မလုပ်မီ ရှင်းလင်းစွာ အတည်ပြုပေးပါသည်