Your Selected Services

Ogbada Stitches

The Art of Perfect Fit

Elevating the modern African gentleman through unmatched precision, luxurious fabrics, and architectural silhouettes.

Ogbada Tailoring Mastery
100% Anatomical Fit
Heritage & Mastery

Architectural African Tailoring

At Ogbada Stitches, tailoring is an art of prestige and precision. Rooted in Lagos and sought across Nigeria and the diaspora, we sculpt traditional and contemporary garments designed to honor the power, heritage, and distinction of the modern gentleman.

Every garment is created with strict adherence to architectural tailoring. From regal Agbadas and iconic Senator suits to crisp Kaftans, custom business attire, and alterations, we draft each piece individually to match your unique posture, shoulders, and drape.

Hand-Sculpted Bespoke Drafts

No generic factory sizing. Each garment is mapped individually to your anatomy for unmatched confidence and ease.

Premium Heritage Fabrics

Sourced from the finest mills—pure wools, rich Austrian brocades, breathable cashmeres, and high-thread cottons.

Live Production Tracking

Enjoy complete transparency with our real-time tracking system from fabric cutting to doorstep courier delivery.

Book Private Fitting
Bespoke Atelier & Ready-to-Wear

E-Commerce Boutique & Collections

Exquisite cuts crafted to your precise anatomy

Ogbada Motion

Behind the scenes & Cinematic lookbooks

Checkout & Order

Finalize your masterpiece.

Review your selections, enter your delivery details, and select your payment preference. Once submitted, your unique tracking code will be generated.

Tailoring Checkout

Delivery Tracking

Real-time status of your masterpiece

Enter your unique OGBADA Tracking Code below to see real-time updates.

Admin Access

Admin CMS & Orders

Local Storage
CodeClient NamePhoneServices OrderedPayment Pref.StatusAction

Manage Boutique Catalog & Packages

Organize garments by category, edit prices, update photo sliders, or add new bespoke items.

Filter Category: For image sliders, separate image URLs with commas (,).
Hero Background Video

Hero Section Video (Top Banner)

Upload or update the cinematic video that plays seamlessly in the top Hero Section without bars.


Drag & Drop Hero Video file or Click to Browse
Supports MP4, WebM files

Video Gallery Showcase

Manage additional cinematic showcase videos displayed in the gallery section.

PostgreSQL Cloud Database 🌐 Global Cloud: Synchronizing...

Supabase Integration & Live Sync

Connect your Supabase project to securely store customer orders, enable live order tracking, and edit boutique catalog packages from any device.

Disconnected (Local Storage)
Step 1

Run SQL Script in Supabase SQL Editor

Go to Supabase Dashboard → Open your Project → Click SQL Editor → Click New Query → Paste this script → Click Run.

-- ====================================================================
-- OGBADA STITCHES - SUPABASE DATABASE INITIALIZATION SCRIPT
-- Paste and Run in Supabase SQL Editor (Dashboard -> SQL Editor -> New Query -> Run)
-- ====================================================================

-- 1. Enable UUID extension
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

-- 2. CREATE ORDERS TABLE (Client Orders & Tracking)
CREATE TABLE IF NOT EXISTS public.orders (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    code TEXT NOT NULL UNIQUE,
    name TEXT NOT NULL,
    phone TEXT NOT NULL,
    venue TEXT,
    type TEXT NOT NULL,
    date TEXT,
    status TEXT NOT NULL DEFAULT 'Order Received',
    payment_status TEXT NOT NULL DEFAULT 'Pay Later',
    eta TEXT,
    courier TEXT,
    notes TEXT,
    media_url TEXT,
    is_video BOOLEAN DEFAULT false,
    created_at TIMESTAMPTZ DEFAULT timezone('utc'::text, now()) NOT NULL
);

-- Index on code for fast customer tracking lookups
CREATE INDEX IF NOT EXISTS idx_orders_code ON public.orders (code);
CREATE INDEX IF NOT EXISTS idx_orders_created_at ON public.orders (created_at DESC);

