The problem
University Barber is a barber shop that needed one site for three jobs: present its services and team, sell hair and grooming products online, and take appointments. It also needed a safe way to change the site, because every edit went straight to a live shop.
What I built
I built a WordPress site with a shop and online booking, and a deployment workflow that protects the live server.
- Online shop on WooCommerce with the shop’s own product line: shampoos, conditioners, creams, anti-hair-loss treatments and styling products.
- PayPal payments through a PayPal gateway for WooCommerce.
- Shopping tools: wishlist, product compare, quick view and filters that update without reloading the page.
- Online booking for appointments through a salon booking plugin.
- Italian translation of the theme done with Loco Translate, so every label on the site speaks the customer’s language.
- Deploy script that sends changes from my computer to the server with rsync over SSH, and runs as a dry run unless I confirm.
- Reusable starter package: I turned the project into a documented package with an install guide, a setup wizard, the deploy workflow and 22 plugins preinstalled, so the same base can serve another barber shop.
Built with
WordPress, the Barber theme by ArrowTheme with ArrowPress Core, Elementor with Thim Elementor Kit, Slider Revolution, WooCommerce with YITH extensions, Contact Form 7, Mailchimp for WordPress, Yoast SEO, Google Site Kit, Really Simple SSL and WP-Optimize, on cPanel hosting.
Why it was done this way
The deploy script reads an exclusion list that never touches what lives only on the server: the WordPress configuration, .htaccess, uploaded images, caches, backups and logs. A deploy can update the theme and plugins, but it cannot overwrite the live configuration or the shop’s media. The starter package follows the same idea: it ships with an empty uploads folder and no database, so none of the original shop’s content leaks into a new site, and it leaves out the premium plugins, which each buyer must license.


