├── .dockerignore ├── .gitignore ├── Dockerfile ├── README.md ├── README_CN.md ├── assets └── css │ ├── base.css │ └── main.css ├── components ├── Alert.vue ├── Carousel.vue ├── EmptyContent.vue ├── Footer.vue ├── Home │ ├── Theme1.vue │ └── Theme2.vue ├── Lang │ ├── Ar.vue │ ├── De.vue │ ├── En.vue │ ├── Es.vue │ ├── Fa.vue │ ├── Fr.vue │ ├── Ja.vue │ ├── Kk.vue │ ├── Ko.vue │ ├── Pa.vue │ ├── Pl.vue │ ├── Pt.vue │ ├── Ru.vue │ ├── Switcher.vue │ ├── Tr.vue │ ├── Uk.vue │ ├── Uz.vue │ ├── ZhCN.vue │ └── ZhHK.vue ├── OrderDetailDigital.vue ├── OrderPayments.vue ├── PlaceOrder.vue ├── PriceTag.vue └── btn │ ├── Copy.vue │ ├── MerchantContact.vue │ ├── MerchantIntro.vue │ └── Submit.vue ├── composables ├── useAPIState.ts └── useReq.ts ├── docs └── images │ ├── cf-dns.jpg │ ├── cf-ssl.jpg │ ├── fork.jpg │ ├── sync.jpg │ ├── vercel-add-permission.jpg │ ├── vercel-add-project.jpg │ ├── vercel-deploy-ok.jpg │ ├── vercel-deploy.jpg │ ├── vercel-domain-add.jpg │ ├── vercel-domain-enter.jpg │ └── vercel-project-import.jpg ├── i18n.config.ts ├── i18n ├── auto │ ├── ar.ts │ ├── de.ts │ ├── es.ts │ ├── fa.ts │ ├── fr.ts │ ├── ja.ts │ ├── kk.ts │ ├── ko.ts │ ├── pa.ts │ ├── pl.ts │ ├── pt.ts │ ├── ru.ts │ ├── tr.ts │ ├── uk.ts │ ├── uz.ts │ └── zh-HK.ts ├── en.ts └── zh-CN.ts ├── layouts ├── default.vue └── simplified.vue ├── nuxt.config.ts ├── package-lock.json ├── package.json ├── pages ├── index.vue ├── order │ ├── [...slug].vue │ └── search.vue └── tip.vue ├── plugins └── flowbite.client.ts ├── public └── favicon.ico ├── robots.config.ts ├── server ├── api │ └── [...].js ├── middleware │ └── entrance.js ├── tsconfig.json └── utils │ └── cache.js ├── tailwind.config.js ├── translate.config.js ├── tsconfig.json ├── utils ├── common.ts ├── date.ts ├── encrypt.ts └── i18n.js └── vercel.json /.dockerignore: -------------------------------------------------------------------------------- 1 | .gitignore -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Nuxt dev/build outputs 2 | .output 3 | .data 4 | .nuxt 5 | .nitro 6 | .cache 7 | dist 8 | 9 | # Node dependencies 10 | node_modules 11 | 12 | # Logs 13 | logs 14 | *.log 15 | 16 | # Misc 17 | .DS_Store 18 | .fleet 19 | .idea 20 | 21 | # Local env files 22 | .env 23 | .env.* 24 | !.env.example 25 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | ARG NODE_VERSION=22.5.1 2 | 3 | FROM node:${NODE_VERSION}-slim as base 4 | 5 | ARG PORT=3000 6 | 7 | WORKDIR /src 8 | 9 | # Build 10 | FROM base as build 11 | 12 | COPY --link package.json package-lock.json . 13 | RUN npm install 14 | 15 | COPY --link . . 16 | 17 | RUN npm run build 18 | 19 | # Run 20 | FROM base 21 | 22 | ENV PORT=$PORT 23 | ENV NODE_ENV=production 24 | 25 | COPY --from=build /src/.output /src/.output 26 | 27 | CMD [ "node", ".output/server/index.mjs" ] -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | En [中文](./README_CN.md) 2 | 3 |
4 | 9 |
10 |
11 |
| {{ $t('product_name') }} | 121 |{{ $t('Price') }} | 122 |{{ $t('stock') }} | 123 |124 | |
|---|---|---|---|
| {{ nameI18n(locale, sku) }} | 129 |
130 | |
134 | {{ displayStock(sku.stock, sku.hiddenStock) }} | 135 |136 | 143 | | 144 |
* {{ $t('order_tip1') }}
125 |
126 | * {{ $t('order_anonymous_tip') }}
127 |
14 | Missing NUXT_IDATARIVER_MERCHANT_SECRET 😉 15 |
16 || 41 | {{ $t('txn_order_id') }} 42 | | 43 |44 | {{ $t('Name') }} 45 | | 46 |47 | {{ $t('Quantity') }} 48 | | 49 |50 | {{ $t('Price') }} 51 | | 52 |53 | {{ $t('Status') }} 54 | | 55 |56 | {{ $t('Date') }} 57 | | 58 |
|---|---|---|---|---|---|
|
64 | |
68 | 69 | {{ item.skuName }} 70 | | 71 |72 | {{ item.quantity }} 73 | | 74 |75 | {{ item.price }} {{ $t('credits') }} 76 | | 77 |78 | {{ $t('txn_order_status_' + item.status) }} 79 | | 80 |81 | {{ formatLocaleDate(item.date) }} 82 | | 83 |
11 | {{ $t(msgI18n) }} 12 |
13 |