The customer picks a service, barber, and time slot
The public site needs to feel premium, but the flow still has to stay clear and quick.
Second freelance client - built a portrait-driven editorial layout with Framer Motion animations that matched the barbershop's aesthetic. Managed design, development, and deployment. Live at balkan.thisisrikisart.com.
Balkan started as a design-heavy client website but evolved into a much more serious product: a real booking platform with operations, payments, reminders, and admin workflows that had to work for an actual shop.
A barbershop does not just need a pretty homepage. It needs a customer flow that reduces friction for bookings, supports staff operations, and does not create more work for the owner. The core problem was operational reliability wrapped in a premium brand presentation.
I owned the customer booking flow, backend APIs, payments, admin tooling, notifications, deployment, and the final editorial presentation of the brand.
This project forced me to move past portfolio aesthetics and deal with the realities of client software: payment states, notifications, reschedules, admin visibility, and deployment stability.
A real booking platform with payments, admin tooling, and customer lifecycle flows.
A customer books a service, the shop gets a reliable operational record, and the owner can run the business without extra manual cleanup.
The public site needs to feel premium, but the flow still has to stay clear and quick.
The product handles the operational moment where intent becomes a real appointment.
Notifications and dashboard visibility reduce no-shows and owner confusion.
The admin dashboard is part of the product, not an afterthought behind the marketing site.
The architecture became a classic three-layer product: React frontend for customer and admin surfaces, Node/Express APIs for booking/payment/notification logic, and PostgreSQL for bookings, services, users, and operational state. Around that core, I iterated on notifications, Stripe payments, and deployment until the product matched how the shop actually runs.
This is the secondary view: the system shape behind the flow above. It exists to explain the moving parts, not to substitute for the product story.
The experience had to serve both the customer booking path and the owner/admin operating path.
services, barber, schedule
Stripe-backed flow
auth, booking, reminders
email, SMS, reminders
appointments, analytics, staff ops
bookings, services, users, payments
Docker + Nginx
Booking reliability mattered more than novelty because staff and customers depended on it.
The admin surface was part of the product, not an afterthought after the marketing site.
Started broader and more experimental than the client actually needed.
The project sharpened once bookings, auth, reminders, and admin tooling became the main arc.
Later work tightened the UI, operations, and deployment until it felt like a real platform.
Commits: 76-119 Theme: Monetization and multi-channel notifications Stripe Payment Integration (Major effort, Nov 25-Dec 5): - Nov 25 (12:08:01): Step 1 - Client utility + databas…
Commits: 120-136 Theme: AI pivot from frontend (hairstyle generation) to backend (data assistant) Architecture Journey: 1. Jan 20 (11:11-11:21): Backend scaffolding - assistantSaf…
Commits: 137-156 Theme: Production readiness, infrastructure migration, visual redesign Production Stabilization (Feb 17-18): - Feb 17 (11:43): Schema stabilization - Finalized au…
Production website for a local barbershop in Jersey City. Designed a portrait-driven editorial layout with Framer Motion animations, team portraits, and neighborhood backgrounds. Managed the full project lifecycle from design through deployment and ongoing maintenance. What this demonstrates: Frontend design sense, Framer Motion animatio…
The Balkan Barbers project evolved from an initial AI-enhanced barbershop prototype into a production-ready booking platform with sophisticated features. The journey reveals a typical SaaS product development arc: bold…
Commits: 137-156 Theme: Production readiness, infrastructure migration, visual redesign Production Stabilization (Feb 17-18): - Feb 17 (11:43): Schema stabilization - Finalized auth flows, notification routing, deployme…
React 18.2.0 with Context API for auth state, React Router DOM 7.9.5, Plain CSS with organized design-system.css + page-specific .css files, Charcoal/Brown/Gold (luxury barbershop aesthetic), Font sizes increased Nov 24 for accessibility, Custom-built (no Material-UI or similar), RescheduleModal.js, BarberSelection.js