mhinspeya/mhinspeya-hyva-personal-shopping

Experience personalized shopping like never before with our personal shopping module. Simply schedule an appointment with one of our expert stylists who will curate a tailored selection just for you, ensuring great fit and awesome new styles

Maintainers

Package info

git.modehaus.de/hyvae/inspeya-personalshopping

Homepage

Type:magento2-module

pkg:composer/mhinspeya/mhinspeya-hyva-personal-shopping

Transparency log

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

1.0.4 2026-07-13 06:33 UTC

This package is not auto-updated.

Last update: 2026-07-14 04:47:51 UTC


README

Experience personalised shopping like never before. This Magento 2 / Hyvä-compatible module lets customers book one-on-one appointments with expert stylists directly from the storefront. Store administrators manage employees, departments, schedules, and appointment requests — all from the Magento Admin Panel.

Composer package: mhinspeya/mhinspeya-hyva-personal-shopping Module name: MHinspeya_AppointmentShopping Current version: 1.0.3 License: OSL-3.0

Table of Contents

Features

Storefront

  • Interactive appointment booking — customers browse available employees per department and select a date/time slot
  • Dynamic calendar & time-slot picker — available days and slots are computed from each employee's configured schedule (weekly availability, start/end time, break windows, appointment duration)
  • Duplicate booking prevention — the system checks existing appointments to prevent double bookings for the same slot
  • Automatic email notifications — confirmation emails are sent to both the customer and the assigned employee upon booking
  • Hyvä Theme compatible — ships with Hyvä Tailwind templates, Alpine.js integration, and auto-registers via the Hyvä config observer
  • Configurable age limit — enforce a minimum customer age at the form level
  • Timezone-aware scheduling — supports configurable timezone for accurate slot calculations
  • Customisable heading & sub-heading — admin-configurable page title and description text

Admin Panel

  • Department management — create and manage store departments (e.g. Menswear, Womenswear, Childrenswear) with individual email contacts, sort order, and status toggle
  • Employee management — add employee profiles with name, department assignment, email, profile image upload, bio/content, weekly schedule configuration (available days, time range, break slots, appointment duration), sort order, and status
  • Appointment management — view, confirm, or reject customer appointment requests from a dedicated admin grid
  • Approve / Reject workflow — one-click confirm or disapprove with automatic notification emails sent to the customer
  • UI Component grids & forms — fully integrated Magento Admin UI Component listing grids with inline editing support for all three entities
  • Mass actions — mass delete and mass status change on employee listings
  • Image uploader — dedicated image upload handler for employee profile photos
  • Seed data — ships with sample CSV data for departments, employees, and appointment forms, imported via a modern Magento data patch

Requirements

RequirementVersion
Magento2.4.x
PHP8.1 or higher
Hyvä Theme1.1.x or higher
MHinspeya BackendMod^1.0 (mhinspeya/backend-mod)

Installation

Via Composer (Recommended)

# 1. Require the package
composer require mhinspeya/mhinspeya-hyva-personal-shopping

# 2. Enable the module
bin/magento module:enable MHinspeya_AppointmentShopping

# 3. Run setup upgrade (runs data patches and creates DB tables)
bin/magento setup:upgrade

# 4. Compile DI
bin/magento setup:di:compile

# 5. Deploy static content (production mode)
bin/magento setup:static-content:deploy -f

# 6. Flush cache
bin/magento cache:flush

Manual Installation (app/code)

# 1. Create the module directory
mkdir -p app/code/MHinspeya/AppointmentShopping

