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
| Domain | Lead | Why it shines |
|---|---|---|
| Wali & family bridge | Sha | Relational trust, soft invitation |
| Kadi / pejabat slot, witnesses | R | Structural gatekeeping |
| Hall contract, budget cap | R | Provider frame, money discipline |
| Catering, invites, decor, attire, MUA | Sha | Beauty, hospitality, atmosphere |
| Photographer + timeline | R | Execution 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
| # | Item | Crit | Lead | Budget (RM) | Time | Week | Source | Status |
|---|
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
| Category | Min (RM) | Max (RM) | Status | PIC | Per item (min) | Notes |
|---|
Venue acceptance test
| Check | Why |
|---|---|
| Authority to host nikah | Masjid/pejabat must be licensed for akad |
| Capacity ≥ 80 (elderly seating) | Enough room; elders first-row / easy access |
| 7–11AM access | Breakfast window only |
| Drop-off + parking | Elderly guests |
| Toilets + prayer/ablution | Wudhu for guests & officers |
| Weather backup | If 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
—
| Group | Name | Goody bag | Status | Key person | Notes |
|---|
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.
| Category | Vendor | Link | Status | Lead | Budget (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 item | Est. time | Suggested slot | Calendar 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(serveshttp://localhost:8787). Hosted: deploycalendar-proxy-worker.jsas 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.