Overview

Simple private breakfast nikah · her side first · 7:00–11:00AM · RM5k–7.5k
Feasibility
Critical blockers
Budget band
RM5k–7.5k
Core est. (RM)

Feasibility verdict 6-week recommended

Loading…

Current focus (this week's blockers)

    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

    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.

    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

    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.
    CategoryVendorLinkStatusLeadBudget (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.
    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

    Drives the Plan tab + feasibility verdict.
    Leave blank for relative-week mode. Set only after Sha + R choose.
    How often to re-fetch the mapped Sheet tabs.
    Only if direct gviz calls are blocked by CORS.
    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.