Working proof-of-life for the PRD:
- Team travel dashboard
- Traveler profile vault with masked document numbers
- Manual trip creation
- Demo checkout page at
/demo/checkout - Chrome Manifest V3 extension that detects the demo checkout page, autofills traveler details, runs risk checks, and saves a trip back to the dashboard
- Supabase-shaped SQL schema and RLS notes
npm run devOpen http://localhost:4173.
- Open Chrome Extensions.
- Enable Developer mode.
- Choose "Load unpacked".
- Select
apps/extension. - Open
http://localhost:4173/demo/checkout.
The extension talks to the local API at http://localhost:4173/api.
The extension is configured to run on:
localhost:4173/demo/checkout- Skyscanner
.com/.net - Croatia Airlines
.com/.hr - GoToGate
.com
Real-site support is best-effort generic detection. It should show the sidebar only when it sees enough passenger-style fields. It may need a site-specific mapping before it can fill every field reliably.
For a Skyscanner-style flow:
- Search normally on Skyscanner.
- Pick a flight.
- Follow the redirect to the airline or OTA checkout.
- When passenger fields appear, use the Air Travel Wallet sidebar.
- It can fill passenger and billing details, but it must not fill card number/CVC or click the final payment button.
If Skyscanner redirects to a new OTA domain, add that domain to apps/extension/manifest.json, reload the unpacked extension, and retest on the passenger-details page.
The local API still uses a lightweight Node server and JSON file store, while the dashboard UI now builds with Vite, TypeScript, React, Tailwind CSS, Lucide icons, and Framer Motion. The folder layout still leaves clear replacement points for Next.js, Supabase Auth, Postgres, and Edge Functions.