-- Enable Row Level Security (RLS)
ALTER TABLE public.orders ENABLE ROW LEVEL SECURITY;

-- Drop existing policies if re-running
DROP POLICY IF EXISTS "Allow public insert on orders" ON public.orders;
DROP POLICY IF EXISTS "Allow public read on orders" ON public.orders;
DROP POLICY IF EXISTS "Allow public update on orders" ON public.orders;
DROP POLICY IF EXISTS "Allow public delete on orders" ON public.orders;

-- RLS Policies for orders
CREATE POLICY "Allow public insert on orders" 
ON public.orders FOR INSERT 
TO public, anon, authenticated 
WITH CHECK (true);

CREATE POLICY "Allow public read on orders" 
ON public.orders FOR SELECT 
TO public, anon, authenticated 
USING (true);

CREATE POLICY "Allow public update on orders" 
ON public.orders FOR UPDATE 
TO public, anon, authenticated 
USING (true)
WITH CHECK (true);

CREATE POLICY "Allow public delete on orders" 
ON public.orders FOR DELETE 
TO public, anon, authenticated 
USING (true);


-- 3. CREATE PACKAGES TABLE (Boutique Catalog & Garments)
CREATE TABLE IF NOT EXISTS public.packages (
    id TEXT PRIMARY KEY,
    category TEXT NOT NULL DEFAULT 'Agbada',
    title TEXT NOT NULL,
    desc_text TEXT,
    price TEXT,
    media TEXT,
    is_video BOOLEAN DEFAULT false,
    display_order INT DEFAULT 0,
    created_at TIMESTAMPTZ DEFAULT timezone('utc'::text, now()) NOT NULL
);

CREATE INDEX IF NOT EXISTS idx_packages_category ON public.packages (category);

-- Enable RLS for packages
ALTER TABLE public.packages ENABLE ROW LEVEL SECURITY;

DROP POLICY IF EXISTS "Allow public select on packages" ON public.packages;
DROP POLICY IF EXISTS "Allow public insert on packages" ON public.packages;
DROP POLICY IF EXISTS "Allow public update on packages" ON public.packages;
DROP POLICY IF EXISTS "Allow public delete on packages" ON public.packages;

CREATE POLICY "Allow public select on packages" 
ON public.packages FOR SELECT 
TO public, anon, authenticated 
USING (true);

CREATE POLICY "Allow public insert on packages" 
ON public.packages FOR INSERT 
TO public, anon, authenticated 
WITH CHECK (true);

CREATE POLICY "Allow public update on packages" 
ON public.packages FOR UPDATE 
TO public, anon, authenticated 
USING (true)
WITH CHECK (true);

CREATE POLICY "Allow public delete on packages" 
ON public.packages FOR DELETE 
TO public, anon, authenticated 
USING (true);


-- 4. CREATE SITE_SETTINGS TABLE (Hero Video, Global Show Prices, CMS configs)
CREATE TABLE IF NOT EXISTS public.site_settings (
    key TEXT PRIMARY KEY,
    value JSONB NOT NULL,
    updated_at TIMESTAMPTZ DEFAULT timezone('utc'::text, now()) NOT NULL
);

ALTER TABLE public.site_settings ENABLE ROW LEVEL SECURITY;

DROP POLICY IF EXISTS "Allow public read on site_settings" ON public.site_settings;
DROP POLICY IF EXISTS "Allow public write on site_settings" ON public.site_settings;

CREATE POLICY "Allow public read on site_settings" 
ON public.site_settings FOR SELECT 
TO public, anon, authenticated 
USING (true);

CREATE POLICY "Allow public write on site_settings" 
ON public.site_settings FOR ALL 
TO public, anon, authenticated 
USING (true)
WITH CHECK (true);


