GET /api/stats/summary ·
GET /api/stats/weekly?weeks=8 ·
GET /api/stats/revenue?period=monthly ·
GET /api/stats/services-frequency ·
GET /api/bookings?status=upcoming ·
GET /api/bookings?status=cancelled
Bookings
Appointment Schedule
Client Database
Services & Pricing
Opening Hours
Reviews
Gallery Photos
📷
Drag & drop photos or click to browse
JPG · PNG · WebP · GIF · Max 4.5MB each · Multiple files OK
Uploading...
💡 Why this is better than uploading
Netlify is static hosting — there's no server to store files. The current upload converts images to base64 and saves them in Supabase JSON, which hits Supabase's row size limits fast and loads slowly.
Better approach: upload to a proper media host, paste the public URL here. Free options:
• Supabase Storage (built-in, 1GB free) — create a bucket called media, enable public access → file uploads above auto-use it
• Cloudinary (cloudinary.com) — free 25GB, drag into dashboard
• ImgBB (imgbb.com) — free, instant CDN link
Videos
Paste any YouTube/TikTok/Vimeo link — it's auto-converted to embed format
The src URL is extracted automatically
❓ Why video embeds fail on Netlify & how to fix
1. Wrong URL format — YouTube watch URLs (youtube.com/watch?v=ID) don't embed. This admin now auto-converts them to embed format (youtube.com/embed/ID).
2. Missing iframe permissions — The allow attribute must include autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture. Fixed in the renderer below.
3. Netlify CSP headers — If you've added a netlify.toml with strict Content-Security-Policy, it can block iframes. Add this to your netlify.toml: [[headers]] for = "/*" [headers.values] Content-Security-Policy = "frame-src 'self' *.youtube.com *.tiktok.com *.vimeo.com"
Products
Content Editor
Settings
📧 Email
Email notifications are disabled for now. Booking alerts are sent by SMS through Twilio.
📱 SMS — Twilio
Booking texts and admin client texts are sent by the Netlify Function. Add TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_FROM_PHONE, and NOTIFY_PHONE in Netlify environment variables.
Holiday Mode
Pause normal bookings and send visitors to a WhatsApp waiting list while you are away.
🗺️ Google Maps Embed
Google Maps → Share → Embed a map → copy the src URL.
Every client that sits in Jakub's chair leaves with more than just a fresh cut — they leave with confidence. With 2+ years of precision barbering, Jakub has built a reputation for flawless fades, sharp lines, and a chair-side experience unlike any other in Belfast.
Trained in modern barbering techniques with a deep respect for the classics, every visit is tailored specifically to you.
50+
Clients Served
5.0
Avg. Rating
2+
Years Exp.
What We Offer
Services & Pricing
Every service performed with precision tools. No rushing. No compromises. Click any service to book it instantly.
The Process
How it works
📅
Choose your slot
01 / 04
01
Pick your time
Browse availability and book the slot that fits. Same-day bookings welcome when slots are open.
02
Choose your service
From a quick edge-up to the full cut and beard package. Mix and match for your perfect appointment.
03
Pay however you like
Cash or card — both welcome. Pay on the day, in person. No deposits needed.
04
Walk out sharp
Leave looking your best. Jakub's reputation is built on clients who come back and bring their friends.
See The Work
Watch the transformations
Real cuts. Real clients. No filter needed.
Add your YouTube or TikTok videos via Admin → Videos
Product Line
By Jakub's Cuts
Professional-grade products used in-chair — soon available to take home.