KATURA
Your browser is not supported. Please update your iPad to the latest iOS version, or visit us on a newer device.
How to update your iPad Skip to main content JOIN THE WORLD OF KATURA Be the first to discover new collections, exclusive events, and the stories behind our legendary creations.
Katura—Crafting timeless treasures since 1999.
Are You a Jewelry Business? E-commerce, CRM, marketing, payroll, analytics, and AI — everything you need to run a modern jewelry business, all in one platform.
© 2026 KATURA. All rights reserved.
Software Updates · KATURA | KATURA
Live from GitHub · Refreshed continuously
Software Updates Every change we ship to katura1999.com — features, fixes, security patches, the lot. Pulled straight from our private GitHub repository so you can see exactly what was built and when.
By the numbers Lines of code
751,820
across the entire repo (equivalent to 37.0 King James Bibles)
Characters written
29.13M
29,126,188 total characters
Updates pushed
1,573
exact commit count on main
Current version
v1.15.73
build 1573 · 6d58963
Database models
366
across 47 schema files — most SaaS platforms have 20–50
API endpoints
854
individually routed — Stripe's public API has ~400
Translated strings
79,872
every string, in 24 languages
System permutations
10^257
2^854 endpoint combinations — more than atoms in the observable universe (10^80)
Project age
4mo 29d
since Dec 14, 2025
Pre-AI dev hours
25.1K hrs
751,820 lines ÷ 30 LOC/hr — equivalent to 12.0 years (senior engineer, no AI)
With-AI dev hours
6.3K hrs
4× AI productivity multiplier (2024–2026 studies) — equivalent to 783 days
Equivalent firm cost
$6,479,141
live ticker · $60/hr ongoing
Hours estimated from source line count at 30 LOC/hr (industry benchmark for production-quality TypeScript/React without AI assistance), with a 4× multiplier for AI-assisted development per published 2024–2026 enterprise studies. Equivalent Firm Cost uses a $250/hr loaded billable rate reflecting a premium engineering firm building enterprise-grade SaaS — and ticks up live, because the project is still being actively built.
Commit history
1,573 updates pushed Showing page 16 of 33 · 751–800 of 1,643 fetched
Monday, February 16, 2026 8 updates pushed
Update 2:37 AM · ZRosserMcIntosh
consistent solid black logo for OG social previews Fixed katura-logo.png: charcoal grey pixels (RGB 35,31,32) in 'KATURA EST 1999' text now solid black (RGB 0,0,0) to match the LWM monogram — no more inconsistent colors on dark backgrounds Created katura-og.png: properly sized 1200x630 OG image with solid black logo on white background for crisp social previews Updated defaultOgImage in SEO config to use new katura-og.png Updated hardcoded OG image refs in platform/docs and design-your-ring Update 2:25 AM · ZRosserMcIntosh
resolve TypeScript errors blocking Vercel deployment Fixed checkApiRateLimit mock return types in api-security.test.ts and load-testing.test.ts — added missing 'limit' and 'current' fields to match the real function signature Fixed Record<string, string> type cast in load-testing.test.ts Removed stale .next/types and .next/dev/types cache referencing deleted platform/docs page files 1:59 AM · ZRosserMcIntosh
Phase 14: Load Testing 14 load & performance tests (src/lib/__tests__/load-testing.test.ts) Concurrent API Authentication: 50-200 simultaneous requests Rate Limiting Under Load: burst traffic, multi-tenant isolation, fail-open Redis Cache Layer Performance: concurrent reads/writes, no thundering herd Latency Measurements: sequential auth, rejection short-circuit, memory pressure Scope Enforcement Under Load: read/write consistency, admin override at scale Confirmed: no race conditions, proper tenant isolation, fail-open rate limiting Full suite: 332 tests, 18 files, 0 failures Documentation: PHASE-14-LOAD-TESTING.md + BUILD-STATUS.md updated 1:54 AM · ZRosserMcIntosh
Phase 13: Security Audit & Hardening Created centralized API security middleware (src/lib/api-security.ts) withApiAuth(): combined auth + per-tenant rate limiting + scope enforcement authenticateApiKey(), requireScope(), checkTenantRateLimit() apiResponse(), apiError(), isErrorResponse() helpers Standardized error codes and security headers on all responses Fixed rate limiting gaps on 3 unprotected form endpoints: /api/consultation — added checkRateLimit('leads') /api/engagement-design — added checkRateLimit('leads') /api/bespoke/inquiry — added checkRateLimit('leads') Refactored 4 tenant API routes to use shared withApiAuth(): /api/tenant/v1/products (GET/POST) /api/tenant/v1/products/[id] (GET/PUT/DELETE) /api/tenant/v1/customers (GET) /api/tenant/v1/orders (GET) Eliminates duplicated authenticateApiKey() and adds per-tenant rate limiting 28 new security tests (src/lib/__tests__/api-security.test.ts) Full suite: 318 tests, 17 files, 0 failures Documentation: PHASE-13-SECURITY.md + BUILD-STATUS.md updated 1:26 AM · ZRosserMcIntosh
Phase 12: Comprehensive test suite — 290 tests, 0 failures constants.test.ts: 36 tests — tenant zero, plans, domains, roles, features, limits onboarding.test.ts: 31 tests — checklist integrity, completion, step management website-builder.test.ts: 37 tests — section CRUD, definitions, immutability feature-flags.test.ts: 19 tests — cascade logic, tenant zero bypass, admin ops plans.test.ts: 22 tests — lookups, entitlements, plan change validation tenant-queries.test.ts: 23 tests — storefront resolution, queries, dashboard data plans.ts: Added missing design-studio feature description 23 locale files: Added missing sanctions/capTable/docs translation keys middleware.test.ts: Updated from 10 to 24 locales, mocked next-intl safe-logger.test.ts: Removed broken Object.defineProperty on process.env topology-graph.test.tsx: Fixed ambiguous getByText → getAllByText translations.test.ts: Dynamic locale discovery, covers all 24 locales 1:02 AM · ZRosserMcIntosh
Comprehensive website builder documentation (6 new docs, ~2,500 lines) WEBSITE_BUILDER_ARCHITECTURE.md: Component tree, data flow, drag-and-drop engine, state management, theme resolution pipeline WEBSITE_BUILDER_SECTIONS.md: All 26 section types with complete props tables, defaults, rendering notes, extensibility guide WEBSITE_BUILDER_UX_GUIDE.md: End-to-end usage guide — adding sections, drag-and-drop, smart property editor, viewport preview, page management, undo/redo, keyboard shortcuts, plan gating WEBSITE_BUILDER_API.md: Full REST API reference with request/response examples for all 7 endpoints, error codes, data models WEBSITE_BUILDER_THEMES.md: 5 seeded themes documented, color/font/layout token system, three-layer merge resolution, custom overrides WEBSITE_BUILDER_DATA_MODEL.md: ERD, all 3 tables with column details, JSON schemas, indexes, constraints, query patterns Updated WEBSITE_BUILDER.md as central index linking to all detailed docs Updated BUILD-STATUS.md with current commit and corrected section count (26 types) 12:46 AM · ZRosserMcIntosh
Complete all 133 docs articles + match platform styling Write all 76 remaining documentation articles across 19 sections Restyle docs hub, sidebar, category, and article pages to match main Katura platform (stone palette + Playfair Display headings) Replace all purple accent colors with stone-based palette Add cross-links between related articles throughout Update shopify-parity README to reflect 133/133 completion Update 12:06 AM · ZRosserMcIntosh
platform sign-in flow — auto-sign-in after signup, login page, correct redirect auth.ts: Dynamic tenant resolution in authorize() — looks up SaasTenant by ownerUserId instead of hardcoding tenant_katura for all users signup-form: Auto signIn('credentials') after successful signup API call, redirect to /platform/admin instead of /admin New /platform/login page with dedicated tenant sign-in form Platform layout header: added 'Sign In' link platform-admin.ts: redirect unauthenticated users to /platform/login instead of /platform/signup Sunday, February 15, 2026 17 updates pushed
Update 11:50 PM · ZRosserMcIntosh
enable moddatetime extension and use extensions schema in engineering migration 11:46 PM · ZRosserMcIntosh
Phase 11: Redis caching, engineering services, admin context switcher Add Upstash Redis caching layer (src/lib/cache/redis.ts, tenant-cache.ts) Cache-through for tenant, plan, entitlement lookups (5-15 min TTL) API rate limiting via Redis counters Graceful fallback when Redis not configured Full invalidation API (per-tenant, per-plan, nuclear) Add Engineering Services (src/lib/saas/engineering.ts) 8 service types (custom feature, integration, hotfix, retainer, etc.) Hourly billing with time tracking per engineer Status flow: proposed → approved → in_progress → review → completed Enterprise custom feature catalog (10 pre-scoped features) Tenant extensions registry (foundation for custom code) Add Engineering API (src/app/api/admin/saas/engineering/route.ts) POST actions: create, list, get, update_status, add_entry, get_entries, catalog GET: Quick summary (active, proposed, completed, total billed) Auto-calculates total hours and billing on completion Add Engineering Dashboard (src/app/admin/saas/engineering/page.tsx) Engagements list with status cards and time entries New engagement dialog with tenant/type selection Time entry logging with git commit references Saturday, February 14, 2026 16 updates pushed
Feature 5:27 PM · ZRosserMcIntosh
platform admin dashboard + route architecture Add /platform/admin tenant dashboard with 10 scaffolded pages Create platform-admin context resolver with auth, tenant lookup, feature gating Build plan-aware sidebar with mobile support and feature-gated nav items Build platform admin header with tenant info, plan badge, user menu Scaffold pages: products, collections, orders, customers, analytics, marketing, design, settings, billing, dashboard Fix header logo: use header-logo.png consistently across store and platform Add billing engine (billing.ts) and plans system (plans.ts) Add SaaS billing API routes and webhook handler Update route architecture docs and admin feature parity matrix Update middleware comments for /platform/admin coverage Update 4:18 PM · ZRosserMcIntosh
resolve all enterprise route type errors — map code fields to actual Prisma schema compliance/route.ts: requestedBy→subjectUserId, requestedEmail→subjectEmail, remove dataScope, exportUrl→downloadUrl compliance/[id]/route.ts: exportUrl→downloadUrl locations/route.ts: address→addressLine1, zipCode→postalCode, remove isPrimary, metadata→settings, add required code field Friday, February 13, 2026 9 updates pushed
11:09 PM · ZRosserMcIntosh
Fix audit logs 500 error: batch IP geolocation requests and add timeout 10:28 PM · ZRosserMcIntosh
Fix module resolution and build issues Docs 10:17 PM · ZRosserMcIntosh
comprehensive client-facing platform overview (10,000+ words, all 17 modules) Update
Service catalog and custom features browser
Add Admin Context Switcher (src/components/admin/context-switcher.tsx)
Visual toggle: Store Admin (gold) vs Platform Admin (purple)
Keyboard shortcut: ⌘⇧P to toggle
Compact mode for mobile
Add Prisma models: SaasEngagement, SaasEngagementEntry
Relations on SaasTenant
SQL migration: add_engineering_services_tables.sql (idempotent)
Update SaaS sidebar: add Engineering under Services
Update barrel exports in src/lib/saas/index.ts
Install @upstash/redis dependency
All compiles clean (npx tsc --noEmit = 0 errors) Docs 11:16 PM · ZRosserMcIntosh
update BUILD-STATUS.md — mark Intelligence + Services as complete Feature 11:14 PM · ZRosserMcIntosh
Katura Intelligence (AI Translation) + Professional Services Portal GPT-4o/4o-mini powered content translation Jewelry-specific terminology dictionary (100+ terms, 10 languages) Credit-based billing (plan-included + add-on packs) Luxury brand voice preservation Human approval workflow 24 supported languages matching platform locale support Prisma models: SaasTranslation, SaasAiCreditUsage, SaasAiCreditPurchase Design Studio (Antar Hall): CAD, 3D rendering, sketches, packaging, brand identity Marketing Services (Stella Barbosa): SEO, social media, email, content, PPC, strategy Service request workflow: submitted → reviewing → quoted → approved → in_progress → completed Prisma models: SaasServiceRequest, SaasServiceEntry 8 design service types, 8 marketing service types with full pricing Feature 10:39 PM · ZRosserMcIntosh
full platform migration engine — Shopify & WooCommerce connectors migration-shopify.ts: Full Shopify Admin REST API connector Credential validation, paginated data fetching (products, customers, orders, collections) Data transformers (Shopify → Katura format) preserving source IDs for parallel run 301 redirect generator (Shopify URLs → Katura URLs) Export helpers: nginx, vercel.json, CSV formats Rate limit handling with retry logic migration-woocommerce.ts: Full WooCommerce REST API v3 connector HTTP Basic Auth, paginated fetching with X-WP-Total/X-WP-TotalPages headers Products (with variations), customers (billing/shipping), orders, categories Data transformers with stock status, order status, fulfillment status mapping 301 redirect generator (WooCommerce permalink patterns → Katura URLs) migration-engine.ts: Central orchestrator Credential validation → count estimation → sequential migration → redirect generation Entity-by-entity progress tracking via SaasDataImport records Options: skipExisting, mergeDuplicates, generateRedirects, parallelRunMode, dryRun Partial failure recovery — individual record errors don't stop the migration MigrationResult type with per-entity breakdown /api/admin/saas/migrations: POST endpoint with validate/estimate/start actions /admin/saas/migrations: Multi-step migration wizard UI Source selection (Shopify 🟢, WooCommerce 🟣) Credential entry with platform-specific fields Record count estimation with time estimate Data type selection + migration options Migration history with status tracking Added 'Migrations' entry to SaaS sidebar under Integrations (with 'New' badge) Docs 10:28 PM · ZRosserMcIntosh
Phase 9 admin parity documentation + build status + updated README & parity audit Created PHASE-9-ADMIN-PARITY.md with comprehensive details on all 4 features Created BUILD-STATUS.md with complete platform build overview Updated README.md — all 10 phases marked as ✅ Complete Updated ADMIN-FEATURE-PARITY.md — all 4 gaps marked as ✅ Built (commit a157335) Feature 3:30 PM · ZRosserMcIntosh
admin feature parity — feature flags, webhooks, data import, GDPR compliance Page: toggle, search, stats dashboard for SaasFeatureFlag records API: GET (list) + PATCH (toggle enabledForAll) Page: create/delete endpoints, event category selection, delivery history API: GET + POST + DELETE, scoped to TENANT_ZERO_ID Page: CSV upload with preview, field auto-mapping, import history API: GET (list jobs) + POST (upload & start), uses data-import.ts engine Page: create/manage data export, deletion, rectification requests API: GET + POST + PATCH, uses SaasComplianceRequest model admin-navigation.ts: added 4 nav items (ToggleRight, Webhook, Upload, Shield) admin-i18n-provider.tsx: added translation keys (EN + PT) Feature 2:47 PM · ZRosserMcIntosh
add Quick Discount UI to /admin/products and /admin/collections Add QuickDiscount reusable component with create/view/remove discount UI Add discount API routes for products (/api/admin/products/[id]/discount) Add discount API routes for collections (/api/admin/collections/[id]/discount) Both create Promotion records behind the scenes so discounts flow through the existing promotion system and appear on all storefront pages Discount card shows on product edit page (below Pricing section) Discount card shows in collection edit dialog Add getActiveProductDiscountsWithNative() that combines promotion-based discounts with the Product model's native salePrice field as fallback Update all storefront pages to use the combined discount resolver Feature 1:49 PM · ZRosserMcIntosh
display promotion sale prices on storefront Add getActiveProductDiscounts() utility that resolves active promotions (PERCENTAGE + FIXED_AMOUNT) to per-product sale prices via React.cache() Show sale price in red with original price strikethrough on: Category pages (ProductCardWithVideo via CategoryProducts) Collection pages (local ProductCard in CollectionProductsClient) Product detail pages (CurrencyPrice with promotion-aware display) Expand collection-targeted promotions to individual products Respect excludedProductIds and date ranges Deepest discount wins when multiple promotions apply Update MetaPixel tracker to report promotion sale price 5:25 AM · ZRosserMcIntosh
Phase 16: Design Studio -- tenant-scoped CAD files + Katura Studio delivery Add DesignFile model (Prisma): tenant-scoped file metadata with source enum (TENANT | KATURA_STUDIO), file type classification (CAD_3D, RENDER, SKETCH, TECHNICAL, OTHER), version tracking, designer notes, folder organization, and tag support Add DesignFileType, DesignFileSource, DesignFileStatus enums Add migration: migrations/add_design_file_table.sql Add design-studio feature key to FEATURES constants Create /platform/admin/design-studio page with: Feature gate (shows upgrade prompt when disabled) Summary cards: total files, storage used, your uploads, from Katura 'From Katura Studio' section: designs pushed by Antar's team with designer notes, version badges, file type labels, tags 'My Files' section: tenant uploads grouped by folder with download and metadata display Add Design Studio nav item (PenTool icon) to Services group in sidebar Update parity doc (CAD Design now scaffolded) and build tracker 4:38 AM · ZRosserMcIntosh
Phase 15: Tasks board, platform logo fix, chromeless auth pages Fix /platform header logo: swap katura-wordmark.svg for header-logo.png to match the main site header at katura1999.com Remove Header/Footer from /login, /register, /employee-login so the mosaic fills edge-to-edge (chromeless layout via x-pathname header) Add Tasks page at /platform/admin/tasks: kanban columns (Todo, In Progress, Review, Blocked, Done), summary cards, backlog list, priority badges, overdue indicators -- feature-gated on 'tasks' Add Tasks nav item (ListTodo icon) to platform admin sidebar Update build tracker (Phase 15 complete) and parity doc 4:23 AM · ZRosserMcIntosh
Phase 14: Parity push — Media Library, Team, Audit Log, Payroll hub Media Library: tenant-scoped product image grid with hover overlays Team: combined people/employee directory with role badges, contact info Audit Log: activity feed with category filtering, action verbs, IP tracking Payroll Hub: dashboard with summary cards, quick links to sub-pages Payroll Runs: list view with status badges (DRAFT through PAID/CLOSED) Payroll Invoices: scaffold with link back to runs Payroll Reports: 4 report type cards (summary, headcount, trends, tax) Store group: added Media Library Business group: added Payroll (feature-gated 'payroll') Settings group: added Team + Audit Log New icon imports: ImageIcon, UserPlus, ScrollText, DollarSign 4:10 AM · ZRosserMcIntosh
Phase 13: Admin feature parity — scaffold 6 missing tenant pages Promotions: discount code management with type/value/usage tracking Services: repair & service request list with status badges Custom Orders: bespoke inquiry pipeline (name, budget, stone, timeline) Engagement: engagement ring lead funnel with design count CRM: deal pipeline with stage summary cards, value tracking Wholesale: lead + account management with settings overview 3:52 AM · ZRosserMcIntosh
Phase 12: Integrations hub, Katura wordmark logo, Vercel build fix Created public/brand/katura-wordmark.svg (Playfair Display serif) Updated platform/layout.tsx header Updated platform-admin-sidebar.tsx fallback logo /platform/admin/integrations page with 4-tab interface: API Keys: Create, list, revoke, delete (CRUD via dialog) Webhooks: Create endpoints with event selection, pause/resume, delete Data Imports: Import history table with status badges API Reference: Authentication, rate limits, endpoint docs, webhook verification /api/platform/integrations/api-keys — Tenant-scoped CRUD /api/platform/integrations/webhooks — Tenant-scoped CRUD Feature-gated behind 'api-access' plan entitlement Added Integrations (Plug icon) to sidebar nav under Settings Updated SaaS build tracker: Phase 12 complete 3:32 AM · ZRosserMcIntosh
Phase 10-11: Billing & Stripe integration, marketing site emoji cleanup Add /api/saas/billing/checkout endpoint (Stripe Checkout session creation) Add /api/saas/billing/invoices endpoint (tenant invoice history) Extend Stripe webhook handler for SaaS subscription lifecycle events (subscription.created/updated/deleted/paused/resumed, invoice.paid/failed) Wire real invoice data into tenant billing page with status badges Fix Stripe SDK v2025 type compatibility across billing.ts Replace all emojis with Lucide React icons across 7 /platform pages platform/page.tsx: 9 Lucide icons for feature grid platform/features/page.tsx: 18 Lucide icons for categories & additional features platform/blog/page.tsx: Remove emoji thumbnails, use text category labels platform/docs/page.tsx: 6 Lucide icons for doc categories platform/demo/page.tsx: SVG checkmark + numbered highlights platform/signup/signup-form.tsx: Remove industry emojis and welcome emoji Fix MetricCard value type errors on admin dashboard Add OpenClaw integration research document Update SaaS build tracker: Phase 10 & 11 → complete 2:46 AM · ZRosserMcIntosh
Phase 9: Wire tenant admin pages with real tenant-scoped data Create tenant-queries.ts: full query library bridging SaasTenant → Storefront → Product/Order/Customer/Collection Dashboard: real metrics (orders, revenue, products, customers) via getTenantDashboardData() Products: full table with images, status badges, pricing, SKU, plan limit warnings Orders: full table with order number, customer, status/fulfillment badges, revenue summary Customers: table with avatars, email, phone, order count; summary cards (total, new, returning) Collections: grid cards with images, product counts, visibility badges Barrel exports in saas/index.ts for all tenant-queries functions/types Mark Phase 9 complete in build progress tracker (10 of 12 phases done) Feature saas 2:24 AM · ZRosserMcIntosh
storage & bandwidth metering with overage billing Add SaasStorageSnapshot, SaasBandwidthLog, SaasStorageOverage models Add bandwidth/overage fields to SaasPlan and SaasTenant Create storage-metering.ts (~890 lines): measure buckets, track bandwidth, calculate overages, bill via Stripe invoice items API routes: /api/saas/storage/{usage,meter,upload} Nightly cron (3:30 AM): measure all tenant storage Monthly cron (1st @ 1 AM): full billing cycle (measure + bill + reset + cleanup) Update billing page with storage bar, bandwidth stats, bucket breakdown, overage warnings, and per-plan pricing Plan tiers: Starter 5GB//bin/zsh.50, Pro 25GB//bin/zsh.40, Enterprise 100GB//bin/zsh.25 Upload endpoint: limit checks, file type validation, ingress recording SQL migration: saas_storage_metering.sql (not yet run)
sso/route.ts: metadata→settings
white-label/route.ts: remove customDomain/primaryColor/secondaryColor/fontFamily, logoUrl→customLogoUrl, faviconUrl→customFaviconUrl, emailFromName→customEmailFromName, emailFromAddress→customEmailFromDomain, isActive→isEnabled, metadata→settings
white-label/[id]/route.ts: isActive→isEnabled Feature 3:16 PM · ZRosserMcIntosh
Stripe Connect payment processing with 0.1% platform fee Core library (src/lib/saas/stripe-connect.ts): createConnectAccount: Standard account creation + onboarding links getConnectAccountStatus: Sync account state from Stripe createConnectPaymentIntent: PaymentIntent with application_fee_amount refundConnectPayment: Full/partial refunds with proportional fee refund calculatePlatformFee: 0.1% fee calculation (min 1 cent) getPlatformRevenueSummary: Aggregate revenue analytics API routes: POST/GET /api/saas/connect/onboard — Account creation & status POST /api/saas/connect/create-payment — Process payments with fee DELETE /api/saas/connect/create-payment — Refund processing GET /api/saas/connect/payments — Dashboard data aggregation POST /api/saas/webhooks/connect — Webhook handler (account.updated, payment_intent.succeeded/failed, charge.refunded) Admin UI (/admin/saas/payments): Connected accounts table with status badges One-click onboarding flow Transaction history with fee breakdown Platform revenue & volume metrics How it Works educational section Database: SaasTenant: stripeConnectAccountId, status, charges/payouts enabled, platformFeePercent SaasPaymentTransaction: Full transaction tracking with fee audit trail Migration: migrations/saas_stripe_connect.sql Added Payments quick link to SaaS dashboard Update 2:49 PM · ZRosserMcIntosh
resolve @/auth import errors in enterprise pages (should be @/lib/auth) 2:46 PM · ZRosserMcIntosh
Phase 8: SaaS Platform Control Plane — dashboard upgrade, tenant actions, revenue intelligence, usage tracking, feature flag management src/app/admin/saas/revenue/ (page + client + API) src/app/admin/saas/usage/ (page + client + API) src/app/admin/saas/feature-flags/feature-flags-client.tsx src/app/admin/saas/tenants/[id]/tenant-actions.tsx src/app/api/saas/tenants/[id]/actions/route.ts src/app/api/saas/feature-flags/route.ts docs/saas-build/PHASE-8-CONTROL-PLANE.md 2:21 PM · ZRosserMcIntosh
Phase 7: Enterprise Features — multi-location, SSO, white-label, compliance, impersonation Fix double sidebar: AdminShell swaps SaasSidebar for store sidebar on /admin/saas/* Simplify /admin/saas/layout.tsx to auth-only wrapper Rebrand /platform layout + landing page from purple to Katura stone theme Add 6 Prisma models: SaasStoreLocation, SaasLocationInventory, SaasSsoConfig, SaasWhiteLabelConfig, SaasComplianceRequest, SaasImpersonationLog Create enterprise admin pages: hub, locations, SSO, white-label, compliance, impersonation Create 10 API routes under /api/saas/enterprise/* with full CRUD Add Enterprise nav group to SaaS sidebar Move KATURA_SAAS_PLATFORM_PLAN.md to docs/saas-build/ Add Phase 7 documentation 1:22 PM · ZRosserMcIntosh
Diagnosing /admin/saas and /platform route issues - before macOS update 12:19 PM · ZRosserMcIntosh
Phase 6: API Keys, Webhooks & Data Imports — Integrations layer SaasApiKey: bcrypt-hashed API keys with scopes, rate limits, expiry SaasWebhookEndpoint: webhook endpoints with HMAC-SHA256 signing, event subscriptions SaasWebhookDelivery: delivery logs with retry tracking, response recording SaasDataImport: import jobs from CSV, Shopify, WooCommerce, Lightspeed, etc. api-keys.ts: Key generation (ktr_live_xxx), validation, CRUD, last-used tracking webhooks.ts: Endpoint CRUD, event dispatch, payload signing, delivery engine data-import.ts: CSV parsing, auto-field-mapping, import job lifecycle, product processor /api/saas/api-keys — CRUD for tenant API keys (GET/POST/PATCH/DELETE) /api/saas/webhooks — CRUD for webhook endpoints + delivery logs /api/saas/imports — Create import jobs, CSV upload + auto-mapping /api/tenant/v1/products — List (GET) and Create (POST) products /api/tenant/v1/products/[id] — Get/Update/Delete single product /api/tenant/v1/orders — List orders with pagination /api/tenant/v1/customers — List customers with pagination /admin/saas/api-keys — Key management with create/revoke/delete /admin/saas/webhooks — Endpoint management with delivery logs /admin/saas/imports — Import job management with CSV upload Update 10:16 AM · ZRosserMcIntosh
/platform 404 + Store/SaaS toggle in admin sidebar Fix /platform 404: Added beforeFiles rewrites in next.config.ts to pin /platform routes to themselves, preventing next-intl from rewriting them to /en/platform Added middleware skip for /platform routes (belt-and-suspenders with config fix) Admin sidebar: Added Store/SaaS context switcher toggle just below the logo Removed unused Rocket import from admin-navigation.ts (moved to layout.tsx) 9:52 AM · ZRosserMcIntosh
Phase 5: Marketing Site & Launch Landing page (/platform) with hero, features grid, pricing preview, social proof, CTA Pricing page (/platform/pricing) with 3 plans, feature comparison table, FAQ Features page (/platform/features) with 6 deep-dive categories, integrations list Documentation hub (/platform/docs) with quick start, guides, API reference, migration guides Blog (/platform/blog) with featured post, article grid, categories, newsletter CTA Demo request form (/platform/demo) with lead capture and success state Upgraded platform layout with sticky nav, proper links, 4-column footer All pages render as static for optimal performance Phase 5 documentation 5:19 AM · ZRosserMcIntosh
Add SaaS Platform link to admin sidebar + Platform link to storefront footer Added 'SaaS Platform' nav item (/admin/saas) to admin sidebar under System group with Rocket icon Added 'Platform' link (/platform) to storefront footer bottom bar Added saasPlatform translation key in EN and PT-BR admin i18n 5:06 AM · ZRosserMcIntosh
Phase 4: Custom Domains & Support Tickets Domain manager library with Vercel API integration (add, remove, verify, poll, set-primary) Domains admin page (/admin/saas/domains) with stats, filters, add dialog, verification workflow Domains API routes (CRUD + verify + poll) Support ticket admin page (/admin/saas/support) with queue, filters, ticket detail, message thread Support ticket API routes (CRUD + messages with internal notes) Domain verification cron job (every 2 hours via Vercel Cron) Barrel exports updated in saas/index.ts Phase 4 documentation 4:27 AM · ZRosserMcIntosh
Phase 3: Website Builder + Context Switcher 3 new Prisma models: SaasWebsiteTheme, SaasTenantWebsite, SaasTenantWebsitePage SQL migration with 5 seeded themes (Maison, Atelier, Brilliance, Heritage, Moderne) 28 section types across 8 categories (hero, product, bridal, about, trust, social, utility, custom) Website builder library: section registry, theme types, CRUD helpers Section renderer component with 28 visual preview components Theme Gallery admin page with color swatches, previews, and usage stats Website Builder admin page with tenant websites overview and pages table Per-tenant page editor with three-column layout (pages/preview/props) Section management: add, remove, reorder, duplicate, JSON + quick field editing Theme bootstrap: select theme → auto-create website + homepage with default sections API routes: themes (GET), website (GET/POST), pages (GET/POST), pages/[id] (GET/PATCH/DELETE) Context switcher: purple SaaS Platform button in store admin header (desktop + mobile) SaaS sidebar updated with Theme Gallery and Website Builder links Phase 3 documentation: docs/saas-build/PHASE-3-WEBSITE-BUILDER.md 3:07 AM · ZRosserMcIntosh
Phase 2: Signup & Onboarding — self-service tenant creation flow Multi-step signup form (/platform/signup): Account → Profile → Plan → Done Step 1: Business name, email, password with live URL preview Step 2: Industry, business type, team size, revenue (jewelry-specific options) Step 3: Plan selection cards with pricing, features, 'Most Popular' badge Step 4: Success confirmation with next-steps and dashboard redirect Platform layout (/platform/layout.tsx): Clean marketing header/footer with purple SaaS branding Public signup API (POST /api/platform/signup): Creates User + Tenant in transaction Validates slug uniqueness, reserved names, email uniqueness Hashes password with bcrypt(12), sets 14-day trial, seeds onboarding state Public plans API (GET /api/platform/plans): Returns active plans for signup flow Onboarding API (POST/GET /api/saas/onboarding): Track checklist progress Onboarding library (src/lib/saas/onboarding.ts): 12-step checklist across 3 groups Store setup, Go Live, Grow Your Business with completion tracking Onboarding checklist component (onboarding-checklist.tsx): Interactive UI with progress bar, grouped steps, checkmarks, links to relevant admin pages Barrel exports updated in src/lib/saas/index.ts Build verified: Compiled successfully in 72s 2:25 AM · ZRosserMcIntosh
Phase 1: SaaS Admin Control Plane — sidebar nav, tenant CRUD, plans, messenger, APIs SaaS sidebar navigation with purple theme (saas-sidebar.tsx) Updated layout with sidebar + platform role display Tenant detail page with plan, domains, invoices, usage, features Tenant creation form with plan selector, auto-slug, validation Plans & Pricing management page with revenue projections B2B Messenger admin page with department conversations API: POST/GET /api/saas/tenants (create + list with filters) API: GET/PATCH /api/saas/tenants/[id] (detail + update) API: POST /api/saas/tenants/[id]/status (state machine transitions) Phase 1 documentation (PHASE-1-SAAS-ADMIN.md) Feature 2:01 AM · ZRosserMcIntosh
SaaS Phase 0 foundation — multi-tenancy, B2B messenger schema, naming convention Prisma schema: SaasTenant, SaasPlan, SaasTenantDomain, SaasInvoice, SaasUsageRecord, SaasSupportTicket, SaasSupportMessage, SaasFeatureFlag B2B Messenger: SaasMessengerDepartment, SaasMessengerConversation, SaasMessengerMessage, SaasMessengerParticipant, SaasMessengerAttachment All SaaS tables prefixed with 'Saas' per naming convention src/lib/saas/: tenant resolver, tenant-scoped Prisma, feature flags Auth: tenantId + platformRole in JWT/session, role helpers Middleware: subdomain + custom domain tenant detection Admin UI: /admin/saas dashboard, tenants, feature-flags pages SQL migration: creates tables, seeds plans, tenant zero, departments Docs: SaaS platform plan (v2.0), naming convention, Phase 0 guide 9:58 PM · ZRosserMcIntosh
remaining API route errors — audit category, leave balance, offboarding, runNumber agreements, leave, onboarding, offboarding: category 'employee' → 'hr' (valid AuditCategory) leave/route.ts: compute remaining from entitled+accrued+carryover-used-pending (no 'remaining' field) offboarding/route.ts: fix audit newValues to use lastWorkingDay/noticePeriodDays (not lastDay/isVoluntary) payroll/runs/route.ts: handle runNumber possibly null with optional chaining Update 9:55 PM · ZRosserMcIntosh
dashboard periodStart/periodEnd + reports API request body alignment payroll-dashboard-client: payPeriod.startDate → payPeriod.periodStart/periodEnd reports-client: fix request body to send reportType (not type), wrap filters in filters object, handle flat API response { reportType, data, format } instead of nested data.report Update 9:52 PM · ZRosserMcIntosh
align all UI client pages with API response shapes people-directory-client: fix interface to match flat API response (workerStatus, entityName, managerName, firstName/lastName vs nested objects) worker-profile-client: profile.entity → profile.legalEntity, profile.currentCompensation → profile.compensationPlans[0], profile.onboardingStatus → profile.onboardingWorkflows[0] payroll-runs-client: payPeriod.startDate → payPeriod.periodStart/periodEnd payroll-run-detail-client: same periodStart/periodEnd fix new-payroll-run-client: data.periods → data.data new-worker-client: fix POST body field names (entityId→legalEntityId, displayName→firstName/lastName, hireDate→startDate), fix response (data.worker.id→data.id) invoices-client: fix Invoice interface to match API (workerName flat string, nullable dueDate, entity nullable), add dueDate to API response payroll-settings-client: fix all response keys (d.entities→d.data, etc.), fix field names (legalName→name, defaultCurrency→currency, etc.) Chore 4:55 PM · ZRosserMcIntosh
add migration 017 for schema fixes (runNumber, PayrollAdjustment FK, TimeEntry approval) Update 4:53 PM · ZRosserMcIntosh
align all 22 API routes with Prisma schema + RBAC permissions Fixed field name mismatches across all route files: entity→legalEntity, entityId→legalEntityId, startDate→periodStart, endDate→periodEnd, clockIn→clockInAt, clockOut→clockOutAt, etc. Fixed all permission references to match RBAC PERMISSIONS object: SETTINGS_MANAGE→ENTITIES_EDIT/ROLES_EDIT/SETTINGS_EDIT/GL_MAPPING_EDIT/INTEGRATIONS_EDIT PAYROLL_RUN→PAYROLL_PROCESS, GL_VIEW→GL_EXPORT, INVOICES_CREATE→INVOICES_APPROVE, PAYMENTS_MANAGE→PAYMENTS_CREATE, LEAVE_VIEW→LEAVE_VIEW_ALL, LEAVE_REQUEST_OWN→LEAVE_SUBMIT_OWN, LEAVE_MANAGE→LEAVE_APPROVE, ONBOARDING_VIEW_OWN→ONBOARDING_VIEW Fixed status enum values to use prefixed versions: DRAFT→AGREEMENT_DRAFT, INITIATED→OFF_INITIATED, PENDING→OB_TASK_PENDING/OFF_TASK_PENDING, COMPLETED→OB_TASK_COMPLETED, INACTIVE→INT_DISCONNECTED, FULL_DAY→FEDERAL Added missing schema fields: PayrollRun.runNumber, TimeEntry approval fields, PayrollAdjustment.workerProfile relation Extended audit.ts with HRIS entity types, action types, and categories Removed non-existent field references (slug, encryptedCredentials, etc.) All 22 route files verified: ZERO TypeScript compile errors Added KATURA_BUSINESS_INTELLIGENCE_PLATFORM.md Feature 4:06 PM · ZRosserMcIntosh
HRIS/Payroll UI pages + navigation + i18n /admin/payroll — Payroll Dashboard (stats, quick actions, recent runs) /admin/payroll/runs — Payroll Runs list with status filters /admin/payroll/runs/[id] — Run detail with calculate/approve/reject/void /admin/payroll/runs/new — New payroll run creation form /admin/payroll/invoices — Contractor invoices list with overdue tracking /admin/payroll/reports — Reports generator (5 types: payroll summary, headcount, compensation analysis, leave summary, contractor payments) /admin/payroll/periods — Pay periods management with bulk generation /admin/people/[id] — Worker Profile with 7-tab layout (overview, compensation, time, leave, documents, agreements, onboarding) /admin/people/new — New worker creation form (US/Brazil, W-2/1099/CLT/PJ) /admin/settings/payroll — Settings hub (entities, roles, tax tables, holidays, integrations) Added People & HR group (People Directory + Team) Added Payroll group (Dashboard, Runs, Invoices, Reports) Renamed Content & Team to Content (Team moved to People & HR) Added quick actions: Add Worker, New Payroll Run Desktop sidebar now renders grouped navigation with labels Added EN/PT translations for all new nav items and groups peopleDirectory, payrollDashboard, payrollRuns, invoices, payrollReports groupPeopleAndHR, groupPayroll, groupContent, addWorker, newPayrollRun