# 2. Copy or clone the module files into the directory
cp -r <source-path>/* app/code/MHinspeya/AppointmentShopping/

# 3. Enable the module
bin/magento module:enable MHinspeya_AppointmentShopping

# 4. Run setup upgrade
bin/magento setup:upgrade

# 5. Compile DI
bin/magento setup:di:compile

# 6. Deploy static content (production mode)
bin/magento setup:static-content:deploy -f

# 7. Flush cache
bin/magento cache:flush

Configuration

Navigate to Stores → Configuration → Personal Shopping → Personal Shopping Configuration in the Magento Admin Panel.

General Settings

FieldDescription
EnableEnable or disable the Personal Shopping module (Yes/No)
Heading TitleMain heading text displayed on the booking page
Heading Sub TitleSubheading text displayed beneath the main heading
Age LimitMinimum age requirement for customers filling the booking form
TimezoneTimezone used for appointment slot calculations

Email Options

FieldDescription
Email SenderSelect the sender identity for all appointment emails
Customer Email TemplateEmail template sent to the customer upon booking
Employee Email TemplateEmail template sent to the employee upon a new booking
Appointment Approve Email TemplateEmail template sent to the customer when appointment is confirmed
Appointment Reject Email TemplateEmail template sent to the customer when appointment is rejected

Admin Panel Management

All management grids are accessible under MHinspeya → Personal Shopping in the admin sidebar.

Manage Departments

Path: MHinspeya → Personal Shopping → Manage Departments

Create and manage store departments. Each department has:

FieldDescription
Department NameName of the department (e.g. Menswear, Womenswear)
Department EmailContact email for the department
Appointment StatusEnable/disable appointment booking for this department
Sort OrderDisplay order on the frontend
StatusActive or inactive

Manage Employees

Path: MHinspeya → Personal Shopping → Manage Employees

Add and configure employee/stylist profiles. Each employee has:

FieldDescription
Employee NameFull name of the stylist/employee
DepartmentAssigned department
EmailEmployee email for appointment notifications
Content/BioDescription or biography text
Profile ImageProfile photo (uploaded via built-in image uploader)
Sort OrderDisplay order on the frontend
StatusActive or inactive
Appointment ScheduleJSON-configured weekly schedule with the following options:

Schedule Configuration Fields:

FieldDescription
Date Range StartFirst available date for bookings
Date Range EndLast available date for bookings
DurationAppointment duration in minutes (e.g. 15, 30, 45, 60)
Available DaysDays of the week the employee is available
Time StartDaily availability start time
Time EndDaily availability end time
Break StartBreak period start time (slots blocked)
Break EndBreak period end time

Manage Appointments

Path: MHinspeya → Personal Shopping → Manage Appointments

View and manage all customer booking submissions:

FieldDescription
SalutationCustomer salutation (Mr/Mrs)
First Name / Last NameCustomer name
Birth DateCustomer date of birth
TelephoneCustomer phone number
EmailCustomer email address
Customer Card NumberOptional loyalty/membership card number
DepartmentSelected department
EmployeeSelected employee/stylist
Appointment DateBooked date
Appointment TimeBooked time slot
DescriptionCustomer's notes/requirements
Confirm / DisapproveAdmin actions to approve or reject the appointment

Frontend Booking Flow

  1. Customer visits the personal shopping page (/appointmentshopping/index/...)
  2. Active departments and employees are displayed
  3. Customer selects a department → available employees are shown
  4. Customer selects an employee → the interactive calendar loads (AJAX call to /appointmentshopping/index/appointmentcalender)
  5. Available dates and time slots are computed from the employee's schedule configuration
  6. Customer fills in the booking form (name, email, phone, date of birth, preferred slot, optional message)
  7. Form is submitted via AJAX to /appointmentshopping/index/appointmentbooking
  8. System validates for duplicate bookings, saves the appointment, and sends confirmation emails to both the customer and the employee
  9. Success/error message is displayed to the customer

How to Embed the Booking Form

You can display the booking form on any CMS page, block, layout XML file, or PHTML template using the following methods:

1. In a CMS Page or Block (CMS Content)

Insert the template block markup inside your CMS page content or block editor:

{{block class="Magento\Framework\View\Element\Template" template="MHinspeya_AppointmentShopping::appointment.phtml"}}

2. In Layout XML

Add the block definition to your layout XML file (e.g., cms_page_view.xml):

<block class="Magento\Framework\View\Element\Template" name="appointment.shopping.form" template="MHinspeya_AppointmentShopping::appointment.phtml" />

3. In a PHTML Template (PHP code)

Call the layout class dynamically inside another PHTML template:

<?= $block->getLayout()->createBlock(\Magento\Framework\View\Element\Template::class)
    ->setTemplate('MHinspeya_AppointmentShopping::appointment.phtml')
    ->toHtml() ?>

ACL Permissions

The module provides granular ACL resources under MHinspeya_AppointmentShopping:

Resource IDDescription
MHinspeya_AppointmentShopping::mainPersonal Shopping (top level)
MHinspeya_AppointmentShopping::main_viewAccess Personal Shopping
MHinspeya_AppointmentShopping::EmployeeAppointment_viewView Employee Appointments
MHinspeya_AppointmentShopping::EmployeeDepartment_viewView Employee Departments
MHinspeya_AppointmentShopping::EmployeeAppointmentForm_viewView Appointment Forms
MHinspeya_AppointmentShopping::appointmentConfigPersonal Shopping Configuration

REST API endpoints are protected by corresponding CRUD ACL resources (_save, _update, _delete, _view).

Hyvä Theme Compatibility

This module is fully compatible with the Hyvä theme. It includes:

  • A Hyvä config observer (RegisterModuleForHyvaConfig) that auto-registers the module's frontend path with the Hyvä configuration system
  • Tailwind CSS integration via the view/frontend/tailwind/ directory
  • Alpine.js-ready .phtml templates in view/frontend/templates/
  • No RequireJS or Knockout.js dependencies on the frontend

Translations

The module ships with a German (de_DE) translation file located at:

i18n/de_DE.csv

To add additional translations, create a new CSV file in the i18n/ directory following the Magento convention (e.g. en_US.csv, fr_FR.csv).

Uninstallation

Composer Installation

bin/magento module:disable MHinspeya_AppointmentShopping
composer remove mhinspeya/mhinspeya-hyva-personal-shopping
bin/magento setup:upgrade
bin/magento cache:flush

Manual Installation

bin/magento module:disable MHinspeya_AppointmentShopping
rm -rf app/code/MHinspeya/AppointmentShopping
bin/magento setup:upgrade
bin/magento cache:flush

Note: Uninstalling the module does not automatically drop the database tables. To remove them manually, drop mhinspeya_appointmentshopping_employeeappointment, mhinspeya_appointmentshopping_employeedepartment, and mhinspeya_appointmentshopping_employeeappointmentform.

Support

For issues or feature requests, please contact us through our website.