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,227
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 25 of 33 · 1,201–1,250 of 1,643 fetched
Wednesday, January 21, 2026 2 updates pushed
Feature customers 1:55 AM · ZRosserMcIntosh
add founding client status and manual customer creation Add isFoundingClient, foundingClientVerifiedAt, foundingClientVerifiedBy fields to User model Create database migration for new fields with indexes Implement discount calculation in lib/military-discount.ts Apply founding client discount at checkout (stackable with military/gift balance) Store discount in Stripe payment intent metadata POST /api/admin/customers - Create customer without password Customers can register later and account is linked automatically Support for military and founding client flags during creation PATCH /api/admin/customers/:id now supports isFoundingClient toggle Tracks who verified and when Existing customers without passwords can register Password added to existing account Preserves all history, orders, and special statuses Feature analytics 1:13 AM · ZRosserMcIntosh
comprehensive audit, fixes, and new route scaffolding Fix: Remove double-fetch in products-tab.tsx Feat: Add SETTLED_ORDER_STATUSES constant and getAnalyticsOrderFilter() utility Feat: Scaffold 6 new analytics routes (funnel, attribution, search, retention, fulfillment, inventory) Docs: Add comprehensive audit and roadmap with findings, recommendations, and implementation plan Tuesday, January 20, 2026 14 updates pushed
Feature orders 11:45 PM · ZRosserMcIntosh
Add customOrderDate, photoAttachments fields and regenerate Prisma client Added customOrderDate and photoAttachments to Order model query Regenerated Prisma client to include new fields Created migration runner script for order customizations Ran migrations successfully Feature admin 11:24 PM · ZRosserMcIntosh
Add order deletion for owners and improve order list UX Only OWNER role can delete orders Only CANCELLED orders can be deleted Confirmation dialog before deletion Audit log entry created on deletion Cascades to delete related records (items, payments, etc.) Entire table row is now clickable Clicking row opens order detail page Better UX - no need to find the dropdown Hover effect shows row is interactive Shows customOrderDate if set, otherwise createdAt Label '(custom)' appears next to custom dates Orders sorted chronologically by display date Dropdown click events stop propagation (don't trigger row click) Monday, January 19, 2026 6 updates pushed
Feature 9:46 PM · ZRosserMcIntosh
add cancel order functionality to admin orders page Update 9:22 PM · ZRosserMcIntosh
convert Decimal to number and move components to client side Update 9:19 PM · ZRosserMcIntosh
move mapOrderStatusToStage to server-side in orders page Sunday, January 18, 2026 4 updates pushed
Chore 8:46 PM · ZRosserMcIntosh
checkout/payment/db fixes and orders card (2026-01-18) Docs 5:42 AM · ZRosserMcIntosh
add TypeScript fixes completion summary Document resolution of 3 TypeScript errors (collection import, refund-policy, returns) Explain root causes and solutions Provide patterns for future policy pages Confirm all compilation errors resolved ✅ Update 5:41 AM · ZRosserMcIntosh
resolve TypeScript error in returns page metadata Changed from dynamic getPageSEO() call (which expected 'returns' key in SEO_TEMPLATES) Saturday, January 17, 2026 6 updates pushed
Chore audit 9:43 PM · ZRosserMcIntosh
wire endpoints, add filters, SEO/meta fixes, share/newsletter, misc Feature 8:59 PM · ZRosserMcIntosh
add mosaic image editor to admin collections page Add 'Edit Mosaic Images' option in collection dropdown menu Create mosaic editor sheet with: 4-tile mosaic preview grid Product image selector from existing products Manual image URL input for discontinued products Remove/reorder images functionality Add API endpoint for saving mosaic images (/api/admin/collections/[id]/mosaic) Handle database migration gracefully with helpful error messages Preserve existing collection functionality Docs
Friday, January 16, 2026 1 update pushed
Feature 11:32 PM · ZRosserMcIntosh
Add automated Google Merchant Center product data fixes Added fix-google-merchant.ts script to intelligently fill missing required fields Automatically set googleGender, googleAgeGroup, googleCondition for all 61 products Extract jewelryColor from materials, product names, and gemstones Updated 61 active products with smart field inference Added manual SQL migration for 5 products requiring special color handling Documented complete plan and quick start guides for GMC compliance Product page unavailable (12 products) Missing product price (2 products) Missing age group (10 products) Missing color/gender (all products) Thursday, January 15, 2026 4 updates pushed
Style 8:47 PM · ZRosserMcIntosh
Remove trust signals bar from homepage COMPLIMENTARY SHIPPING SECURE CHECKOUT AUTHENTICITY GUARANTEED Truck, ShieldCheck icons tTrust translation getter Docs 6:18 PM · ZRosserMcIntosh
Add non-technical summary of security and checkout fixes Database Row Level Security (RLS) implementation Why 80+ security warnings are now resolved Gift card order finalization fix Guest checkout success page fix Inventory checking and payment failure fixes Impact on customers and staff Overview and summary tables What changed for customers (minimal) What changed behind the scenes FAQ section Insurance/compliance notes Monday, January 12, 2026 1 update pushed
Feature 7:08 PM · ZRosserMcIntosh
add employee management and notification API routes Saturday, January 10, 2026 2 updates pushed
Update 9:10 PM · ZRosserMcIntosh
add redirect from /shop/[id] to /creations/[id] for backward compatibility Docs ios 8:54 PM · ZRosserMcIntosh
add App Clips and Handoff guides; add ios README index Tuesday, January 6, 2026 3 updates pushed
Update 7:22 PM · ZRosserMcIntosh
use product slug instead of ID in compare view links Added slug field to CompareProduct interface Updated CompareButton to accept and pass slug Updated compare-view to use slug for product links (fallback to ID if slug missing) Added aria-label to remove button for accessibility Fixed 404 errors when clicking products in compare view Feature 3:42 PM · ZRosserMcIntosh
add priceOnRequest support to category and collection pages Added priceOnRequest field to category page product mapping Updated CategoryProducts component to pass priceOnRequest to ProductCardWithVideo Added priceOnRequest support to collections page Products with priceOnRequest now show 'Price on Request' instead of price on all listing pages Monday, January 5, 2026 7 updates pushed
Refactor 10:52 PM · ZRosserMcIntosh
Convert product details tabs to collapsible accordions Replaced Tabs UI with Accordion component for minimized copy Reordered sections: Details → Shipping & Returns → Care → Description Sections now collapse/expand on click instead of always being visible Maintains all existing product information and styling Docs 10:07 PM · ZRosserMcIntosh
Add repository status report clarifying all issues are resolved Docs 9:57 PM · ZRosserMcIntosh
Clean up Launch Audit Report formatting
All quick actions (Mark Processing, Shipped, Delivered) available
Delete option only shows for OWNER on CANCELLED orders
Red text for destructive delete action
Added DELETE /api/admin/orders/[id] endpoint
Validates OWNER role
Validates order status is CANCELLED
Creates audit log entry
Owner-only deletion via role check
Can only delete cancelled orders (safety measure)
Confirmation required in UI
Clean up cancelled test orders
Remove duplicate/erroneous orders
Maintain clean order history Feature admin 11:10 PM · ZRosserMcIntosh
Enhanced manual order creation with custom items, payment methods, and international support Add off-books/custom products without catalog entry Set custom name, price, SKU, and quantity Toggle between catalog products and custom items Custom items marked with badge in order All item prices can be edited after adding to order Useful for custom quotes, discounts, negotiations Real-time total calculation Card, Check, Wire Transfer, Zelle, Venmo, Wise, CashApp, Other Stored with payment record for tracking Useful for offline/phone orders Added 20 countries to address selectors Both shipping and billing addresses Includes: US, CA, GB, AU, FR, DE, IT, ES, JP, CN, BR, MX, IN, RU, KR, NL, SE, CH, BE, PT Added paymentMethod field to Payment model Default: 'CARD' Indexed for performance Updated POST /api/admin/orders to accept paymentMethod Support for null productId (custom items) CreateOrderDialog: Added custom item form, payment method, country selector Better UX with collapsible custom item form Price editing enabled on all items Bespoke jewelry orders not in catalog Special pricing for VIP customers International shipping Multiple payment method tracking Update video 10:47 PM · ZRosserMcIntosh
Add null check in video preload timeout to prevent TypeScript error Added conditional check for videoUrl before calling setVideoSrc in setTimeout Fixes TypeScript error: 'undefined' is not assignable to 'SetStateAction<string | null>' Applied to both ProductCardWithVideo and ProductTile components Feature admin 10:38 PM · ZRosserMcIntosh
Add manual order enhancements - custom dates, photo attachments, improved search Custom order date field for manually created/edited orders Photo attachment upload (multiple images per order) Enhanced customer search with console logging for debugging Visual photo grid with hover-to-delete functionality CreateOrderDialog: Added date picker and photo upload EditOrderDialog: Added date/photo editing capabilities Better UX with upload progress and validation New POST /api/upload for file uploads to Supabase Storage Updated orders API to handle customOrderDate and photoAttachments Enhanced customer search logging Added customOrderDate DateTime? field Added photoAttachments Json? field (array of URLs) order-attachments storage bucket created in Supabase Feature video 8:04 PM · ZRosserMcIntosh
Implement progressive video loading for instant hover playback Images load first (high priority) Videos preload in background after image loads (500ms delay) Changed from preload='none' to preload='auto' after image ready Videos now play instantly on hover (already buffered) Added comprehensive console logging for debugging Prevents wasted bandwidth (only loads videos after images) ProductCardWithVideo: Added imageLoaded state and progressive loading ProductTile (hero collage): Same progressive loading pattern Feature admin 7:52 PM · ZRosserMcIntosh
Convert language selector from dropdown to toggle buttons Changed from dropdown menu to side-by-side buttons Shows '🇺🇸 English' and '🇧🇷 Português' as clickable buttons Active button uses default variant (filled), inactive uses ghost variant Added pointer-events-none to active button for better UX Docs 7:47 PM · ZRosserMcIntosh
Add video hover implementation documentation Docs 7:42 PM · ZRosserMcIntosh
Add admin i18n section to performance optimizations doc Feature admin 7:41 PM · ZRosserMcIntosh
Add English/Portuguese language selector to admin panel Added AdminLanguageSelector component with 🇺🇸 EN / 🇧🇷 PT options Created AdminI18nProvider with complete EN/PT translations for: Dashboard (stats, quick actions, appointments, promotions, etc.) Navigation items Common UI elements (buttons, labels, statuses) Orders, Products, Customers, Settings sections Translated admin dashboard page using DashboardClient component Updated admin layout with i18n provider and locale detection Added /api/user/preferences endpoint for saving language preference Created SQL migration for adminLocale column (graceful fallback) Language persists via cookie and user database preference Auto-detects browser language preference (pt-BR -> Portuguese) Cleaned up unused product-collage-hero-new.tsx file Perf 6:55 PM · ZRosserMcIntosh
cache hero collage + defer video loads; add cached home data; optimize collage API 6:24 PM · ZRosserMcIntosh
Fix tax display on checkout page - show estimated 8% tax matching cart page Feature 6:09 PM · ZRosserMcIntosh
add Mark as Paid button for PENDING orders and expand status dropdown Update 6:04 PM · ZRosserMcIntosh
serialize dates properly for OrderProgressTracker client component Docs 9:13 PM · ZRosserMcIntosh
add checkout fixes and SQL migration for defaultRingSize Update 8:56 PM · ZRosserMcIntosh
pass billing address to Stripe when address collection disabled Update 8:46 PM · ZRosserMcIntosh
prevent nested forms in checkout (payment form hydration error)
To static Metadata export matching other policy pages
Resolves type error: 'returns' not a valid SEO_TEMPLATES key
All TypeScript compilation errors now resolved ✅ Update 5:39 AM · ZRosserMcIntosh
resolve TypeScript error in refund-policy page metadata Changed from dynamic getPageSEO() call (which expected 'refund-policy' key in SEO_TEMPLATES) To static Metadata export matching other policy pages (privacy, terms) Resolves type error: 'refund-policy' not a valid SEO_TEMPLATES key All TypeScript errors now resolved, code ready for deployment 7:53 PM · ZRosserMcIntosh
add collections fix summary and usage guide Update 7:52 PM · ZRosserMcIntosh
remove duplicate collections and improve admin UI visibility Remove duplicate collections (Necklaces, Engagement Rings, Wedding Bands, Unique Pearls) Keep only 7 core collections: Rings, Earrings, Necklaces, Bracelets, Loose Diamonds, Bridal, Fine Watches Fix duplicate Necklaces collection with capital-case slug Move 'Manage Products' button to always-visible full-width button Add summary stats at top (total collections, total products, collections with products) Improve product count badge visibility Add cleanup helper scripts for future use Feature 7:29 PM · ZRosserMcIntosh
complete collections functionality implementation Add 4-tile collage display for collection previews with random image selection Implement manual product-to-collection assignment UI with searchable product list Fix cursor bug in collection edit form by refactoring form state Add new API endpoints for product-collection management Create intelligent auto-assign script for batch product categorization Add comprehensive documentation and implementation guide Collections page now displays 4-tile grid instead of single image Admin collections page with product management sheet Smart auto-assignment script with 7 default collections (rings, earrings, necklaces, bracelets, loose diamonds, bridal, watches) Checkbox-based product selection with visual feedback Responsive design for mobile/tablet/desktop Atomic database transactions for data consistency Docs 4:37 AM · ZRosserMcIntosh
Add GMC navigation guide and verification report Update 6:16 PM · ZRosserMcIntosh
Critical checkout flow issues (inventory, emails, guest access) Previously: Orders paid 100% with gift balance bypassed webhook, leaving inventory reserved and no emails sent Now: create-payment-intent directly finalizes inventory, sends customer confirmation, ops notification, and syncs to Brevo CRM Previously: /checkout/success?session_id=... would 401 for guests Now: Success page fetches access token first, then uses it in GET request Previously: Used non-existent 'available' field, causing NaN math Now: Correctly uses 'quantity - reserved' as per schema Previously: Catch blocks cancelled orders but never released stock Now: Both checkout routes release reserved inventory on failure src/app/api/create-payment-intent/route.ts src/app/api/checkout/route.ts src/app/[locale]/checkout/success/page.tsx Feature 5:46 PM · ZRosserMcIntosh
Enable Row Level Security (RLS) on all database tables Add enable_rls_all_tables_safe.sql: Safe migration that enables RLS on all 82 tables Creates appropriate policies for public reads (Products, Collections, Articles) Creates policies for authenticated user access (Orders, Cart, Wishlist, Addresses) Leaves sensitive tables (CRM, Analytics, Admin) with default DENY-ALL Uses conditional checks to skip non-existent tables Service role key in API routes continues to work normally (bypasses RLS) Resolves 80+ security warnings in Supabase dashboard Feature 4:24 AM · ZRosserMcIntosh
rename /shop routes to /creations and add priceOnRequest wishlist support Renamed src/app/[locale]/shop/ folder to src/app/[locale]/creations/ Updated all navigation config, headers, footers, and breadcrumbs Updated sitemap.ts and SEO structured data for new routes Updated product cards, variant selector, and category pages Updated search components and vector search bar Updated email templates and gift card references Updated API routes and merchant feeds Updated home page components and CTAs Updated compare, cart, checkout, and account pages Updated wholesale portal and bespoke inquiry Updated Brevo marketing automation events Added priceOnRequest support to wishlist page Shows 'Inquire' button instead of 'Add to Cart' for price-on-request items ae75a70
Docs 9:56 PM · ZRosserMcIntosh
Remove emojis and make documentation more professional Replaced emojis with text equivalents (DONE → Complete, WARNING → Warning, etc.) Changed status indicators to be more professional Removed overly enthusiastic AI-generated phrases Made language more neutral and human-written Affects 150+ markdown files across project documentation Feature 9:44 PM · ZRosserMcIntosh
Make collections page database-driven & add .env.production template Replaced hardcoded mock data in /collections/[id]/page.tsx with Prisma queries Added generateStaticParams() for build-time static generation Added generateMetadata() for dynamic SEO Added proper filter extraction from product data Created .env.production template with all required vars (secrets redacted) Updated .gitignore to allow .env.production for documentation Update 9:23 PM · ZRosserMcIntosh
Unify all URL fallbacks to katura1999.com Fixed brevo.ts email template URLs Fixed events.ts APP_URL fallback Fixed wholesale/apply admin link Fixed orders/ship account link Fixed Supabase confirm-signup.html footer URLs Updated README documentation Updated LAUNCH_AUDIT_REPORT to reflect all fixes 8:56 PM · ZRosserMcIntosh
Update audit report: mark password reset flow as fixed