-- 5. INITIAL SEED DATA (Default Boutique Catalog & Settings)
INSERT INTO public.site_settings (key, value)
VALUES 
    ('hero_video', '"https://res.cloudinary.com/reprbj4a/video/upload/v1790171334/Mannequin_robot_wearing_Agbada_o__20260923144751.mp4"'::jsonb),
    ('show_prices', 'true'::jsonb)
ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value;

INSERT INTO public.packages (id, category, title, desc_text, price, media, is_video, display_order)
VALUES 
    ('p3', 'Agbada', 'Royal Agbada Regalia', 'Exquisitely hand-embroidered regal attire with gold threading.', '₦150,000+', 'https://i.ibb.co/Gvy39sf9/IMG-20260904-WA0084.jpg', false, 1),
    ('p2', 'Senator Suits', 'Executive Senator Wear', 'Sleek traditional suit alternative with structured shoulder drape.', '₦65,000+', 'https://i.ibb.co/xK7sHSWP/IMG-20260904-WA0058.jpg', false, 2),
    ('p4', 'Kaftans', 'Luxury Minimalist Kaftan', 'Elegant and comfortable tunic sets in breathable linen and wool.', '₦55,000+', 'https://i.ibb.co/QvnqSg20/IMG-20260904-WA0101.jpg,https://i.ibb.co/tPNhVPFv/IMG-20260904-WA0095.jpg,https://i.ibb.co/Wv96Sbh6/IMG-20260904-WA0099.jpg', false, 3),
    ('p1', 'Native Sets', 'Bespoke Traditional Agbada Set', 'Authentic Nigerian ensembles with modern anatomical taper.', '₦80,000+', 'https://i.ibb.co/gbQ7bMzm/IMG-20260904-WA0051.jpg', false, 4),
    ('p5', 'Native Sets', 'Ankara Royal Cut', 'Vibrant patterned casual & smart sets drafted to bespoke dimensions.', '₦45,000+', 'https://i.ibb.co/wZLS9RBK/IMG-20260904-WA0055.jpg', false, 5),
    ('p6', 'Shirts', 'Ogbada Architectural Shirt', 'Crisp, tailored shirts with spread collar and French cuffs.', '₦25,000+', 'https://i.ibb.co/4RsKnqgn/IMG-20260904-WA0046.jpg,https://i.ibb.co/whmN7Bnh/IMG-20260904-WA0085.jpg', false, 6),
    ('p7', 'Trousers', 'Hand-Drafted Sartorial Trousers', 'Perfect waist fit with side adjusters and weighted architectural break.', '₦30,000+', 'https://i.ibb.co/5XKmNsrr/IMG-20260904-WA0096.jpg,https://i.ibb.co/6JDbYfzc/IMG-20260904-WA0093.jpg', false, 7),
    ('p8', 'Casual', 'Weekend Luxury Casual Set', 'Elevated luxury casuals for discerning gentlemen on leisure.', '₦40,000+', 'https://i.ibb.co/h1M6BS4X/IMG-20260904-WA0143.jpg', false, 8),
    ('p9', 'Corporate', 'Double-Breasted Bespoke Suit', 'Immaculately tailored corporate suits crafted with Italian wool.', '₦120,000+', 'https://i.ibb.co/KjpXXTCT/IMG-20260904-WA0070.jpg', false, 9),
    ('p10', 'Alterations', 'Master Atelier Alterations', 'Precision reshaping to give existing garments flawless drape and fit.', '₦10,000+', 'https://images.unsplash.com/photo-1628102491629-778571d893a3?auto=format&fit=crop&w=600&q=80', false, 10)
ON CONFLICT (id) DO NOTHING;

-- Verification
SELECT 'Database initialized successfully!' as status, count(*) as total_packages FROM public.packages;
Step 2

Paste Supabase Credentials to Connect Website

Find these in your Supabase Dashboard under Project Settings → API → Project URL and Project API Keys (anon public).

Format: https://your-project-id.supabase.co (You can also paste your Supabase Dashboard browser URL or Project ID — it will be auto-formatted correctly).
Note: Always use the anon public key (never service_role secret key in browser).