Luthuli pilot — dashboard, bookings, chat, staff roster, client report - #2
Open
imbilawork wants to merge 30 commits into
Open
Luthuli pilot — dashboard, bookings, chat, staff roster, client report#2imbilawork wants to merge 30 commits into
imbilawork wants to merge 30 commits into
Conversation
Moved simulations out of cramped card interiors into a shared full-width panel that appears below the card grid: - Card click → highlights card border green - Panel slides in below with header (icon + title + close button) - Content renders at full page width with readable font sizes - Close button (×) or click another card to switch - Auto-scrolls panel into view - Tables use 13px font, proper padding - Dropdowns use 12px font, 6px padding - Takeoff results at 12px with 1.8 line height Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ddleware conflict) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Partner profile: - SA's largest sectional title developer (JSE: BWN) - 56,426 apartments, 98 developments, R3B+ revenue - Edge Green + 6-Star certified - Full Balwin World ecosystem mapped (10 services) - Skills: biz/openbim, biz/estate-management - Links to SmartBIM demo and AI Construction page SmartBIM concept demo — Balwin World × openBIM: - Central hub: IFC Model connects all ecosystem services - 6 clickable ecosystem spokes, each expands to show: - What the service does - Exact IFC classes that connect it to the model - What AI enables at Balwin's scale (56K units) - Live metrics Ecosystem drill-downs: - Fibre: IfcCableSegment, bandwidth prediction, IoT backbone - Green Living: IfcSolarDevice, 42MW installed, R186M/yr saved - Technik: IfcDoor access points, 2,400 cameras, person detection - Infrastructure: federated design, clash detection, 4D programme - Rentals: IfcSpace→unit, condition tracking, vacancy prediction - Lifestyle: occupancy analytics, equipment maintenance, 12,400 members Portfolio dashboard: 56K units, 42MW solar, 99.2% fibre uptime, R186M energy saved, 94% occupancy, Edge Green certified Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…rtner Trevor Glaister / Optimal Tech as Premium Build Partner, 1M tokens. Partner profile with: - 10-item Microsoft stack grid (Azure, M365, D365, Power Platform, Azure AI, Intune, DevOps, Entra ID, Sentinel, Copilot) - 16 capabilities - 4 skills: azure-cloud, microsoft-365, dynamics-365, enterprise-security - "Why this matters" — bridges AI-native dev with enterprise Microsoft Hub section under Technology category. PIN: trevor / 7334 / scope: optimaltech Welcome email drafted (Trevor.Glaister@OptimalTech.co.za, CC craig@2nth.ai) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Added to partner profile: - "2nth.io Compute Partner" section with badge - "First Partner to Offer 2nth.io Compute" headline - 4 stats: 12+ templates, 6 Hetzner locations, R750/mo, AI managed - Links to 2nth.io platform and showcase - Explanation: deploy ERPNext, TwentyCRM etc. for their clients Hub section: - Added "2nth.io Compute — First Partner" link - Shows authorised reseller status Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Full partner explainer showing Trevor how to sell 2nth.io + 2nth.ai: Proposition flow: You (sell) → 2nth.io (provision) → Hetzner (host) → Client (use) How it works: 6-step table from client request to live platform in 4 minutes. ASCII deployment diagram showing the full chain. 12 templates: ERPNext, TwentyCRM, Nextcloud, n8n, Metabase, Gitea, Grafana, MinIO, Directus, Plausible, Mattermost + custom. Margin model: - Single client: R5K in, R2.5K cost = R2.5K margin - Full stack (4 platforms): R10K in, R5.5K cost = R4.5K margin - Plan table: Starter/Pro/Enterprise with cost, charge, margin Client conversations: 4 realistic scenarios with suggested responses (ERP vs SAP, file sharing, dashboards, onboarding automation) 2nth.ai integration: AI reports on ERPNext, smart automation via n8n, natural-language Metabase dashboards CTA: "Your first client deploy is free" Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… API Three AI agent interfaces for lodge management: - Guest agent (WhatsApp-style) — bookings, availability, pricing, lodge info - Staff agent (SMS-style) — schedules, leave requests, room status - Manager agent (chat + dashboard) — occupancy, revenue, staff, approvals Backend API with D1 schema, intent detection, OTP auth via Resend. Client-side fallback for demo without API. Craig & Guy auto-enrolled as admins. Also adds repos.html partner repository browser. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix input bar cut off on mobile browsers (use visualViewport + 100dvh) - Add feedback thumbs up/down on guest and staff agent responses - Add Agent Learning Log panel to manager dashboard with filters, notes, CSV export - Log all chat exchanges to localStorage for review Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Increase padding-bottom to 16px + 20px safe-area fallback (was 6-8px + 0px) - Bump input field min-height to 44px (Apple HIG touch target) - Increase send button to 44-46px tap target - Larger font size (16px) to prevent iOS auto-zoom on focus Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add scrollable quick menu bar above input in all 3 chats - Guest: Availability, Pricing, Pavilions, Book, Guides, Directions - Staff: Schedule, Coverage, Guests, Leave, Room ready - Manager: Occupancy, Revenue, Staff, Bookings, Leave, Systems - Fix viewport: use 100dvh + -webkit-fill-available + relative positioning - Bigger input targets (44px min) with generous bottom padding Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Dashboard restructured into 4 tabs - Staff tab: 4-week coverage calendar with rotation logic, leave requests, stats - Finance tab: revenue cards, PH commission, levy breakdown per booking - Maintenance tab: solar/water status, task list (offline placeholders) - Agent Learning Log moved to overlay - Coverage calendar shows both staff per day with guest booking bars Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…rea) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- All chat bars: padding-bottom 44px + 28px safe area (72px total) - GET /api/luthuli/reset — show data counts - POST /api/luthuli/reset — action: reset | clear | seed Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…nfirmations - Email helper sends to guy@rumf.co.za + hamlin@mweb.co.za on new bookings - Guest gets confirmation email with booking details + levy breakdown - Manager can toggle: "emails on" / "emails off" via chat - Toggle state persisted in KV - Beautiful HTML email templates matching Luthuli earth-tone branding - CC managers on guest confirmations Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…lendar - transformBookings() converts API format (arrive/depart/source/guest_name) to calendar format (start/end/type/name) - Calendar, booking modal, and levy breakdown all use live D1 data - Fallback to demo data only when API unavailable - Modal shows full booking details (adults, children, guide, email, total) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- New LIVE PILOTS category at top of hub (before Technology) - Luthuli Lodge group with highlighted border showing all 5 entry points - Manager Dashboard featured prominently with admin note - Guest Agent, Staff Agent, Lodge Dashboard, Platform Concept linked - Removed old Luthuli entry from Technology section Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…t, not last night) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace broken day-cell calendar with Gantt timeline (pavilion rows × day columns) - Booking bars span full duration with color coding (owner/direct/PH/pending) - Google Calendar export + .ics download for all bookings - Sticky pavilion labels for mobile horizontal scroll - Coverage calendar shows guest presence for Sunday work rules Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Plan tab with 3 tiers: Live Now (9 items), Coming Next (7 items), Future Enterprise (9 items) - Data Architecture section showing current D1 schema + planned additions - Integration Map: connected, next, future, infrastructure - Email inbox processing, WhatsApp API, SMS gateway, payments in Coming Next - Multi-property, OTA channel manager, IoT, voice AI in Future - 2nth.ai branding as scalable enterprise template Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Dark earth background with sage border — stands out clearly - Larger text (11px, 700 weight), more padding - Higher z-index (200) to stay above everything - More bottom padding on app body so content doesn't hide behind tabs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ge row, guest overlay - Horizontal scrollable table: dates across top, staff as rows - Each cell shows ON/OFF/SUN/L with clear color coding - Guest row shows amber dots where bookings exist - Coverage row shows 2/1/⚠ per day (red for gaps) - Stats cards above roster showing cycle day + leave remaining - Uses real D1 booking data for guest presence on Sundays - Summary bar with coverage percentage Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Comment on lines
+659
to
+664
| document.getElementById('live-endpoints').innerHTML = endpoints.map(e => ` | ||
| <div style="background:var(--c-graphite);border:1px solid var(--c-border);border-radius:8px;padding:16px"> | ||
| <div style="font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:1px;text-transform:uppercase;color:var(--c-brand);margin-bottom:4px">${e.label}</div> | ||
| <div style="font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--c-titanium);font-weight:600;margin-bottom:2px;word-break:break-all">${e.value}</div> | ||
| <div style="font-size:12px;color:var(--c-steel-600)">${e.desc}</div> | ||
| </div>`).join(''); |
| `[${hostname}] Published to 2nth/${hostname}/telemetry`, | ||
| ]; | ||
| msgs.forEach((m,i) => setTimeout(() => { | ||
| lterm.innerHTML += `<div>${m}</div>`; |
|
|
||
| // ─── Helpers ───────────────────────────────────────────────── | ||
| function log(el, msg, cls) { | ||
| el.innerHTML += `<div class="${cls||''}">${msg}</div>`; |
| html += '</span>'; | ||
| html += '</div>'; | ||
|
|
||
| row.innerHTML = html; |
| bubble.appendChild(p); | ||
| } | ||
| const container = document.createElement('div'); | ||
| container.innerHTML = htmlContent; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
23 commits covering the Luthuli pilot buildout on the Developers hub — partner showcase, manager tooling, guest-facing flows, and client reporting for Guy.
Partner Hub
Manager Dashboard
Bookings & Calendar
Staff Roster
Chat (guest, manager, staff)
Notifications
Client Report for Guy
send-reportemail endpoint (sends to Guy and Craig)Mobile & Misc
Scope
39 files changed · +11,155 / −178
Test plan
/api/send-reportendpoint delivers to Guy + Craig🤖 Generated with Claude Code