Production Audit Report
Deep audit of pages, data, workflows, integrations & security
4
Critical
6
High
12
Fixed
5
Open
Hardcoded Mock Listing Data
📍 pages/Booking.jsx
Booking page used a hardcoded mock listing instead of fetching real listing data from the database.
Raw Card Data Sent to Backend
📍 functions/stripe.js — createPaymentMethod
The createPaymentMethod action accepted raw card numbers (number, exp_month, exp_year, cvc) via API. This is a PCI-DSS violation.
Double Platform Fee (13% applied twice)
📍 components/payments/StripeCheckout.jsx + functions/stripe.js
Frontend already adds 13% to total, then backend adds 13% again on top via apply_platform_fee=true, resulting in ~27% overcharge.
Request Body Read After Auth (Consumed Stream)
📍 functions/processBookingWorkflow.js
req.json() was called AFTER base44.auth.me() which internally reads the request body, causing body to be empty/consumed.
No Balance Deduction on Send Money
📍 pages/Wallet.jsx
handleSendMoney created a transaction record but never deducted from the sender wallet or credited the recipient wallet.
No Input Validation on Send Money
📍 pages/Wallet.jsx
No checks for: amount > 0, amount <= balance, self-transfer, valid recipient.
Fetching ALL Reservations to Find One
📍 pages/Booking.jsx — Reservation.list()
Used Reservation.list() (returns all records) then .find() client-side. Extremely slow at scale, loads unnecessary data.
Hardcoded Listing Title, Address & Image
📍 pages/Bookings.jsx
Bookings list displayed "Amazing stay in south beach" and "2301 collins ave" hardcoded for ALL reservations.
3-Second Polling Loop (N×2 queries each tick)
📍 pages/Messages.jsx
setInterval every 3 seconds fires 2 DB queries per tick (sent + received). At 100 active users = ~4000 queries/minute.
15-Minute setTimeout Memory Leak
📍 pages/Messages.jsx — sendFriendRequest()
setTimeout(..., 900000) holds a closure in memory for 15 minutes, never cleaned up if component unmounts.
Payment Allowed Before Terms Accepted
📍 pages/Booking.jsx
StripeCheckout rendered and usable even when agreedToTerms=false. User could pay without agreeing.
Zero Nights Causes $0 Booking
📍 pages/Booking.jsx — calculatePricing()
If check_in and check_out are the same day, differenceInDays returns 0, making total = $0.
Zero Automations Configured
📍 App-wide
No scheduled automations exist for: checkout reminders, review requests, booking expiry, payment retries, or inactive user cleanup.
Add Funds Buttons Do Nothing
📍 pages/Wallet.jsx — Add Funds tab
$50/$100/$200 preset buttons and custom amount field have no onClick handlers — dead UI.
Hardcoded Mock Card "4242"
📍 pages/Wallet.jsx — Payment tab
Payment Methods tab shows a hardcoded "Visa ending in 4242" placeholder — not real data.
Edit Dates/Guests Buttons Are Non-Functional
📍 pages/Booking.jsx
"Edit" buttons next to Dates and Guests in the booking summary do nothing.
Loads ALL Users (200) on Every Post Render
📍 pages/SocialProfile.jsx
Post enrichment fetches up to 200 real users + 200 synths on every loadPosts call.
Translate