AUTOXSPARE Docs

Task list

Everything asked for, what is done, and what is blocking.

The working backlog. Updated as part of the work, like the changelog — if a task is finished it moves to Done with what shipped, and if it is blocked the blocker is named rather than left implied.

September 6 audit — code complete, awaiting deployment

  • Preserve original Curlec payments and recover carts without bank-return cookies.
  • Secure EasyParcel OAuth with an admin session, single-use state and escaped HTML.
  • Keep the charged courier authoritative for booking.
  • Restore typecheck, lint and real root tests; add CI and remove ignored build errors.
  • Coordinate token refresh across clients/workers.
  • Make fitment and return-request retries safe.
  • Update documentation and pass backend, storefront and docs builds.
  • Supply real stock counts, confirm pre-order rules and verify suspect weights.
  • Rehearse payment, shipment and refund flows in configured test accounts.
  • Deploy and verify the live connection and bank round trip.

Validation: 27 tests pass; typecheck passes; lint has no errors and retains 43 backend / 31 storefront warnings for follow-up. These fixes are local; this is not confirmation of a live deployment. Engineering checklist: docs/audit-todo-2026-09-06.md.

Two things block launch: no real payment has ever completed, and the apex domain still points at Shopify.

Blocking launch

#TaskStateBlocker
1Email notificationsWorkingFive templates sending through Resend. See Email.
2First real paymentNot startedNeeds a human to place a small live order (FPX and card). Nothing else proves the gateway end to end.
3Apex cutoverNot startedautoxspare.com still resolves to Shopify. Must ship together with NEXT_PUBLIC_BASE_URL.
4Domain auto-renewOnConfirmed by the shop owner in Hostinger; not independently verifiable from here.

In progress / blocked

#TaskStateNote
5admin.autoxspare.com certificateBlockedDNS, routing, port and target all verified correct; Railway will not issue. Needs a support ticket. Admin works at api.autoxspare.com/app.
6EasyParcel Open API moduleBlockedConfirmed: the account is on the Open API (REST + OAuth2), not the Individual API the old client targets. New client written; needs client_secret and a one-time browser authorisation.
7End-to-end test — admin sidePartly doneCustomer journey done to the payment step. Admin scenarios (fulfilment, refund, draft order) not yet walked.

Queued

#TaskNote
8Curlec dashboardDone — admin → Payments. Captured, fees, refunds, recent payments and settlements, read from the gateway.
9Live View (visitors, sessions, conversion)Needs a web-analytics provider — order data cannot produce sessions. See Analytics.
10Vehicle admin formCRUD already exists at Settings → Product Tags; what is missing is a form that fills kind/brand/model/year_from/year_to correctly instead of hand-edited metadata.
11MembershipThe product page already shows a "Monthly Membership" price. Tiers, signup and renewal do not exist. Needs scoping before building.

Known defects, not yet fixed

#DefectSeverity
12Fabricated urgencyRemoved
13"FREE SHIPPING" claimRemoved
1447 product weights wrong (41 missing, 6 off by a decimal — an alternator at 290 kg)Medium — breaks courier pricing
15Near-duplicate vehicles: "Vios NCP93" and "Vios Ncp93 1 5 G S Spec"Medium — looks like a mistake to customers
16Sidebar category counts are global, so they contradict the filtered result countLow
17Store defaults blankSet
19Malaysian tax rate is 0% pending an answer on SST registrationNeeds the accountant
18Stock is not tracked — the shop cannot prevent oversellingAccepted for now

Done

TaskShipped
Admin login rebranded, forced light5064623
Documentation site at docs.autoxspare.com5064623
Changelog covering all 81 commits, both audiences3d43c2e
Category links dropping the customer's vehicleb15b276
Sub-category chips instead of Medusa starter linksb15b276
Unknown product handles returning 500 instead of 404b15b276
Unmapped Shopify collection URLs returning 500b15b276
Checkout naming "Medusa Store" in its legal copy6110d85
Fitment panel showing raw tag slugs6110d85
Analytics page with date range and comparison controlsa4cb4d2
Date-range calendar escaping its popover9bb47cd
Payments page reading Curlec directlyc0e36fa
Email sending through Resend, five templates04e9264
Account section redesigned; dead customer-service link removedpending commit
Fabricated urgency numbers removed4b4f03a
Malaysia tax region; European warehouse and 7 EU tax regions removed1c72eca
Add-to-cart outage (dangling location link + tax region with no provider)pending commit
Cart: "Variant: Default Title" removed; quantity is an editable stepperpending commit
Checkout header uses the logopending commit

Answered, no work needed

  • Medusa version — already on 2.19.0, which is the latest published.
  • Collections / categories / tags / customer groups CRUD — all ship natively. Collections and Categories sit under Products in the sidebar; Product Tags and Types under Settings.
  • Is the vehicle filter dynamic? — yes. Vehicles are product tags read at request time, so adding one in the admin appears on the storefront with no deploy.
  • The Curlec module — its return/session bugs were repaired in the September 6 audit fixes above. Provider methods and mocked regression checks are complete; deployment and an end-to-end payment rehearsal remain open.
  • Why Curlec has no sidebar entry — a payment provider is not an admin page in Medusa; it surfaces under Settings and on each order. The new Payments page fills that gap.

On this page