Conversation
There was a problem hiding this comment.
CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.
Add pcb-portal/, an English-only international website and ordering portal for the QodeX PCB routing service. Routing runs offline on the operator's workstation; the site handles order intake, USD payments, file exchange and in-browser 3D review. - Server-rendered public site with SEO metadata, sitemap, robots and llms.txt: home, how it works, 3D Studio, use cases (six domains), KiCad integration, pricing estimator, evidence library, docs, trust & security, about, careers, contact, legal. - Ordering: .kicad_pcb parsed in the browser for preview and quote, and on the server (authoritative for pricing). - Payments in USD: Stripe Checkout with signed webhook, PayPal Orders v2; server-to-server verification, idempotent finalisation, receipts. - 3D viewer for .kicad_pcb (KiCad 5-9), glb, gltf, stl, obj, wrl: layers, mask transparency, exploded stack, inspect with net highlighting, measuring tool. - Customer portal and admin panel (queue, pricing, deliverables, customers, inquiries, tariffs). - 38 node:test tests; CI job added. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017BQf54SD6EFwPyF5xPtqv8
QodeXcli
force-pushed
the
claude/qodex-pcb-comprehensive-spec-5emn57
branch
from
September 30, 2026 13:52
ace730f to
d03adfe
Compare
- Rate limiting: use express-rate-limit on the customer and admin API routers (plus stricter limits on auth, contact and the Stripe webhook). - Cookies: read the session cookie by name instead of building an object keyed by header input (remote property injection). - Login redirect: follow `next` only when it resolves to this origin and prefix it with location.origin (a `/\evil.com` value previously passed). - Password change moved to POST /api/auth/password, which always verifies the current password; PATCH /api/auth/me only updates the profile. - Package description updated for Stripe / PayPal. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017BQf54SD6EFwPyF5xPtqv8
| assert.equal(bad.status, 400); | ||
|
|
||
| // the customer comes back before Stripe reports the session as paid | ||
| stripeSession.payment_status = 'unpaid'; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
pcb-portal/: the public website, customer ordering portal and admin panel for the QodeX PCB routing service. It is English-only and international, and all prices are in US dollars. Routing itself is not done on the site: it runs offline on the operator's workstation. The site handles orders, payment, file exchange and 3D review.Public site (rendered on the server, SEO-ready)
sitemap.xml,robots.txtandllms.txtare generated.Ordering and payments
.kicad_pcband gets a 3D preview and quote straight away in the browser. The server parses the board again, and its numbers win for pricing.3D viewer
.kicad_pcb(KiCad 5 to 9),.glb,.gltf,.stl,.obj,.wrl.Portal and admin
Security
Stack: Express 5 + better-sqlite3 + three.js. There is no build step. It is self-contained in
pcb-portal/, and the root CLI build and tests are unaffected.Testing
cd pcb-portal && npm test: 38node:testtests pass. They cover:🤖 Generated with Claude Code
https://claude.ai/code/session_017BQf54SD6EFwPyF5xPtqv8