@jarwizz/create-jarshop 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -2
- package/dist/generator.js +10 -4
- package/dist/generator.js.map +1 -1
- package/dist/template/AGENTS.md +3 -3
- package/dist/template/CONTEXT.md +14 -0
- package/dist/template/README.md +25 -3
- package/dist/template/docker-compose.yml +5 -0
- package/dist/template/docs/smtp-smoke.md +37 -0
- package/dist/template/env.example.template +18 -0
- package/dist/template/gitignore.template +2 -0
- package/dist/template/package.json +19 -6
- package/dist/template/pnpm-lock.yaml +2389 -98
- package/dist/template/pnpm-workspace.yaml +12 -1
- package/dist/template/src/dev-storefront.ts +58 -0
- package/dist/template/src/dev.ts +67 -4
- package/dist/template/src/email-smoke.ts +27 -0
- package/dist/template/src/environment.d.ts +6 -0
- package/dist/template/src/migrate.ts +16 -0
- package/dist/template/src/migrations/1786024108434-jarshop-checkout-attempt.ts +28 -0
- package/dist/template/src/migrations/1786024108435-jarshop-legal-and-confirmation.ts +60 -0
- package/dist/template/src/migrations/1786024108436-jarshop-order-email-outbox.ts +37 -0
- package/dist/template/src/migrations/1786030000000-jarshop-order-email-delivery-lease.ts +27 -0
- package/dist/template/src/plugins/jarshop-checkout/checkout-attempt.entity.ts +42 -0
- package/dist/template/src/plugins/jarshop-checkout/cod-payment.test.ts +44 -0
- package/dist/template/src/plugins/jarshop-checkout/cod-payment.ts +28 -0
- package/dist/template/src/plugins/jarshop-checkout/confirmation-token.entity.ts +31 -0
- package/dist/template/src/plugins/jarshop-checkout/confirmation.ts +59 -0
- package/dist/template/src/plugins/jarshop-checkout/dashboard/index.tsx +107 -0
- package/dist/template/src/plugins/jarshop-checkout/dashboard/order-email-delivery-status.ts +43 -0
- package/dist/template/src/plugins/jarshop-checkout/email-smoke-core.ts +56 -0
- package/dist/template/src/plugins/jarshop-checkout/index.ts +51 -0
- package/dist/template/src/plugins/jarshop-checkout/jarshop-checkout.plugin.ts +870 -0
- package/dist/template/src/plugins/jarshop-checkout/legal.entity.ts +39 -0
- package/dist/template/src/plugins/jarshop-checkout/order-consent.entity.ts +32 -0
- package/dist/template/src/plugins/jarshop-checkout/order-email-delivery-core.ts +337 -0
- package/dist/template/src/plugins/jarshop-checkout/order-email-delivery-status.ts +39 -0
- package/dist/template/src/plugins/jarshop-checkout/order-email-delivery.entity.ts +66 -0
- package/dist/template/src/plugins/jarshop-checkout/order-email-outbox.ts +108 -0
- package/dist/template/src/plugins/jarshop-checkout/order-email-transport.ts +35 -0
- package/dist/template/src/plugins/jarshop-checkout/order-email-worker.ts +281 -0
- package/dist/template/src/plugins/jarshop-checkout/shipping.test.ts +41 -0
- package/dist/template/src/plugins/jarshop-checkout/shipping.ts +162 -0
- package/dist/template/src/seed.ts +171 -0
- package/dist/template/src/vendure-config.ts +72 -7
- package/dist/template/static/email/templates/email-verification/body.hbs +4 -4
- package/dist/template/storefront/app/[locale]/[slug]/add-to-cart-form.tsx +44 -0
- package/dist/template/storefront/app/[locale]/[slug]/page.tsx +35 -26
- package/dist/template/storefront/app/[locale]/account/account-mutation-form.tsx +44 -0
- package/dist/template/storefront/app/[locale]/account/change-password-form.tsx +65 -0
- package/dist/template/storefront/app/[locale]/account/login/login-form.tsx +60 -0
- package/dist/template/storefront/app/[locale]/account/login/page.tsx +23 -0
- package/dist/template/storefront/app/[locale]/account/page.tsx +215 -0
- package/dist/template/storefront/app/[locale]/account/password-reset/callback/route.ts +33 -0
- package/dist/template/storefront/app/[locale]/account/password-reset/complete/page.tsx +27 -0
- package/dist/template/storefront/app/[locale]/account/password-reset/page.tsx +37 -0
- package/dist/template/storefront/app/[locale]/account/password-reset/password-reset-forms.tsx +99 -0
- package/dist/template/storefront/app/[locale]/account/register/page.tsx +23 -0
- package/dist/template/storefront/app/[locale]/account/register/register-form.tsx +67 -0
- package/dist/template/storefront/app/[locale]/account/verify/complete/route.ts +33 -0
- package/dist/template/storefront/app/[locale]/account/verify/page.tsx +41 -0
- package/dist/template/storefront/app/[locale]/account/verify/refresh-form.tsx +35 -0
- package/dist/template/storefront/app/[locale]/cart/page.tsx +78 -0
- package/dist/template/storefront/app/[locale]/checkout/checkout-form.tsx +112 -0
- package/dist/template/storefront/app/[locale]/checkout/confirmation/route.ts +21 -0
- package/dist/template/storefront/app/[locale]/checkout/page.tsx +44 -0
- package/dist/template/storefront/app/[locale]/checkout/success/page.tsx +28 -0
- package/dist/template/storefront/app/[locale]/layout.tsx +48 -0
- package/dist/template/storefront/app/[locale]/page.tsx +12 -13
- package/dist/template/storefront/app/globals.css +372 -4
- package/dist/template/storefront/app/layout.tsx +13 -0
- package/dist/template/storefront/eslint.config.mjs +8 -1
- package/dist/template/storefront/gitignore.template +1 -0
- package/dist/template/storefront/lib/account-security.test.ts +74 -0
- package/dist/template/storefront/lib/account-security.ts +81 -0
- package/dist/template/storefront/lib/account.ts +366 -0
- package/dist/template/storefront/lib/cart-contract.ts +52 -0
- package/dist/template/storefront/lib/cart.test.ts +30 -0
- package/dist/template/storefront/lib/cart.ts +130 -0
- package/dist/template/storefront/lib/checkout-contract.test.ts +20 -0
- package/dist/template/storefront/lib/checkout-contract.ts +16 -0
- package/dist/template/storefront/lib/checkout.ts +149 -0
- package/dist/template/storefront/lib/commerce-session.test.ts +77 -0
- package/dist/template/storefront/lib/commerce-session.ts +85 -0
- package/dist/template/storefront/lib/commerce.ts +129 -4
- package/dist/template/storefront/lib/confirmation-cookie.ts +9 -0
- package/dist/template/storefront/lib/confirmation.ts +95 -0
- package/dist/template/storefront/lib/form-values.test.ts +14 -0
- package/dist/template/storefront/lib/form-values.ts +7 -0
- package/dist/template/storefront/lib/i18n.test.ts +50 -0
- package/dist/template/storefront/lib/i18n.ts +44 -0
- package/dist/template/storefront/lib/password-reset-token.test.ts +31 -0
- package/dist/template/storefront/lib/password-reset-token.ts +17 -0
- package/dist/template/storefront/lib/valkey-rate-limit.ts +72 -0
- package/dist/template/storefront/messages/en.json +89 -0
- package/dist/template/storefront/messages/sk.json +89 -0
- package/dist/template/storefront/next.config.ts +3 -1
- package/dist/template/storefront/package.json +11 -4
- package/dist/template/storefront/vitest.config.ts +8 -0
- package/dist/template/tsconfig.json +2 -1
- package/dist/template/turbo.json +8 -0
- package/dist/template/vite.config.mts +4 -1
- package/dist/template-manifest.json +1 -1
- package/dist/template.js +3 -0
- package/dist/template.js.map +1 -1
- package/package.json +1 -1
- package/dist/template/storefront/pnpm-lock.yaml +0 -3562
- package/dist/template/storefront/pnpm-workspace.yaml +0 -26
package/README.md
CHANGED
|
@@ -6,8 +6,8 @@ Pre-release generator for independent JarShop Client Projects.
|
|
|
6
6
|
pnpm dlx @jarwizz/create-jarshop@0.1.1 new demo-shop --preset sk-standard
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
The default path performs frozen
|
|
10
|
-
|
|
9
|
+
The default path performs one frozen install for the complete generated Client
|
|
10
|
+
Project workspace. `--no-install` is an explicit offline/CI escape hatch. The
|
|
11
11
|
generator never uses telemetry. In restricted local runners, set
|
|
12
12
|
`JARSHOP_PNPM_STORE_DIR` to an allowed pnpm store directory; normal developer
|
|
13
13
|
installs do not need this environment variable.
|
|
@@ -23,3 +23,11 @@ It creates `.env` from the committed development example only when missing,
|
|
|
23
23
|
starts PostgreSQL, applies development migrations, runs the idempotent demo
|
|
24
24
|
seed, and opens the server, worker, Dashboard, and storefront through Turbo.
|
|
25
25
|
Use `pnpm db:down` to stop PostgreSQL without deleting its volume.
|
|
26
|
+
|
|
27
|
+
# Template build boundary
|
|
28
|
+
|
|
29
|
+
The generated Client Project template is copied from
|
|
30
|
+
`starter/client-project` during this package's build. Turbo treats that source
|
|
31
|
+
tree as a build input while excluding local runtime files such as `.env`,
|
|
32
|
+
`node_modules`, and `dist`; a packed generator therefore always contains the
|
|
33
|
+
template from the commit being verified without hashing secrets or artifacts.
|
package/dist/generator.js
CHANGED
|
@@ -85,6 +85,10 @@ async function readJson(path) {
|
|
|
85
85
|
}
|
|
86
86
|
function assertSafeTemplate(files) {
|
|
87
87
|
for (const file of files) {
|
|
88
|
+
if (file.path.includes("/") &&
|
|
89
|
+
/(?:^|\/)(?:pnpm-lock\.yaml|pnpm-workspace\.yaml)$/u.test(file.path)) {
|
|
90
|
+
fail(`Nested pnpm workspace state is not allowed in the template: ${file.path}`);
|
|
91
|
+
}
|
|
88
92
|
if (file.path === ".env" ||
|
|
89
93
|
/(?:^|\/)(?:id_rsa|id_ed25519|.*\.pem)$/u.test(file.path)) {
|
|
90
94
|
fail(`Secret-like file is not allowed in the template: ${file.path}`);
|
|
@@ -166,25 +170,27 @@ export async function createProject(options) {
|
|
|
166
170
|
recursive: true,
|
|
167
171
|
filter: (path) => shouldIncludeTemplatePath(relative(templateRoot, path)),
|
|
168
172
|
});
|
|
173
|
+
// Verify the packed template before materializing npm-safe filenames such
|
|
174
|
+
// as `gitignore.template` into their generated-project counterparts.
|
|
175
|
+
const actualDigest = await sha256Tree(staging);
|
|
176
|
+
if (actualDigest !== expectedDigest)
|
|
177
|
+
fail("Starter template digest verification failed");
|
|
169
178
|
for (const [packedName, generatedName] of [
|
|
170
179
|
["gitignore.template", ".gitignore"],
|
|
171
180
|
["env.example.template", ".env.example"],
|
|
181
|
+
["storefront/gitignore.template", "storefront/.gitignore"],
|
|
172
182
|
]) {
|
|
173
183
|
const packedPath = join(staging, packedName);
|
|
174
184
|
if (await pathExists(packedPath)) {
|
|
175
185
|
await rename(packedPath, join(staging, generatedName));
|
|
176
186
|
}
|
|
177
187
|
}
|
|
178
|
-
const actualDigest = await sha256Tree(staging);
|
|
179
|
-
if (actualDigest !== expectedDigest)
|
|
180
|
-
fail("Starter template digest verification failed");
|
|
181
188
|
const templateFiles = await readTemplateFiles(staging);
|
|
182
189
|
assertSafeTemplate(templateFiles);
|
|
183
190
|
await writeJarShopManifests(staging, name, packageVersion, actualDigest);
|
|
184
191
|
if (!noInstall) {
|
|
185
192
|
const install = options.install ?? runPnpmInstall;
|
|
186
193
|
await install(staging);
|
|
187
|
-
await install(join(staging, "storefront"));
|
|
188
194
|
}
|
|
189
195
|
await rename(staging, target);
|
|
190
196
|
console.log(`Created ${target}`);
|
package/dist/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
package/dist/template/AGENTS.md
CHANGED
package/dist/template/CONTEXT.md
CHANGED
|
@@ -6,9 +6,19 @@
|
|
|
6
6
|
- `src/index-worker.ts`: background jobs using the same database.
|
|
7
7
|
- `src/vendure-config.ts`: runtime composition; no automatic schema sync.
|
|
8
8
|
- `src/migrations/`: explicit, versioned PostgreSQL schema changes.
|
|
9
|
+
- `src/plugins/jarshop-checkout/`: server-owned checkout boundary and
|
|
10
|
+
`CheckoutAttempt` persistence seam; behavior is added by later checkout
|
|
11
|
+
slices.
|
|
9
12
|
- `src/seed.ts`: idempotent development-only SK/EN demo catalog seed.
|
|
10
13
|
- `storefront/`: independent Next.js application on port `3001`.
|
|
14
|
+
- `pnpm-workspace.yaml` and `pnpm-lock.yaml`: the single dependency boundary
|
|
15
|
+
shared by the Vendure runtime and storefront workspace package.
|
|
11
16
|
- `storefront/lib/commerce.ts`: typed Commerce Facade used by storefront routes.
|
|
17
|
+
- `storefront/lib/cart.ts`: server-owned cart mutations using an HttpOnly
|
|
18
|
+
`vendure-session` cookie; browser storage is never authoritative.
|
|
19
|
+
- `storefront/lib/checkout.ts`: guest pickup/courier COD checkout boundary
|
|
20
|
+
using the idempotent JarShop Shop API mutation; Vendure remains authoritative
|
|
21
|
+
for shipping eligibility and totals.
|
|
12
22
|
- `docker-compose.yml`: local PostgreSQL only; production infrastructure is
|
|
13
23
|
intentionally outside this development contract.
|
|
14
24
|
- `.jarshop/`: exact generator, Starter Release, package and ownership facts.
|
|
@@ -24,11 +34,15 @@
|
|
|
24
34
|
## Vocabulary
|
|
25
35
|
|
|
26
36
|
- **Client Project**: this independently deployable generated shop.
|
|
37
|
+
- **Client Project workspace**: the single pnpm install and lockfile covering
|
|
38
|
+
the Vendure runtime, worker, Dashboard and storefront.
|
|
27
39
|
- **Starter Release**: the immutable template baseline recorded in the Project
|
|
28
40
|
Manifest.
|
|
29
41
|
- **Commerce SDK**: framework-neutral, typed server-side commerce operations.
|
|
30
42
|
- **Commerce Facade**: this project's adapter between Next.js and the SDK.
|
|
31
43
|
- **Dashboard**: Vendure's operator UI; it is not the storefront.
|
|
44
|
+
- **CheckoutAttempt**: a durable idempotency record owned by the JarShop
|
|
45
|
+
checkout plugin; it never stores customer PII.
|
|
32
46
|
|
|
33
47
|
## Runtime boundary
|
|
34
48
|
|
package/dist/template/README.md
CHANGED
|
@@ -13,8 +13,14 @@ pnpm dev
|
|
|
13
13
|
|
|
14
14
|
`pnpm dev` creates `.env` when needed, starts PostgreSQL, waits for readiness,
|
|
15
15
|
runs development-only migrations and the idempotent demo seed, then starts the
|
|
16
|
-
Vendure server, worker and storefront in Turbo TUI.
|
|
17
|
-
after the dev processes stop; use `pnpm db:down` when
|
|
16
|
+
Vendure server, worker, Dashboard Vite server and storefront in Turbo TUI.
|
|
17
|
+
PostgreSQL remains running after the dev processes stop; use `pnpm db:down` when
|
|
18
|
+
you want to stop it.
|
|
19
|
+
|
|
20
|
+
The Client Project has one pnpm workspace and one lockfile for the Vendure
|
|
21
|
+
runtime and storefront. Run installs and quality commands from this directory;
|
|
22
|
+
the storefront is a workspace package, not a second independently installed
|
|
23
|
+
project.
|
|
18
24
|
|
|
19
25
|
Open the generated applications at:
|
|
20
26
|
|
|
@@ -32,6 +38,19 @@ production, replace every credential and provide secrets through the deployment
|
|
|
32
38
|
secret store. Never commit `.env`, production credentials, private keys or
|
|
33
39
|
Terraform state.
|
|
34
40
|
|
|
41
|
+
## Order-email transport
|
|
42
|
+
|
|
43
|
+
Development uses the deterministic `file` transport from `.env.example`. It is
|
|
44
|
+
valid only for `APP_ENV=dev` or `APP_ENV=test` and writes a sanitized local
|
|
45
|
+
proof instead of delivering a real message.
|
|
46
|
+
|
|
47
|
+
SMTP is explicit: set `JARSHOP_EMAIL_TRANSPORT=smtp` and provide every
|
|
48
|
+
`JARSHOP_EMAIL_SMTP_*` value listed in `.env.example` through an untracked
|
|
49
|
+
environment file or the deployment secret store. The worker validates this
|
|
50
|
+
configuration before it can deliver an order email, but this starter does not
|
|
51
|
+
probe or send to an SMTP provider during application startup. A provider smoke
|
|
52
|
+
test is a separate operational step.
|
|
53
|
+
|
|
35
54
|
Database schema changes are explicit. The server does not run migrations during
|
|
36
55
|
startup. Use `pnpm db:migrate` after the database is available.
|
|
37
56
|
|
|
@@ -55,7 +74,10 @@ generated project. Check `.jarshop/ownership.json` before editing managed files.
|
|
|
55
74
|
|
|
56
75
|
- **Unsupported Node.js:** install exact Node `24.18.0`, then rerun `pnpm dev`.
|
|
57
76
|
- **Docker is not available:** start Docker Desktop and rerun the command.
|
|
58
|
-
- **
|
|
77
|
+
- **A Vendure or storefront port is occupied:** set free `PORT` and
|
|
78
|
+
`JARSHOP_STOREFRONT_PORT` values in `.env`, then set
|
|
79
|
+
`JARSHOP_COMMERCE_ENDPOINT` and `JARSHOP_STOREFRONT_URL` to the matching
|
|
80
|
+
local URLs before rerunning `pnpm dev`.
|
|
59
81
|
- **PostgreSQL port 6543 is occupied:** set the same free
|
|
60
82
|
`JARSHOP_POSTGRES_PORT` and `DB_PORT` values in `.env`.
|
|
61
83
|
- **Reset only running PostgreSQL:** use `pnpm db:down`. The database volume is
|
|
@@ -9,6 +9,11 @@ services:
|
|
|
9
9
|
POSTGRES_PASSWORD: change-me-locally
|
|
10
10
|
volumes:
|
|
11
11
|
- postgres_db_data:/var/lib/postgresql/data
|
|
12
|
+
valkey:
|
|
13
|
+
image: valkey/valkey:9.1.1-alpine3.24@sha256:de31910896150d5e754a07d57d227cfdde4e258ddd0d1aa4607f2d2f95843715
|
|
14
|
+
ports:
|
|
15
|
+
- "${JARSHOP_VALKEY_PORT:-6380}:6379"
|
|
16
|
+
command: ["valkey-server", "--save", "", "--appendonly", "no"]
|
|
12
17
|
|
|
13
18
|
volumes:
|
|
14
19
|
postgres_db_data:
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Protected SMTP smoke
|
|
2
|
+
|
|
3
|
+
This procedure proves that a staging Client Project can submit one controlled
|
|
4
|
+
message to its configured SMTP transport. It is an operational check, not an
|
|
5
|
+
automated test and not a production deployment procedure.
|
|
6
|
+
|
|
7
|
+
## Before sending
|
|
8
|
+
|
|
9
|
+
1. Use a dedicated staging SMTP credential with the least provider access
|
|
10
|
+
possible. Put it only in the staging secret store or an untracked `.env`.
|
|
11
|
+
2. Set `APP_ENV=staging` and `JARSHOP_EMAIL_TRANSPORT=smtp`.
|
|
12
|
+
3. Provide every `JARSHOP_EMAIL_SMTP_*` value from `.env.example`.
|
|
13
|
+
4. Choose a test inbox that the operator can inspect. Do not use a customer
|
|
14
|
+
address.
|
|
15
|
+
5. Confirm the file transport output directory is not the proof target.
|
|
16
|
+
|
|
17
|
+
## Send one controlled message
|
|
18
|
+
|
|
19
|
+
```shell
|
|
20
|
+
pnpm email:smoke -- --to <controlled-test-inbox> --confirm-external-send
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The command fails before network activity unless the environment is exactly
|
|
24
|
+
`staging`, SMTP is selected and valid, a valid recipient is supplied, and the
|
|
25
|
+
explicit confirmation flag is present. It sends no order data, confirmation
|
|
26
|
+
token, customer data or database write.
|
|
27
|
+
|
|
28
|
+
## Evidence and rollback
|
|
29
|
+
|
|
30
|
+
Record the immutable application commit, provider timestamp/message ID if the
|
|
31
|
+
provider exposes one, and receipt in the controlled inbox. Do not record the
|
|
32
|
+
recipient, credentials, SMTP response body or provider secret in GitHub,
|
|
33
|
+
application logs or issue comments.
|
|
34
|
+
|
|
35
|
+
If the smoke fails, rotate or revoke the staging credential if its exposure is
|
|
36
|
+
suspected, correct the environment secret, and retry only after the provider
|
|
37
|
+
configuration is understood. No database rollback is required.
|
|
@@ -2,13 +2,31 @@ APP_ENV=dev
|
|
|
2
2
|
VENDURE_DISABLE_TELEMETRY=true
|
|
3
3
|
NEXT_TELEMETRY_DISABLED=1
|
|
4
4
|
PORT=3000
|
|
5
|
+
JARSHOP_STOREFRONT_PORT=3001
|
|
6
|
+
JARSHOP_COMMERCE_ENDPOINT=http://localhost:3000/shop-api
|
|
5
7
|
COOKIE_SECRET=replace-with-a-local-development-secret
|
|
6
8
|
SUPERADMIN_USERNAME=superadmin
|
|
7
9
|
SUPERADMIN_PASSWORD=change-me-locally
|
|
8
10
|
DB_HOST=localhost
|
|
9
11
|
DB_PORT=6543
|
|
10
12
|
JARSHOP_POSTGRES_PORT=6543
|
|
13
|
+
JARSHOP_VALKEY_PORT=6380
|
|
14
|
+
JARSHOP_ACCOUNT_RATE_LIMIT_URL=redis://localhost:6380
|
|
15
|
+
# Production must replace this local URL with protected Valkey credentials.
|
|
11
16
|
DB_NAME=vendure
|
|
12
17
|
DB_USERNAME=vendure
|
|
13
18
|
DB_PASSWORD=change-me-locally
|
|
14
19
|
DB_SCHEMA=public
|
|
20
|
+
JARSHOP_ORDER_EMAIL_ENCRYPTION_KEY=MDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWY=
|
|
21
|
+
JARSHOP_EMAIL_TRANSPORT=file
|
|
22
|
+
JARSHOP_EMAIL_FILE_TRANSPORT_PATH=./static/email/jarshop-outbox
|
|
23
|
+
# SMTP is an explicit environment-owned transport. Keep these values in an
|
|
24
|
+
# untracked environment file or deployment secret store; do not commit real credentials.
|
|
25
|
+
# JARSHOP_EMAIL_TRANSPORT=smtp
|
|
26
|
+
# JARSHOP_EMAIL_SMTP_HOST=smtp.example.com
|
|
27
|
+
# JARSHOP_EMAIL_SMTP_PORT=587
|
|
28
|
+
# JARSHOP_EMAIL_SMTP_SECURE=false
|
|
29
|
+
# JARSHOP_EMAIL_SMTP_FROM=orders@example.com
|
|
30
|
+
# JARSHOP_EMAIL_SMTP_USERNAME=orders@example.com
|
|
31
|
+
# JARSHOP_EMAIL_SMTP_PASSWORD=replace-in-secret-store
|
|
32
|
+
JARSHOP_STOREFRONT_URL=http://localhost:3001
|
|
@@ -7,23 +7,31 @@
|
|
|
7
7
|
},
|
|
8
8
|
"packageManager": "pnpm@11.18.0",
|
|
9
9
|
"scripts": {
|
|
10
|
-
"dev:server": "
|
|
11
|
-
"dev:worker": "
|
|
12
|
-
"dev:
|
|
10
|
+
"dev:server": "tsx ./src/index.ts",
|
|
11
|
+
"dev:worker": "tsx ./src/index-worker.ts",
|
|
12
|
+
"dev:dashboard": "vite --config vite.config.mts",
|
|
13
|
+
"dev:storefront": "tsx ./src/dev-storefront.ts",
|
|
13
14
|
"dev": "tsx ./src/dev.ts",
|
|
14
|
-
"build": "vendure build
|
|
15
|
+
"build": "turbo run build:vendure build:storefront",
|
|
16
|
+
"build:vendure": "vendure build all",
|
|
15
17
|
"build:server": "vendure build server",
|
|
16
18
|
"build:worker": "vendure build worker",
|
|
17
19
|
"build:dashboard": "vendure build dashboard",
|
|
20
|
+
"lint": "turbo run lint:storefront",
|
|
21
|
+
"typecheck": "turbo run typecheck:storefront",
|
|
22
|
+
"test": "turbo run test:storefront",
|
|
18
23
|
"start:server": "node ./dist/index.js",
|
|
19
24
|
"start:worker": "node ./dist/index-worker.js",
|
|
20
|
-
"db:up": "docker compose up -d postgres_db",
|
|
21
|
-
"db:migrate": "
|
|
25
|
+
"db:up": "docker compose up -d postgres_db valkey",
|
|
26
|
+
"db:migrate": "tsx ./src/migrate.ts",
|
|
22
27
|
"db:seed": "tsx ./src/seed.ts",
|
|
28
|
+
"email:smoke": "tsx ./src/email-smoke.ts",
|
|
23
29
|
"stack:up": "pnpm db:up",
|
|
24
30
|
"db:down": "docker compose down"
|
|
25
31
|
},
|
|
26
32
|
"dependencies": {
|
|
33
|
+
"@nestjs/common": "11.1.28",
|
|
34
|
+
"@nestjs/graphql": "13.1.0",
|
|
27
35
|
"@vendure/asset-server-plugin": "3.7.1",
|
|
28
36
|
"@vendure/common": "3.7.1",
|
|
29
37
|
"@vendure/core": "3.7.1",
|
|
@@ -31,10 +39,15 @@
|
|
|
31
39
|
"@vendure/email-plugin": "3.7.1",
|
|
32
40
|
"@vendure/graphiql-plugin": "3.7.1",
|
|
33
41
|
"dotenv": "17.4.2",
|
|
42
|
+
"nodemailer": "9.0.4",
|
|
34
43
|
"pg": "8.22.0",
|
|
44
|
+
"react": "19.2.4",
|
|
35
45
|
"typeorm": "0.3.31"
|
|
36
46
|
},
|
|
37
47
|
"devDependencies": {
|
|
48
|
+
"@types/node": "24.13.3",
|
|
49
|
+
"@types/nodemailer": "8.0.1",
|
|
50
|
+
"@types/react": "19.2.14",
|
|
38
51
|
"@vendure/cli": "3.7.1",
|
|
39
52
|
"gql.tada": "1.11.3",
|
|
40
53
|
"graphql": "16.14.2",
|