Overview
Polyboy.hr began as a simple landing page to give a fresh, modern face to a classic barbershop in Zagreb, Croatia. What started as a branding project quickly evolved into a full-fledged CRM system built entirely from scratch - handling everything from bookings and customer management to automated email workflows.
From Landing Page to Full CRM
The initial scope was straightforward: design a responsive, visually appealing landing page that reflects the shop’s identity. But as the project progressed, the need for a proper management system became clear.
The result is a complete CRM that includes:
- Form submissions - contact and inquiry handling
- Statistics dashboard - insights into bookings, customers, and revenue
- Barber management - profiles, schedules, and availability
- Price configuration - services and pricing controlled by the shop
- Full booking system - the core feature of the platform

The Booking System
The booking feature allows registered users to schedule appointments with their preferred barber. But it goes far beyond a simple calendar picker.
Email notifications for everything:
- Booking confirmations
- Reminders with calendar attachments (.ics)
- Cancellation notices
- Rescheduling updates
- Strike warnings and ban notifications
Shop-controlled configuration:
- Custom holidays and days off
- Working hours and available time slots
- Service durations and pricing
- Barber-specific availability

Type Safety with Zod
The entire application is heavily typed, with Zod handling validation across both frontend and backend.
Why this matters:
Type safety isn’t just about catching errors at compile time. When you validate data on both ends with the same schemas, you eliminate an entire class of bugs - malformed requests, unexpected nulls, mismatched field types. The frontend knows exactly what shape of data to send, and the backend trusts what it receives.
This approach also improves developer experience. Autocompletion works everywhere. Refactoring is safer. Edge cases surface early, not in production.

Growth and Results
Within 3 months of launch, the user database grew from 800 initial users to over 1,200 - a 50% increase driven entirely by the improved booking experience and reliability of the system.
Deployment and Infrastructure
The app is deployed on Vercel, which required learning and implementing:
- Cron jobs - for scheduled reminders and cleanup tasks
- Custom domains - DNS configuration and SSL
- Security headers - protecting routes and data
- CI/CD pipelines - automated deployments on push
All transactional emails are sent via Resend, with templates built using React Email for full control over design and consistency.

Tech Stack
| Category | Technology |
|---|---|
| Framework | Next.js |
| UI | shadcn/ui, Tailwind CSS |
| Database | Prisma, SQL |
| Validation | Zod |
| Resend, React Email | |
| Hosting | Vercel |
| Runtime | Node.js |
Key Takeaways
- Start small, but build with scale in mind
- Type everything - Zod on both ends saves debugging hours
- Email workflows are underrated - they drive engagement and trust
- Vercel’s ecosystem (crons, edge functions, domains) is production-ready
- Real projects teach more than tutorials ever will