Loadingβ¦
Loadingβ¦
Current delivery progress across P0, P1 and P2 work. This page reads the repository status documents on each request and refreshes every minute on staging.
Overall completion
83%
24
Done
0
Active
5
Planned
Source status: 2026-05-14
7
P0 focus
9
P1 work
13
P2 scale
20
Workstreams
100% complete
legacy helpnow.au/.git pushed to github.com/dovanlongaus-hub/helpnow-au (14 commits, origin/main @ 788d1d0). Bare repo helpnow-platform/repos/helpnow.git got a new github remote pointing at the new private repo github.com/dovanlongaus-hub/helpnow-platform; all 3 branches pushed (dev @ f2303d9, main @ d716cbc, staging @ 30badf5). Note: the prior assumption that "git push is billing-blocked" was wrong β only GitHub Actions is blocked; git push works. Re-pushes from now on should target github (bare repo) and origin (legacy).
dev rebased onto main; 3 atomic commits on dev landed via standard dev β staging β main promotion: 686aaaa (strategic upgrade docs + 2 PRDs), d0fbdde (scheduler.js schema fix), 3ddc01a (deploy-production.sh PM2 switch). All 3 branches now at 3ddc01a, all 3 worktrees clean, all 3 mirrored to github.com/dovanlongaus-hub/helpnow-platform. Legacy stash@{0} (38 files, +1475/-552 LLM search refactor) preserved as branch wip-llm-search-refactor on github.com/dovanlongaus-hub/helpnow-au β review later before merging into platform/dev. Live PM2 still serves pre-3ddc01a code until production deploy runs.
this file is canonical on dev branch and synced to main; legacy helpnow.au/PROJECT-STATUS.md replaced with redirect note.
legal entity identified as Auschain Pty Ltd (ABN 79 659 615 111) in single-source-of-truth src/lib/legal-entity.ts; embedded in footer/lp-footer/terms intro/privacy intro. Privacy already framed under Privacy Act 1988 + APPs; terms already had ACL consumer-law section. Removed 12+ unsupported claims: 4.8 star ratings (lp-header/lp-footer/page.tsx/gallery/bond-calculator/services pages/services-explorer card pill), 4.9 fallback rating on booking-tracking, provider-signup testimonial counts ('180+ jobs', '240+ sessions'), '200+ verified providers' (provider/lp-join), '2,000+ tenants' (lp/end-of-lease), '2,000+ Sydney customers' (i18n en + vi), and the JSON-LD aggregateRating blocks on cleaning/[suburb] + [service]/[suburb] pages (those were SEO-penalty risk for unsupported aggregateRating data).
google-ads-conversion.tsx helpers now fire both the GA4 named event and the Google Ads conversion. TelClickTracker global capturing listener fires phone_click for every a[href^="tel:"] site-wide (zero per-anchor changes needed). quote_started fires on booking-form step 0β1 transition, quote_submitted on a successful api.bookings.quote() response, provider_signup after the full register + enable-supply + update-supply chain in provider-signup, booking_completed in a useEffect on /booking/confirmed once isPaid is true (uses payment amount when available). Booking-form also captures UTM + referrer into lead payloads (already shipped in P0.4) so events tie back to source.
root cause was services mounting /health at app root but routes under /api/v1//*, so external requests to /api/v1/auth/health etc. returned 404 from Express. Patched all 12 service index.js to register the health handler on BOTH /health (internal smoke bypass) AND /api/v1/*/health (nginx-forwarded path) via Express array-of-paths. External health checks now reachable from outside, which lets us wire scripts/healthcheck-alert.sh cron without depending on host-side curl.
100% complete
fixed-bottom sticky price summary on lg:hidden showing the live estimate + "No payment required now" + context-aware Continue/Confirm button so mobile users don't lose the price when scrolling.
backend submitPublicQuoteSchema now enforces preferred_date >= today, AU mobile/landline phone regex, and customer_name min length; frontend booking-form canProceed() mirrors the same rules and the date input has min attribute so the calendar picker doesn't surface past dates.
placeholder +61280000000 tel: anchors on cleaning/[suburb] + [service]/[suburb] replaced with canonical +61455301335; ABN/legal entity already unified in P0.5. Search Console verification + Google-render-Next-assets robots tweak still pending separately.
5 evergreen, indexable Sydney pages added under /cleaning/ (end-of-lease-sydney, bond-cleaning-cost, same-day-cleaning-sydney, airbnb-turnover-cleaning-sydney, pricing) β total ~2,577 lines, each β 500. Server components reusing hn-* utilities + JsonLd. LocalBusiness + Service + FAQPage + BreadcrumbList structured data on each (no aggregateRating). Cross-link cluster between the 5 + /bond-calculator + /get-started. Sitemap grows to ~285 URLs.
services.ts has the 3 online categories (online-tasks, design-creative, writing-translation); navbar mega-menu, marketing services-explorer and footer all link; production /services returns them. The original 049fda9 commit was absorbed into platform main via the rebase + merge earlier in this session.
robots.ts was disallowing /_next/, which is what Googlebot fetches to render Next.js pages. Unblocking + adding the 3 new service category slugs to the allow list. Search Console verification now env-var driven (NEXT_PUBLIC_GSC_VERIFICATION) β founder pastes the real code into .env when the property is set up; no placeholder shipped.
host-local restore via verify-backup-restore.sh passed (17 tables, 162 columns). Cross-environment restore into fresh postgis/postgis:17-3.4 container surfaced 3 real DR blockers (psql \restrict portability, missing helpnow role in fresh DB, surge_pricing_log OOM on memory-capped container). Fixes shipped: scripts/backup-production-db.sh now uses --no-owner --no-acl --no-restrict --exclude-table-data=public.surge_pricing_log. Findings: docs/BACKUP-DR-DRILL-2026-05-14.md. Monthly re-drill scheduled.
Β§16 of docs/CI-CD-STAGING-LIVE-PLAN.md documents the three deploy paths (staging / production / legacy ./deploy.sh), and docs/IMPLEMENTATION-EXECUTION-RUNBOOK.md is now the canonical execution document combining product priorities, local-server CI/CD gates, deploy matrix, rollback/DR checks, and CI/CD hardening backlog.
live state documented in docs/CLOUDFLARE-CONFIG-2026-05-14.md. HTML is cf-cache-status: DYNAMIC, /_next/static/* cached 1y immutable. No CF API token on host β no automated purge. Founder must verify in CF dashboard: HTML caching rule, error TTL, WAF on /api/v1/*, free-plan TTL caps.
62% complete
added docs/SYDNEY-SERVICE-DEMAND-TOP10-2026.md so HelpNow planning covers top Sydney local-help categories beyond cleaning: cleaning, removals/moving, handyman/assembly, gardening, specialist cleaning, plumbing, electrical, pest control, aged/disability non-clinical help, and painting/small reno. P0 launch cluster is documented as the βmoving lifecycleβ. New Β§7 specifies an AI Market Research + Hot Task Suggestion Agent to recommend hot tasks to customers and optional hot categories providers may add, with admin approval, analytics tracking, and an explicit rule that suggestions are non-blocking: providers can skip them, list other legitimate capabilities, remain listed, and still be matched where appropriate. REQUIREMENTS.md now carries the same non-blocking requirement.
added docs/AI-COMPETITOR-RESEARCH-AGENT.md and synced REQUIREMENTS.md / implementation runbook. The agent researches similar public marketplaces, proposes feature/function upgrades with source-backed evidence, and requires admin/product approval before any recommendation enters the backlog.
added docs/IMPLEMENTATION-WORK-PACKAGE-STANDARD.md. Every non-trivial task now requires clear owner/supporting roles, detailed research notes, priority, API/module boundaries, dependencies, parallel-agent execution plan, acceptance gates and future-extension notes before coding.
added docs/ENTERPRISE-IMPLEMENTATION-OPERATING-MODEL.md. Major initiatives now require CEO/C-level role flow, research group, product/project management, architecture, module/API decomposition, parallel agent execution, full testing, UX/UI review, business readiness, manual go-live and post-launch finance/marketing/sales review.
added docs/REQUIREMENT-INTAKE-CHANGE-CONTROL.md. Every new request now requires requester/source, target object, owning department, accountable owner, PM/assigner, executor roles, priority, timeline, roadmap slot, product/function breakdown, API/module impact and business impact labels before implementation.
30β50 Sydney cleaners in CRM with service areas, rates, availability, verification status
real reviews, before/after photos, case snippets
backend was already 100% (migration 006 bookings.recurring_bookings, 7 routes under /api/v1/bookings/recurring/*, Bull-queue scheduler daily at 14:00 UTC). Wired the frontend: api.bookings.recurring.{create,list,update,cancel,skipNext,pause,resume} in api-client, new /customer/recurring page (list + create modal + pause/resume/skip/cancel actions, mobile-responsive) and a callout card on the main customer dashboard. Customer can now self-serve recurring plans. Note: scheduler still uses hard-coded HOLIDAYS_2026 array β migrate to a public.holidays table when 2027+ matters.
schema gap closed by migration 023_files_metadata_align.sql β renames uploaded_by β user_id, storage_path β stored_path, original_filename β original_name, drops unused filename/storage_provider/bucket, adds booking_id (FK to bookings.jobs) + file_type + category (with CHECK + indexes for the gallery pair query). Wired the FE photo upload UI to /booking/tracking/[id]: two drag-target cards "BEFORE" / "AFTER" appear once the booking is completed, call api.files.upload(file, category, bookingId), count uploads, show progress + error. Gallery query at /api/v1/files/gallery already filters for matching before+after pairs from completed bookings, so a complete cycle (review submitted + before + after photos uploaded) now lands as a real /gallery entry instead of a placeholder.
scripts/healthcheck-alert.sh probes each of the 12 services' /health + frontend /; per-service failure counter pages founder via notification-service WhatsApp on THRESHOLD consecutive failures (default 2 = 10 min for a 5-min cron), recovers and pages on flip back. Cron is live (*/5 * * * *); log file: shared/logs/healthcheck-alert.log; state files: shared/logs/healthcheck-state/. All 13 services initialised to up. While enabling, discovered the legacy helpnow.au/backend/scripts/backup-db.sh cron was silently failing (producing 20-byte empty gzips) and monitor.sh had not run since 2026-05-11. Crontab now points production backups at the platform script (shared/backups/) + adds a daily retention sweep; legacy backup-db.sh + monitor.sh entries removed.
exact high-intent Sydney cleaning keywords