Purple Logistics

Track Your Shipment

Enter your tracking number to see real-time delivery updates.

Tracking Ready

Enter a tracking number above to load the latest shipment timeline in a boxed view.

Purple Logistics

No passwords needed. Enter your registered logistics email and we'll send a secure sign-in link.

Verify employee email

This portal does not use passwords. Request a sign-in link sent to your employee email, then click the link to open your session.

Dashboard

Total Shipments
Active
Delivered
Exceptions

Recent Shipments

TrackingRecipientStatusServiceCreated
Loading...

Shipments

TrackingRecipientDestinationStatusServiceCreated
Loading...

Admin Console

Manage logistics employee access with admin-only controls.

Add Logistics Employee

Create an employee record. That employee can then sign in using the secure email link flow.

Current Employees

NameEmailRoleStatusCreated
Loading...

Shipping Aggregator + Finder Fee Architecture

Parcel Monkey does not publicly document its exact internal rate engine, but its public quote flow and standard multi-carrier API patterns indicate a likely architecture: collect shipment inputs, normalize addresses and parcel data, request rates from enabled carriers through an aggregation layer, show service options, and purchase the selected label after checkout.

Assumptions + stack direction
  • Goal: build a Parcel Monkey-like comparison experience on this site with dimensional + weight inputs, address intake, and a platform finder's fee at checkout.
  • Recommended v1: aggregator API behind this app + Stripe Checkout, not one-by-one direct carrier integrations on day one.
  • Later optional path: Stripe Connect application-fee model only if funds must be split to connected third parties.
How the aggregation layer should work
  1. Collect shipment data (origin, destination, weight, dimensions).
  2. Validate and normalize addresses.
  3. Create normalized shipment object.
  4. Request rates across enabled carriers in one aggregator call.
  5. Render service-rate cards with ETA + price.
  6. User selects a rate.
  7. Collect payment.
  8. Purchase label for selected rate.
  9. Store label URL + tracking + provider IDs for auditability.
Implementation shape for this site
  1. Frontend quote card

    Ship-from, ship-to, weight, dimensions, units toggle (lb/in vs kg/cm), package type, quote action, then rate cards (cheapest/fastest/best-value badges).

  2. Backend quote service

    Validate addresses, convert units, call aggregator, compute finder's fee server-side, return normalized safe quote objects.

  3. Payment service

    Create checkout only after user selects a valid rate and always recompute totals server-side before payment.

Fee + payment model guidance
  • Preferred v1: single-platform checkout where customer pays shipping + finder's fee (+ optional insurance/tax), then platform buys label after successful payment.
  • Finder's fee policy: configurable server-side rules such as fixed, percentage, or hybrid `max(fixed, percentage)`.
  • Stripe recommendation: start with Checkout for launch speed; move to Payment Intents later if embedded checkout UX is required.
Security and correctness requirements
  1. Never trust client totals; recompute server-side before payment creation.
  2. Use idempotency to prevent duplicate checkout sessions and duplicate label purchases.
  3. Treat rates as temporary; reject stale selections.
  4. Persist provider IDs (`shipment_id`, `rate_id`, transaction/payment IDs, tracking number).
  5. Log each stage (input -> quote -> payment -> webhook -> label purchase).
  6. Hash quote inputs; invalidate selection if address/parcel changes.
  7. Webhook-first fulfillment: buy label only after confirmed payment.
Suggested endpoint contract
POST /api/shipping/validate-address
POST /api/shipping/quote
POST /api/shipping/select-rate
POST /api/payments/create-checkout-session
POST /api/payments/webhook
POST /api/shipping/purchase-label
GET  /api/shipping/quote/:quoteId
GET  /api/shipping/label/:shipmentId
Compact build order
  1. Quote form + internal types
  2. Address validation
  3. Rates endpoint
  4. Rate cards UI
  5. Stripe Checkout session creation
  6. Webhook fulfillment
  7. Label purchase
  8. Shipment success page
Compact CKA-style study schedule for rollout execution
  1. Phase 1 - Foundation: Linux CLI fluency + container image workflow + Kubernetes core objects.

    Run short daily kubectl drills (`get`, `describe`, `logs`, `exec`, `explain`) and summarize what each command proved.

  2. Phase 2 - Core administration: cluster architecture, kubeadm workflow, scheduling controls, services, ingress, storage.

    Rotate one domain at a time with mission-first labs, then recreate fixes from memory.

  3. Phase 3 - Troubleshooting emphasis: `CrashLoopBackOff`, `ImagePullBackOff`, DNS/service reachability, node readiness, rollout breakages.

    Use timed rounds: inspect -> isolate -> patch -> verify -> re-check.

  4. Phase 4 - Exam simulation: full-length performance runs and documentation navigation speed.

    Use Killer.sh style mock tasks and strict per-task time limits with command-history review.

Delete Canceled Shipments

Move canceled shipments to trash. They can be permanently deleted after 30 days.

TrackingRecipientCanceledAction
Loading...

Trashed Shipments

Trashed shipments are retained for 30 days before permanent deletion is allowed.

TrackingRecipientDeletedPurge AfterAction
Loading...