Overview

Simple private breakfast nikah · her side first · 7:00–11:00AM · RM5k–7.5k
Sync: idle

Feasibility verdict 6-week recommended

Loading…
Feasibility
Critical blockers
Budget band
RM5k–7.5k
Core est. (RM)

Current focus (this week's blockers)

    Budget guardrail

    Lean core range (RM)
    3,860 – 6,760
    10% reserve recommended on top of the core. Sheet values (if populated) reconcile against this in the Budget tab.

    Role split shine

    DomainLeadWhy it shines
    Wali & family bridgeShaRelational trust, soft invitation
    Kadi / pejabat slot, witnessesRStructural gatekeeping
    Hall contract, budget capRProvider frame, money discipline
    Catering, invites, decor, attire, MUAShaBeauty, hospitality, atmosphere
    Photographer + timelineRExecution ownership, holds the frame

    Critical checklist synced with “4-6-week plan” sheet

    Blocker High Med Low · Lead: Sha R Both
    #ItemCritLeadBudget (RM)TimeWeekSourceStatus
    Status is read from the 4-6-week plan tab's Status column. Edit it in the Sheet — the dashboard does not write to the Sheet.

    Plan selector

    Sheet min (RM)
    Sheet max (RM)
    +10% reserve (RM)
    Catering / pax (RM)
    cap ≤ RM15/pax
    Sha pays (RM)
    R pays (RM)

    Sheet budget synced with “Budget” sheet

    CategoryMin (RM)Max (RM)StatusPICPer item (min)Notes

    Venue acceptance test

    CheckWhy
    Authority to host nikahMasjid/pejabat must be licensed for akad
    Capacity ≥ 80 (elderly seating)Enough room; elders first-row / easy access
    7–11AM accessBreakfast window only
    Drop-off + parkingElderly guests
    Toilets + prayer/ablutionWudhu for guests & officers
    Weather backupIf any outdoor element

    Seating & tables

    Elderly (green) seated first-row / easy access; family (amber) near; couple + VIP (purple) front. 8 per table.
    Elderly Family Couple/VIP

    Guest list synced with “kahwin-guest” sheet

    Guests
    Goody bag
    Groups
    GroupNameGoody bagStatusKey personNotes
    Vendors tracked
    Booked / confirmed
    Deciding (shortlist → deposit)

    Vendor decision board synced with “Vendors” sheet

    Populate vendor names, links and status in the Vendors tab of the Sheet. Nothing here is a commitment or a booking.
    CategoryVendorStatusLeadBudget (RM)Notes

    Google Calendar adaptation read-only

    Not connected Not connected
    On Cloudflare / any device: click Connect my Calendar (uses the Web client ID in Settings) and Connect Razlan (he logs in with his own Google account). Both merge into one view — his events tagged [R]. Locally: if calendar-proxy.py is running on your Mac, Connect my Calendar uses it automatically (no login). Read-only (scope calendar.readonly) — never creates or edits events.

    Suggested slots for checklist auto · merged calendar

    Connect a calendar to auto-suggest time slots for the critical checklist and flag clashes.
    Checklist itemEst. timeSuggested slotCalendar in that week

    Detected changes

    Connect a calendar to see event deltas.

    Capacity-aware suggestion

    No calendar signal yet.

    Dashboard → Sheet mapping

    Detected changes (added / updated / deleted)

    LLM agent desk copy-only

    Copy any prompt into an LLM you trust. Boundary: the agent can surface, estimate and draft — Sha + R decide, send, book and commit.
    Prompt
    Select a prompt above.

    How to use Kahwin Berkat README

    1 · Run locally

    cd kahwinberkat
    python3 -m http.server 4173
    # open http://localhost:4173/
    Opening index.html directly may block Google requests (CORS). Keep the server running.

    2 · Connect your Google Sheet

    • Sheet is already wired (ID 1qjRwzVgZjnKr2x36VV2gSWUc1nDoNE2ZM_vjr1S1H-o).
    • Dashboard tabs map to Sheet tabs: Critical checklist → “4-6-week plan”, Budget → “Budget”, Venues & tables → “kahwin-guest”, Vendors → “Vendors”, plus kahwin + kahwin-master.
    • Share the Sheet as Anyone with the link → Viewer so the browser can read it.
    • Click Sync now — rows load; the Sheet sync log shows added / edited / updated / deleted.

    3 · Connect your Calendar (proxy = persistent, no OAuth)

    • Local: run python3 calendar-proxy.py (serves http://localhost:8787). Hosted: deploy calendar-proxy-worker.js as a Cloudflare Worker and paste its URL in Settings.
    • In Settings, set Calendar proxy URL (local or hosted) and Your Calendar ID = primary.
    • On the Calendar tab, click Connect Calendar → it reads your calendar with no browser login, then suggests checklist slots and flags clashes.

    4 · Add Razlan's calendar (Option A)

    • Razlan shares his Google Calendar with your Google account (Google Calendar → share → your email, at least "See all event details").
    • In Settings, paste his calendar ID into Razlan's shared Calendar ID.
    • Click Connect / Check now — both calendars merge into one view; his events are prefixed [R].
    • Read-only. Nothing is written back to either calendar.

    5 · Tabs

    Overview (feasibility + spending) · Critical checklist (P1→P4, synced to “4-6-week plan”) · 4/6-week plan · Budget (synced to “Budget”) · Venues & tables (guest list from “kahwin-guest”) · Vendors (synced to “Vendors”) · Calendar adaptation (suggested slots + clashes) · Sheet sync log (mapping + changes) · LLM agent desk · Settings.

    6 · Privacy & limits

    • Your Google OAuth token stays on your Mac (read by the proxy). The dashboard never stores it.
    • Browser OAuth (fallback) needs a Google Web client ID in Settings — not the Desktop client.
    • The Sheet is the shared source of truth; the dashboard only reads it.
    • This is a planning scaffold, not legal advice. Verify wali / witnesses / forms / fees / certificate with the authorised pejabat (JAWI/JAIN/JAIS/kadi).

    Settings

    Planning

    Drives the Plan tab + feasibility verdict.
    Leave blank for relative-week mode. Set only after Sha + R choose.

    Sheet sync

    How often to re-fetch the mapped Sheet tabs.
    Only if direct gviz calls are blocked by CORS.

    Calendar

    Local: http://localhost:8787 (calendar-proxy.py). Hosted: paste your Worker URL (calendar-proxy-worker.js). Leave blank for browser OAuth.
    Defaults to primary. Used by the local proxy.
    Razlan shares his Google Calendar with your account; paste his calendar ID. Read via the same proxy.
    Only if NOT using the local proxy (e.g. public URL on another machine). Web client ID, not a secret.

    Local data

    Status overlays + sync metadata live in browser localStorage. The Sheet is never written by this dashboard.