Mirlexini Legal Booking Panel And Website

Mirlexini Legal Booking Panel And Website

End-to-end WordPress platform for Mirlexini (mirlexini.com): lawyer appointment booking with Bookly, Zibal payments, and a JetEngine Profile...

PHP MySQL JavaScript WordPress Plugin Development WordPress JetEngine Bookly Elementor
Responsive Design Admin Panel Authentication SEO Optimized File Upload RTL Support Drag & Drop Payment Gateway Comment System Content Management Appointment Booking Client Portal Document Management MySQL Database Views Video Consultation
★ 0.0 (0 ratings)

Share

Overview

Mirlexini is a production WordPress legal consultation platform where clients book lawyer appointments online, pay via Zibal, and manage everything from a JetEngine-powered front-end panel—not wp-admin. Two custom DevAmir plugins extend JetEngine and Bookly: Client Docs Manager handles secure document upload, admin text/file replies, and purchased-service dashboards; Devamir Ticket adds a lightweight support channel. The standout integration is a MySQL VIEW layer (purchased_services_view / purchased_services_view_order_by_created_at) that joins Bookly appointment tables with WordPress users so hybrid data—service name, staff, status, payment, and Google Meet links—renders in one RTL table via shortcodes inside the JetEngine profile menu.

The Challenge

Bookly stores bookings in its own schema; JetEngine owns the user panel and custom post types (client_documents). WordPress user IDs do not map cleanly to Bookly customers out of the box, and online consultations need admin-managed Google Meet URLs per appointment. The client also required Persian-only validation on uploads, Jalali dates in tables, login-gated tariff/advice pages, a custom Zibal gateway, and a document workflow where admins reply with both text and files—all without forcing lawyers into wp-admin or duplicating data manually in spreadsheets.

Approach

JetEngine Profile Builder was configured for /panel-client/ with Elementor widgets and jet-profile-menu navigation. Custom plugins register shortcodes (devamir_client_form, devamir_client_reply_table, devamir_user_services, devamir_ticket_tabs, devamir_edit_profile) embedded in panel pages. MySQL VIEWs aggregate bookly_appointments, bookly_services, bookly_customer_appointments, and wp_users—exposed to PHP via $wpdb queries with pagination and status translation. A companion table wp_devamir_google_meet_links stores video-call URLs keyed by appointment_id; admins edit them from a WP_List_Table screen filtered to online/video services. Document flow uses dual persistence: JetEngine CPT client_documents plus wp_devamir_client_documents for fast admin/user tables. Bookly success hooks and a Zibal gateway plugin complete the booking-to-panel journey.

Architecture

Stack: Elementor + Hello Elementor Child, JetEngine 3.x (Profile Builder, CPT, listings), Bookly (appointments/payments), DIGITS (mobile login), DevAmir Client Docs Manager, Devamir Ticket, DevAmir Bookly Zibal Gateway. Custom tables: wp_devamir_client_documents, wp_devamir_google_meet_links, wp_devamir_chat_messages. SQL VIEWs bridge Bookly ↔ WordPress user layer. AJAX endpoints: devamir_submit_doc, save_google_meet_links, submit_ticket, devamir_custom_logout. Admin submenus hang under client_documents CPT. Child theme overrides BooklyL10n.success for post-booking UX and enforces login redirects on /tariffs/ and /request-for-advice/.

Trade-offs

Hybrid data relies on manually maintained SQL VIEWs—schema changes in Bookly upgrades require view migration. Google Meet links are admin-entered, not auto-provisioned via Google Calendar API (simpler ops, manual step per session). Dual storage for documents (CPT + custom table) speeds list queries but needs save_post sync discipline. Zibal merchant ID is plugin-hardcoded; multi-environment deploys need config extraction. Bookly plugin files were environment-dependent; portfolio demo assumes Bookly + JetEngine exports are imported together. Theme path uses hello-elementor-child under a nested themes/ folder—worth normalizing on migration.

Results

Clients book legal consultations on Mirlexini, pay through Zibal, and land in a unified RTL panel: my services (Bookly + VIEW data), video session links, document upload with admin replies, tickets, and profile edit—without touching wp-admin. Admins manage document replies, online consultation Meet links, and ticket answers from dedicated list tables. The project demonstrates how JetEngine plus small complementary PHP plugins and MySQL VIEWs can replace a full custom SaaS backend for niche legal booking workflows.

Key Learnings

MySQL VIEWs are the cleanest way to present cross-plugin booking data in WordPress shortcodes when ORM-level APIs are missing or slow to customize. Keeping JetEngine for UI/routing and PHP plugins for transactional logic (uploads, payments, Meet links) avoids overloading Crocoblock listings with raw SQL. Nonce-separated AJAX namespaces (devamir_submit_doc vs save_google_meet_links) prevent admin/user script collisions. Jalali formatting should live in one helper (dev_cdm_format_jalali) reused across tables. Post-booking UX belongs in BooklyL10n.success override, not theme templates, so Elementor page edits do not break confirmation flows.