{"id":14402,"date":"2025-09-02T16:06:44","date_gmt":"2025-09-02T13:06:44","guid":{"rendered":"https:\/\/dhtmlx.com\/blog\/?p=14402"},"modified":"2025-09-02T18:35:20","modified_gmt":"2025-09-02T15:35:20","slug":"dhtmlx-scheduler-booking-components-shine-new-react-doctor-appointment-demo","status":"publish","type":"post","link":"https:\/\/dhtmlx.com\/blog\/dhtmlx-scheduler-booking-components-shine-new-react-doctor-appointment-demo\/","title":{"rendered":"DHTMLX Scheduler and Booking Components Shine in New React Doctor Appointment Demo"},"content":{"rendered":"<p>Booking and scheduling are two crucial operations of online services provided by various organizations (<a href=\"https:\/\/dhtmlx.com\/blog\/customer-spotlight-dhtmlx-scheduler-clinicea-part-2\/\" rel=\"noopener\" target=\"_blank\">hospitals<\/a>, <a href=\"https:\/\/dhtmlx.com\/blog\/dhtmlx-startups-scheduler-hotel-reservations-bookmenow-app\/\" rel=\"noopener\" target=\"_blank\">hotels<\/a>, beauty salons, etc). They set a foundation for effective time management and well-coordinated workflows. While booking streamlines the process of securing appointments (e.g., reserving a doctor\u2019s appointment), scheduling ensures that the organization&#8217;s resources (employees) are used effectively to tackle the workload. That is why these functionalities are demanded in web apps used by such organizations. <\/p>\n<p>Today, we are excited to present a new <a href=\"https:\/\/dhtmlx.com\/docs\/demo\/doctor-appointment-react\/\" rel=\"noopener\" target=\"_blank\">React-based Doctor Appointment demo<\/a>. It vividly demonstrates how to combine scheduling and booking functionalities into a single app with DHTMLX, while React ensures its strong and reliable foundation. In this blog post, we\u2019ll explore the main functional and architectural peculiarities of this demo project and the role of DHTMLX Scheduler and Booking in it.<\/p>\n<h2>User Interface Sections<\/h2>\n<p>The fast and responsive UI of our <a href=\"https:\/\/dhtmlx.com\/docs\/demo\/doctor-appointment-react\/demo-app\/#\/login\" rel=\"noopener\" target=\"_blank\">online Doctor Appointment Scheduling app<\/a> comes with dynamic theme switching and 3 main sections &#8211; Authorization (Login), Client mode, and Manager mode. Authorization determines what type of user (client or manager) logs into the system and what actions are permitted for them. DHTMLX components come into play in Client and Manager modes, delivering an intuitive experience for both types of end-users. Now, we\u2019ll review all three sections of our demo app in more detail. <\/p>\n<h3>Authorization (Login)<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image1.png\" alt=\"React Doctor Appointment demo - Login\" width=\"1913\" height=\"666\" class=\"aligncenter size-full wp-image-14403\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image1.png 1913w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image1-300x104.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image1-768x267.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image1-1024x356.png 1024w\" sizes=\"auto, (max-width: 1913px) 100vw, 1913px\" \/><br \/>\nThe correct behavior of our Doctor Appointment app implies a secure, role-based access to data and features. In other words, any user has to log in as a client (patient) or a manager to get access to the corresponding part of the app. This essential division of roles is achieved with the authorization feature. In real-world scenarios, authorization helps prevent the exposure of sensitive data and unauthorized actions.  <\/p>\n<h3>Client Mode<\/h3>\n<p>Clinic mode provides a range of actions commonly expected by patients when booking and managing appointments at medical facilities online:<\/p>\n<ul>\n<li>Book an appointment by using the capabilities of the DHTMLX <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxBooking\/\" rel=\"noopener\" target=\"_blank\">Booking widget<\/a>, such as searching for a medical specialist (by name or area of expertise), specifying a suitable date and time for a visit, and adding personal info. <\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image2.png\" alt=\"Client mode -  book an appointment\" width=\"1871\" height=\"826\" class=\"aligncenter size-full wp-image-14404\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image2.png 1871w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image2-300x132.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image2-768x339.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image2-1024x452.png 1024w\" sizes=\"auto, (max-width: 1871px) 100vw, 1871px\" \/><\/p>\n<ul>\n<li>Review all upcoming and past appointments via the Scheduler\u2019s Agenda and Month views.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image5.png\" alt=\"Client mode - appointment review\" width=\"1875\" height=\"844\" class=\"aligncenter size-full wp-image-14406\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image5.png 1875w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image5-300x135.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image5-768x346.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image5-1024x461.png 1024w\" sizes=\"auto, (max-width: 1875px) 100vw, 1875px\" \/><\/p>\n<h3>Manager Mode<\/h3>\n<p>Manager mode offers administrators and clinical staff a powerful set of instruments for keeping everything on track, from clients&#8217; appointments to the staff schedule and the clinic&#8217;s work. Here is the list of available options:<\/p>\n<ul>\n<li><strong>Dashboard<\/strong> provides a summary of the current working day, including information on appointments, patients, and staff schedule.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image3.png\" alt=\"Manager mode - dashboard\" width=\"1915\" height=\"841\" class=\"aligncenter size-full wp-image-14407\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image3.png 1915w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image3-300x132.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image3-768x337.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image3-1024x450.png 1024w\" sizes=\"auto, (max-width: 1915px) 100vw, 1915px\" \/><\/p>\n<ul>\n<li><strong>Appointment management<\/strong> allows looking through clients\u2019 current appointments using a mini-calendar, filters, and popular views (Day, Week, Month) of our <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxScheduler\/\" rel=\"noopener\" target=\"_blank\">JavaScript Scheduler<\/a>. Admins can create a new appointment via the lightbox, drag-and-drop, or the &#8220;New Appointment&#8221; button.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image4.png\" alt=\"Manager mode - appointment management\" width=\"1870\" height=\"833\" class=\"aligncenter size-full wp-image-14408\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image4.png 1870w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image4-300x134.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image4-768x342.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image4-1024x456.png 1024w\" sizes=\"auto, (max-width: 1870px) 100vw, 1870px\" \/><\/p>\n<ul>\n<li><strong>Employee Scheduler<\/strong> serves to arrange and review the work schedules of doctors in the Scheduler\u2019s Timeline and Month views.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image8.png\" alt=\"Manager mode - employee scheduler\" width=\"1870\" height=\"833\" class=\"aligncenter size-full wp-image-14409\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image8.png 1870w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image8-300x134.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image8-768x342.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image8-1024x456.png 1024w\" sizes=\"auto, (max-width: 1870px) 100vw, 1870px\" \/><\/p>\n<ul>\n<li><strong>Clinic Settings<\/strong> give an opportunity to specify general settings for the whole facility (opening hours, holidays, appointment duration, etc.).<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image6.png\" alt=\"Manager mode - Clinic Settings\" width=\"1873\" height=\"847\" class=\"aligncenter size-full wp-image-14410\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image6.png 1873w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image6-300x136.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image6-768x347.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2025\/09\/image6-1024x463.png 1024w\" sizes=\"auto, (max-width: 1873px) 100vw, 1873px\" \/><\/p>\n<p>As you can see, DHTMLX Scheduler and Booking enrich our Doctor Appointment app with advanced worktime scheduling and effective booking management capabilities. <\/p>\n<p>Now, it is time to focus on the underlying architecture of this demo and reveal the technology stack that fuels the functional diversity of this project.<\/p>\n<h2>Demo\u2019s Architecture<\/h2>\n<p>From a technical standpoint, we kept things modern but straightforward. On the frontend, we opted for React, as it is highly demanded, flexible, and performant. Our framework-agnostic Scheduler and Booking components fit in smoothly into React-based projects.<\/p>\n<p>On the backend side, we decided to use a reliable and well-known option, namely  Node.js with Express. For data storage, we leaned on the PostgreSQL database. Also, we added the Sequelize tool for convenient interaction with the database.<\/p>\n<p>And finally, the whole demo app is packed into containers (dockerized), making it easier to use for developers in their own environments.<\/p>\n<p>Our new <a href=\"https:\/\/dhtmlx.com\/docs\/demo\/doctor-appointment-react\/demo-app\/#\/login\" rel=\"noopener\" target=\"_blank\">demo app<\/a> is a ready-made example of how complex scheduling and booking functionalities can be integrated into modern apps with DHTMLX. Therefore, developers can explore how it all works in our demo and use it as a starting point for their own scheduling and booking scenarios.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Booking and scheduling are two crucial operations of online services provided by various organizations (hospitals, hotels, beauty salons, etc). They set a foundation for effective time management and well-coordinated &#8230;<\/p>\n","protected":false},"author":101014,"featured_media":14405,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[72],"tags":[33,78,15],"class_list":["post-14402","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-general","tag-all-posts","tag-booking","tag-dhtmlxscheduler"],"_links":{"self":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/14402","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/users\/101014"}],"replies":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/comments?post=14402"}],"version-history":[{"count":5,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/14402\/revisions"}],"predecessor-version":[{"id":14419,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/14402\/revisions\/14419"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media\/14405"}],"wp:attachment":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media?parent=14402"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/categories?post=14402"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/tags?post=14402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}