<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dulan Nithila Liyanarachchi</title>
    <description>The latest articles on DEV Community by Dulan Nithila Liyanarachchi (@dulannithilaliyanarachchi).</description>
    <link>https://dev.to/dulannithilaliyanarachchi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4101167%2F7c35c816-f60e-4813-9e81-e5d2bf0eafe1.png</url>
      <title>DEV Community: Dulan Nithila Liyanarachchi</title>
      <link>https://dev.to/dulannithilaliyanarachchi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dulannithilaliyanarachchi"/>
    <language>en</language>
    <item>
      <title>Check out my CoderLegion profile &amp; latest post!</title>
      <dc:creator>Dulan Nithila Liyanarachchi</dc:creator>
      <pubDate>Tue, 22 Sep 2026 06:46:47 +0000</pubDate>
      <link>https://dev.to/dulannithilaliyanarachchi/check-out-my-coderlegion-profile-latest-post-22b4</link>
      <guid>https://dev.to/dulannithilaliyanarachchi/check-out-my-coderlegion-profile-latest-post-22b4</guid>
      <description>&lt;p&gt;🏆 Points: 245 | 🎱 Badges: 16 | 👥 Followers: 6 | 📄 Posts: 4&lt;/p&gt;

&lt;p&gt;Latest post: "A Complete Guide to Install XAMPP, Configure Apache &amp;amp; MySQL Services, and Deploy WordPress Using Pow"&lt;br&gt;
Read it here: &lt;a href="https://coderlegion.com/26591/complete-guide-install-xampp-configure-apache-mysql-services-and-deploy-wordpress-using" rel="noopener noreferrer"&gt;https://coderlegion.com/26591/complete-guide-install-xampp-configure-apache-mysql-services-and-deploy-wordpress-using&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;View my full profile: &lt;a href="https://coderlegion.com/user/dulannithilaliyanarachchi" rel="noopener noreferrer"&gt;https://coderlegion.com/user/dulannithilaliyanarachchi&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>A Complete Guide to Install XAMPP, Configure Apache &amp; MySQL Services, and Deploy WordPress Using PowerShell Commands</title>
      <dc:creator>Dulan Nithila Liyanarachchi</dc:creator>
      <pubDate>Wed, 02 Sep 2026 16:09:44 +0000</pubDate>
      <link>https://dev.to/dulannithilaliyanarachchi/a-complete-guide-to-install-xampp-configure-apache-mysql-services-and-deploy-wordpress-using-3f0h</link>
      <guid>https://dev.to/dulannithilaliyanarachchi/a-complete-guide-to-install-xampp-configure-apache-mysql-services-and-deploy-wordpress-using-3f0h</guid>
      <description>&lt;p&gt;Setting up a reliable local web development environment is one of the first steps for anyone working with WordPress, PHP, MySQL, or Apache. While XAMPP makes this process easier by bundling the required components into a single package, configuring the environment properly, especially through the command line, can still be challenging.&lt;/p&gt;

&lt;p&gt;Many online tutorials focus only on the graphical interface and often skip essential configuration steps, troubleshooting techniques, or service management. As a result, beginners frequently encounter issues with Apache, MySQL, PHP compatibility, phpMyAdmin, or WordPress installation.&lt;/p&gt;

&lt;p&gt;To address these challenges, I created a comprehensive guide that demonstrates how to install, configure, and manage an entire XAMPP and WordPress development environment using Windows PowerShell.&lt;/p&gt;

&lt;p&gt;Whether you're a student learning web technologies, an educator preparing laboratory sessions, or a developer looking for a repeatable deployment process, this guide provides a structured approach from start to finish.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Guide?
&lt;/h2&gt;

&lt;p&gt;A properly configured local development environment saves hours of troubleshooting and creates a consistent workflow for development, testing, and learning.&lt;/p&gt;

&lt;p&gt;Instead of relying solely on mouse clicks, this guide introduces a command-driven approach that helps users understand what happens behind the scenes while also making the installation process easier to reproduce across multiple machines.&lt;/p&gt;

&lt;p&gt;The guide follows a complete workflow covering installation, service management, WordPress deployment, version upgrades, and troubleshooting.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You'll Learn
&lt;/h2&gt;

&lt;p&gt;The guide covers every major step required to build a local WordPress development environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. XAMPP Installation
&lt;/h3&gt;

&lt;p&gt;Learn how to install XAMPP using PowerShell commands, verify the installation, and safely uninstall and reinstall it when necessary.&lt;/p&gt;

&lt;p&gt;Topics include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Downloading XAMPP&lt;/li&gt;
&lt;li&gt;Silent installation&lt;/li&gt;
&lt;li&gt;Installation verification&lt;/li&gt;
&lt;li&gt;Troubleshooting incomplete installations&lt;/li&gt;
&lt;li&gt;Safe uninstallation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Apache Service Configuration
&lt;/h3&gt;

&lt;p&gt;Apache is configured as a Windows Service, allowing it to be managed directly through PowerShell.&lt;/p&gt;

&lt;p&gt;You'll learn how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Apache as a service&lt;/li&gt;
&lt;li&gt;Verify service status&lt;/li&gt;
&lt;li&gt;Start and stop Apache&lt;/li&gt;
&lt;li&gt;Manage services efficiently&lt;/li&gt;
&lt;li&gt;Troubleshoot service-related issues&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. MySQL Service Installation
&lt;/h3&gt;

&lt;p&gt;Database configuration is an essential part of every WordPress deployment.&lt;/p&gt;

&lt;p&gt;This section explains how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install MySQL as a Windows Service&lt;/li&gt;
&lt;li&gt;Verify successful installation&lt;/li&gt;
&lt;li&gt;Start and stop the service&lt;/li&gt;
&lt;li&gt;Prepare the database environment for WordPress&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. WordPress Deployment on XAMPP
&lt;/h3&gt;

&lt;p&gt;One of the largest sections of the guide walks through deploying WordPress on a local server.&lt;/p&gt;

&lt;p&gt;Topics include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating WordPress databases&lt;/li&gt;
&lt;li&gt;Configuring users and permissions&lt;/li&gt;
&lt;li&gt;Downloading WordPress&lt;/li&gt;
&lt;li&gt;Extracting and organizing files&lt;/li&gt;
&lt;li&gt;Running the installation&lt;/li&gt;
&lt;li&gt;Configuring the initial website&lt;/li&gt;
&lt;li&gt;Accessing the WordPress dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Upgrading PHP
&lt;/h3&gt;

&lt;p&gt;Modern WordPress versions require newer PHP releases.&lt;/p&gt;

&lt;p&gt;The guide explains how to safely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Replace outdated PHP versions&lt;/li&gt;
&lt;li&gt;Configure &lt;code&gt;php.ini&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Enable required PHP extensions&lt;/li&gt;
&lt;li&gt;Update Apache configuration&lt;/li&gt;
&lt;li&gt;Verify the installation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. Upgrading phpMyAdmin
&lt;/h3&gt;

&lt;p&gt;Many bundled XAMPP installations include older versions of phpMyAdmin.&lt;/p&gt;

&lt;p&gt;The guide demonstrates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Installing the latest release&lt;/li&gt;
&lt;li&gt;Preserving existing configurations&lt;/li&gt;
&lt;li&gt;Migrating settings safely&lt;/li&gt;
&lt;li&gt;Verifying successful upgrades&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7. Daily Service Management
&lt;/h3&gt;

&lt;p&gt;Instead of opening the XAMPP Control Panel every time, the guide shows how to manage services directly from PowerShell.&lt;/p&gt;

&lt;p&gt;This includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Starting Apache&lt;/li&gt;
&lt;li&gt;Starting MySQL&lt;/li&gt;
&lt;li&gt;Opening WordPress&lt;/li&gt;
&lt;li&gt;Accessing phpMyAdmin&lt;/li&gt;
&lt;li&gt;Stopping services after development&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Use PowerShell Instead of Only the XAMPP Control Panel?
&lt;/h2&gt;

&lt;p&gt;Learning to manage services through PowerShell provides several long-term advantages.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster setup&lt;/li&gt;
&lt;li&gt;Easier automation&lt;/li&gt;
&lt;li&gt;Better troubleshooting&lt;/li&gt;
&lt;li&gt;Repeatable deployments&lt;/li&gt;
&lt;li&gt;Improved understanding of Windows service management&lt;/li&gt;
&lt;li&gt;Practical DevOps and system administration skills&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These skills become increasingly valuable when working with larger development environments or automating deployments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Should Read This Guide?
&lt;/h2&gt;

&lt;p&gt;This guide is suitable for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web Developers&lt;/li&gt;
&lt;li&gt;WordPress Developers&lt;/li&gt;
&lt;li&gt;PHP Developers&lt;/li&gt;
&lt;li&gt;Computer Science Students&lt;/li&gt;
&lt;li&gt;Information Technology Students&lt;/li&gt;
&lt;li&gt;Software Engineering Undergraduates&lt;/li&gt;
&lt;li&gt;Lecturers and Instructors&lt;/li&gt;
&lt;li&gt;System Administrators&lt;/li&gt;
&lt;li&gt;Beginners learning local web development&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is especially useful in academic environments where students need to deploy multiple local development environments using consistent procedures.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub Repository
&lt;/h2&gt;

&lt;p&gt;The complete guide and supporting resources are available on GitHub.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/NithilaLD/XAMPP-Wordpress-Powershell-Guide" rel="noopener noreferrer"&gt;XAMPP-WordPress-PowerShell-Guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you find this resource useful, consider giving the repository a star. It helps increase visibility and encourages further improvements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Also Published On
&lt;/h2&gt;

&lt;p&gt;This article is also available on the following platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;a href="https://www.linkedin.com/pulse/complete-guide-installing-xampp-configuring-apache-liyanarachchi-6fqzc/" rel="noopener noreferrer"&gt;Read on LinkedIn&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medium:&lt;/strong&gt; &lt;a href="https://dulannithilaliyanarachchi.medium.com/a-complete-guide-to-install-xampp-configure-apache-mysql-services-and-deploy-wordpress-b6076092f948" rel="noopener noreferrer"&gt;Read on Medium&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS:&lt;/strong&gt; &lt;a href="https://builder.aws.com/content/3ImJ4y1l6v3vxDM6zoSjnTskHRi/a-complete-guide-to-install-xampp-configure-apache-and-mysql-services-and-deploy-wordpress-using-powershell-commands" rel="noopener noreferrer"&gt;Read on AWS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CODERLEGION:&lt;/strong&gt; &lt;a href="https://coderlegion.com/26591/complete-guide-install-xampp-configure-apache-mysql-services-and-deploy-wordpress-using" rel="noopener noreferrer"&gt;Read on CODERLEGION&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Acknowledgements
&lt;/h2&gt;

&lt;p&gt;I would like to express my sincere gratitude to &lt;a href="https://www.linkedin.com/in/madusanka-mithrananda/" rel="noopener noreferrer"&gt;&lt;strong&gt;Mr. Madusanka Mithrananda&lt;/strong&gt;&lt;/a&gt; for his invaluable guidance, encouragement, and continuous support throughout the development of this guide and the article. His expertise, constructive feedback, and mentorship were instrumental in shaping this work and deepening my understanding of XAMPP, PowerShell, and WordPress deployment.&lt;/p&gt;

&lt;p&gt;I truly appreciate his dedication to teaching, willingness to share knowledge, and the encouragement provided throughout this journey. His guidance has been an invaluable part of the successful completion of this guide.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Documentation is one of the most valuable yet overlooked contributions to the developer community. A clear, repeatable guide can save countless hours for students, developers, and educators trying to build reliable development environments.&lt;/p&gt;

&lt;p&gt;This project was created with the goal of simplifying the setup process while encouraging developers to understand the underlying configuration instead of simply following GUI-based installation steps.&lt;/p&gt;

&lt;p&gt;I hope it serves as a practical reference for anyone working with XAMPP, Apache, MySQL, PHP, PowerShell, and WordPress.&lt;/p&gt;

&lt;p&gt;If you have suggestions, discover improvements, or would like to contribute, feel free to open an issue or submit a pull request on GitHub.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

</description>
      <category>php</category>
      <category>mysql</category>
      <category>wordpress</category>
      <category>powershell</category>
    </item>
    <item>
      <title>Building a Real-Time Payment Gateway Integration with PHP, PayHere, ngrok, and MySQL</title>
      <dc:creator>Dulan Nithila Liyanarachchi</dc:creator>
      <pubDate>Wed, 02 Sep 2026 14:59:07 +0000</pubDate>
      <link>https://dev.to/dulannithilaliyanarachchi/building-a-real-time-payment-gateway-integration-with-php-payhere-ngrok-and-mysql-dnf</link>
      <guid>https://dev.to/dulannithilaliyanarachchi/building-a-real-time-payment-gateway-integration-with-php-payhere-ngrok-and-mysql-dnf</guid>
      <description>&lt;p&gt;Recently, I built a complete &lt;strong&gt;real-time payment gateway integration&lt;/strong&gt; using &lt;strong&gt;PHP, PayHere Sandbox, ngrok, and MySQL&lt;/strong&gt; to simulate and test online payments in a local development environment.&lt;/p&gt;

&lt;p&gt;This project covered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Secure PayHere checkout integration&lt;/li&gt;
&lt;li&gt;Real-time payment callback handling through ngrok&lt;/li&gt;
&lt;li&gt;Transaction logging and MySQL database storage&lt;/li&gt;
&lt;li&gt;Email notifications using PHPMailer&lt;/li&gt;
&lt;li&gt;PDF receipt generation using mPDF&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of the most interesting parts of the project was using &lt;strong&gt;ngrok to expose localhost securely&lt;/strong&gt;, allowing PayHere to communicate with local callback URLs such as &lt;code&gt;notify_url&lt;/code&gt;, &lt;code&gt;return_url&lt;/code&gt;, and &lt;code&gt;cancel_url&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The project structure was designed to keep the workflow clean and modular, with separate files for checkout processing, notifications, verification, configuration, and database handling.&lt;/p&gt;

&lt;p&gt;This implementation was a great hands-on experience in understanding how real-world payment systems work behind the scenes, from &lt;strong&gt;hash generation and callback verification&lt;/strong&gt; to &lt;strong&gt;preventing duplicate transactions and securely handling payment confirmations&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Repository
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/NithilaLD/Building-a-Real-Time-Payment-Gateway-Integration-with-PHP-PayHere-ngrok-and-MySQL/" rel="noopener noreferrer"&gt;https://github.com/NithilaLD/Building-a-Real-Time-Payment-Gateway-Integration-with-PHP-PayHere-ngrok-and-MySQL/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository includes the complete project resources, including the full implementation guide in PDF format, source code files for the payment gateway integration, and database setup scripts required to configure and run the application locally.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;PHP | MySQL | PayHere Sandbox | ngrok | Composer | PHPMailer | mPDF&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Also Published On
&lt;/h2&gt;

&lt;p&gt;This article is also available on the following platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;a href="https://www.linkedin.com/pulse/building-real-time-payment-gateway-integration-php-liyanarachchi-yujgc/" rel="noopener noreferrer"&gt;&lt;strong&gt;Read on LinkedIn&lt;/strong&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medium:&lt;/strong&gt; &lt;a href="https://dulannithilaliyanarachchi.medium.com/building-a-real-time-payment-gateway-integration-with-php-payhere-ngrok-and-mysql-533c5e4a5720" rel="noopener noreferrer"&gt;&lt;strong&gt;Read on Medium&lt;/strong&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS:&lt;/strong&gt; &lt;a href="https://builder.aws.com/content/3ImAUjqYN0gmihHAxXEIlVJoHFn/building-a-real-time-payment-gateway-integration-with-php-payhere-ngrok-and-mysql" rel="noopener noreferrer"&gt;&lt;strong&gt;Read on AWS&lt;/strong&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CODERLEGION:&lt;/strong&gt; &lt;a href="https://coderlegion.com/26585/building-a-real-time-payment-gateway-integration-with-php-payhere-ngrok-and-mysql" rel="noopener noreferrer"&gt;&lt;strong&gt;Read on CODERLEGION&lt;/strong&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>php</category>
      <category>mysql</category>
      <category>ngrok</category>
      <category>payhere</category>
    </item>
    <item>
      <title>Building a Real-Time Dashboard with FastAPI, WebSockets, and MySQL</title>
      <dc:creator>Dulan Nithila Liyanarachchi</dc:creator>
      <pubDate>Tue, 01 Sep 2026 12:17:13 +0000</pubDate>
      <link>https://dev.to/dulannithilaliyanarachchi/building-a-real-time-dashboard-with-fastapi-websockets-and-mysql-1494</link>
      <guid>https://dev.to/dulannithilaliyanarachchi/building-a-real-time-dashboard-with-fastapi-websockets-and-mysql-1494</guid>
      <description>&lt;p&gt;I recently worked on a lightweight real-time dashboard built with &lt;strong&gt;FastAPI&lt;/strong&gt;, &lt;strong&gt;WebSockets&lt;/strong&gt;, and &lt;strong&gt;aiomysql&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The main goal was simple: retrieve live data from a MySQL database and push updates to the frontend in real time without relying on continuous polling.&lt;/p&gt;

&lt;p&gt;This project provided a practical opportunity to explore asynchronous programming, WebSocket communication, and database integration using Python.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Overview
&lt;/h2&gt;

&lt;p&gt;The application uses a &lt;strong&gt;FastAPI backend&lt;/strong&gt; to communicate with a MySQL database and a &lt;strong&gt;WebSocket endpoint&lt;/strong&gt; to deliver database updates to connected clients.&lt;/p&gt;

&lt;p&gt;The overall architecture can be summarized as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MySQL Database
      │
      ▼
   aiomysql
      │
      ▼
FastAPI Backend
      │
      ▼
  WebSocket
      │
      ▼
Frontend Dashboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The WebSocket connection allows the server to push new data directly to the client, making the dashboard capable of displaying updates in real time.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Project Demonstrates
&lt;/h2&gt;

&lt;p&gt;The project covers several important backend development concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setting up Python and the required dependencies&lt;/li&gt;
&lt;li&gt;Building an asynchronous FastAPI backend&lt;/li&gt;
&lt;li&gt;Connecting to MySQL using &lt;code&gt;aiomysql&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Implementing a WebSocket endpoint&lt;/li&gt;
&lt;li&gt;Retrieving database records asynchronously&lt;/li&gt;
&lt;li&gt;Sending live data to connected clients&lt;/li&gt;
&lt;li&gt;Running the application with Uvicorn&lt;/li&gt;
&lt;li&gt;Structuring a simple real-time backend application&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Use WebSockets?
&lt;/h2&gt;

&lt;p&gt;Traditional REST APIs generally follow a request/response model.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client → Request → Server
Client ← Response ← Server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the frontend needs updated information continuously, it may have to repeatedly send requests to the server.&lt;/p&gt;

&lt;p&gt;This is commonly known as &lt;strong&gt;polling&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client → Request
Server → Response

Client → Request
Server → Response

Client → Request
Server → Response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With WebSockets, the client establishes a persistent connection with the server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client ⇄ WebSocket Connection ⇄ Server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The server can then push new information to the client whenever it becomes available.&lt;/p&gt;

&lt;p&gt;This makes WebSockets particularly useful for applications where data needs to be delivered quickly and continuously.&lt;/p&gt;

&lt;h2&gt;
  
  
  Potential Use Cases
&lt;/h2&gt;

&lt;p&gt;This architecture can be useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time dashboards&lt;/li&gt;
&lt;li&gt;Monitoring systems&lt;/li&gt;
&lt;li&gt;Live administration panels&lt;/li&gt;
&lt;li&gt;Student management systems&lt;/li&gt;
&lt;li&gt;Record management applications&lt;/li&gt;
&lt;li&gt;System status monitoring&lt;/li&gt;
&lt;li&gt;Live data visualization&lt;/li&gt;
&lt;li&gt;Notification systems&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Documentation and Source Code
&lt;/h2&gt;

&lt;p&gt;I created a complete guide covering the setup and implementation process, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python installation&lt;/li&gt;
&lt;li&gt;Required package installation&lt;/li&gt;
&lt;li&gt;Project configuration&lt;/li&gt;
&lt;li&gt;Server startup&lt;/li&gt;
&lt;li&gt;Complete &lt;code&gt;main.py&lt;/code&gt; implementation&lt;/li&gt;
&lt;li&gt;FastAPI and WebSocket configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The GitHub repository also includes the documentation and source code for reference.&lt;/p&gt;

&lt;h3&gt;
  
  
  GitHub Repository
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/NithilaLD/fastapi-websocket-realtime-dashboard" rel="noopener noreferrer"&gt;FastAPI WebSocket Real-Time Dashboard - GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Complete Guide (PDF)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source Code (&lt;code&gt;main.py&lt;/code&gt;)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Technologies
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;Backend programming&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FastAPI&lt;/td&gt;
&lt;td&gt;Asynchronous web framework&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WebSockets&lt;/td&gt;
&lt;td&gt;Real-time client-server communication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aiomysql&lt;/td&gt;
&lt;td&gt;Asynchronous MySQL connectivity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MySQL&lt;/td&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Uvicorn&lt;/td&gt;
&lt;td&gt;ASGI server&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This project was a useful exercise in combining &lt;strong&gt;asynchronous programming, database connectivity, and real-time communication&lt;/strong&gt; into a practical backend application.&lt;/p&gt;

&lt;p&gt;FastAPI and WebSockets provide a straightforward foundation for building applications where data needs to move between the server and client with minimal delay.&lt;/p&gt;

&lt;p&gt;I look forward to extending this project with features such as authentication, multiple connected clients, automatic database change detection, improved error handling, and a more advanced frontend dashboard.&lt;/p&gt;

&lt;p&gt;If you are working with FastAPI or real-time applications, I'd be interested to hear about your projects and approaches.&lt;/p&gt;

&lt;h2&gt;
  
  
  Also Published On
&lt;/h2&gt;

&lt;p&gt;This article is also available on the following platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;a href="https://www.linkedin.com/pulse/building-real-time-fastapi-dashboard-websockets-async-liyanarachchi-nvf7c/" rel="noopener noreferrer"&gt;Read on LinkedIn&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medium:&lt;/strong&gt; &lt;a href="https://dulannithilaliyanarachchi.medium.com/building-a-real-time-fastapi-dashboard-with-websockets-and-async-mysql-344d86522a0e" rel="noopener noreferrer"&gt;Read on Medium&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS:&lt;/strong&gt; &lt;a href="https://builder.aws.com/content/3Ij3xiZllF1UvwYpk5OCYx52UfK/building-a-real-time-fastapi-dashboard-with-websockets-and-async-mysql" rel="noopener noreferrer"&gt;Read on AWS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CODERLEGION:&lt;/strong&gt; &lt;a href="https://coderlegion.com/26578/building-a-real-time-dashboard-with-fastapi-websockets-and-mysql" rel="noopener noreferrer"&gt;Read on CODERLEGION&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>backend</category>
      <category>database</category>
      <category>fastapi</category>
      <category>python</category>
    </item>
    <item>
      <title>AI - Powered Automatic Email Sending System for File Uploads</title>
      <dc:creator>Dulan Nithila Liyanarachchi</dc:creator>
      <pubDate>Tue, 01 Sep 2026 11:24:58 +0000</pubDate>
      <link>https://dev.to/dulannithilaliyanarachchi/ai-powered-automatic-email-sending-system-for-file-uploads-3ke5</link>
      <guid>https://dev.to/dulannithilaliyanarachchi/ai-powered-automatic-email-sending-system-for-file-uploads-3ke5</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In many organizations and educational environments, users frequently upload documents and then need to manually prepare and send emails containing information about those files.&lt;/p&gt;

&lt;p&gt;This repetitive process can be time-consuming and inefficient.&lt;/p&gt;

&lt;p&gt;To address this, I developed an &lt;strong&gt;AI-powered automatic email sending system&lt;/strong&gt; that combines &lt;strong&gt;file uploads, document text extraction, AI-generated email content, and automated email delivery&lt;/strong&gt; into a single workflow.&lt;/p&gt;

&lt;p&gt;The project demonstrates how AI APIs can be integrated into a traditional PHP web application to automate document-based communication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Overview
&lt;/h2&gt;

&lt;p&gt;The system provides a web-based interface where users can upload documents.&lt;/p&gt;

&lt;p&gt;Once a file is uploaded, the application:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Validates the uploaded file.&lt;/li&gt;
&lt;li&gt;Extracts text from the document.&lt;/li&gt;
&lt;li&gt;Sends the extracted content to an AI API.&lt;/li&gt;
&lt;li&gt;Generates professional email content using AI.&lt;/li&gt;
&lt;li&gt;Automatically sends the email using PHPMailer.&lt;/li&gt;
&lt;li&gt;Displays success or error notifications to the user.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This creates a streamlined workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Document Upload
      ↓
File Validation
      ↓
Text Extraction
      ↓
AI Processing
      ↓
Email Generation
      ↓
Automated Email Sending
      ↓
User Notification
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Smart File Upload Handling
&lt;/h3&gt;

&lt;p&gt;The application provides a simple and responsive interface for uploading documents.&lt;/p&gt;

&lt;p&gt;Before processing, uploaded files are validated to ensure that only supported and valid files are handled.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI-Generated Email Content
&lt;/h3&gt;

&lt;p&gt;Instead of manually writing an email for every uploaded document, the system uses an AI API to analyze the extracted document content and generate a professional email message.&lt;/p&gt;

&lt;p&gt;This reduces repetitive work while maintaining consistent communication.&lt;/p&gt;

&lt;h3&gt;
  
  
  Automated Email Sending
&lt;/h3&gt;

&lt;p&gt;After generating the email content, the system automatically sends the email to the intended recipient using &lt;strong&gt;PHPMailer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This removes the need for users to manually copy the generated content and send the email themselves.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multi-Format Document Processing
&lt;/h3&gt;

&lt;p&gt;The system supports text extraction from multiple document formats, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PDF documents&lt;/li&gt;
&lt;li&gt;Microsoft Word documents&lt;/li&gt;
&lt;li&gt;Presentation files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The extracted text is then passed to the AI processing stage.&lt;/p&gt;

&lt;h3&gt;
  
  
  User-Friendly Notifications
&lt;/h3&gt;

&lt;p&gt;Toast notifications and session-based alerts provide feedback to users throughout the workflow.&lt;/p&gt;

&lt;p&gt;Users can easily identify whether an upload or email operation was successful or encountered an error.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technologies Used
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Backend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;PHP&lt;/li&gt;
&lt;li&gt;PHPMailer&lt;/li&gt;
&lt;li&gt;AI API Integration&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Document Processing
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Smalot PDF Parser&lt;/li&gt;
&lt;li&gt;PHPWord&lt;/li&gt;
&lt;li&gt;PHP Presentation Reader&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Frontend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  System Workflow
&lt;/h2&gt;

&lt;p&gt;The overall process can be represented as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User
 │
 ▼
Upload Document
 │
 ▼
File Validation
 │
 ▼
Document Text Extraction
 │
 ▼
AI API Processing
 │
 ▼
Generate Email Content
 │
 ▼
PHPMailer
 │
 ▼
Send Email
 │
 ▼
Success / Error Notification
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The main objective is to automate the communication process without requiring the user to manually read the uploaded document, write an email, and send it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Project Matters
&lt;/h2&gt;

&lt;p&gt;Manual email preparation can become a bottleneck when organizations regularly process documents.&lt;/p&gt;

&lt;p&gt;For example, consider an educational platform where lecturers upload course materials or reports and need to notify students or administrators whenever a document is uploaded.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Upload → Read Document → Write Email → Send Email
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the process can be automated as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Upload → AI Processing → Email Sent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This can help to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improve productivity&lt;/li&gt;
&lt;li&gt;Reduce repetitive manual tasks&lt;/li&gt;
&lt;li&gt;Improve communication consistency&lt;/li&gt;
&lt;li&gt;Integrate AI into existing applications&lt;/li&gt;
&lt;li&gt;Automate document-based workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Challenges Faced
&lt;/h2&gt;

&lt;p&gt;Building the system involved several technical challenges.&lt;/p&gt;

&lt;h3&gt;
  
  
  Handling Different File Formats
&lt;/h3&gt;

&lt;p&gt;Different document formats require different approaches for extracting their content.&lt;/p&gt;

&lt;p&gt;Separate document-processing libraries were integrated to handle PDFs, Word documents, and presentation files.&lt;/p&gt;

&lt;h3&gt;
  
  
  Extracting Usable Text
&lt;/h3&gt;

&lt;p&gt;Extracted document content is not always perfectly structured.&lt;/p&gt;

&lt;p&gt;The system therefore needs to process the extracted content before sending it to the AI API.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI Integration
&lt;/h3&gt;

&lt;p&gt;Integrating AI-generated content into an automated backend workflow required handling API requests, responses, errors, and generated content appropriately.&lt;/p&gt;

&lt;h3&gt;
  
  
  Automated Email Delivery
&lt;/h3&gt;

&lt;p&gt;Email delivery introduced additional considerations such as SMTP configuration, error handling, and secure handling of email credentials.&lt;/p&gt;

&lt;h3&gt;
  
  
  User Experience
&lt;/h3&gt;

&lt;p&gt;Since multiple operations take place during the workflow, providing clear feedback to the user was important.&lt;/p&gt;

&lt;p&gt;Toast notifications and session-based messages were implemented to make the process easier to understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Improvements
&lt;/h2&gt;

&lt;p&gt;There are several features planned for future versions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Support for additional file formats&lt;/li&gt;
&lt;li&gt;AI-generated email subject suggestions&lt;/li&gt;
&lt;li&gt;Email scheduling&lt;/li&gt;
&lt;li&gt;Recipient management dashboard&lt;/li&gt;
&lt;li&gt;Upload history tracking&lt;/li&gt;
&lt;li&gt;Enhanced security and validation&lt;/li&gt;
&lt;li&gt;Multi-user authentication&lt;/li&gt;
&lt;li&gt;Processing and email delivery logs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These improvements could make the system more suitable for larger organizational environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Source Code
&lt;/h2&gt;

&lt;p&gt;The complete source code is available on GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/NithilaLD/AI_Powered_Automatic_Email_Sending_System_For_File_Uploads" rel="noopener noreferrer"&gt;GitHub Repository - AI-Powered Automatic Email Sending System&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to explore the project, provide feedback, or contribute improvements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This project was a practical exploration of how &lt;strong&gt;AI can be integrated into existing web applications to automate repetitive workflows&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;By combining:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;File Uploads + Document Processing + AI + Email Automation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the system provides a practical approach to automating document-based communication.&lt;/p&gt;

&lt;p&gt;The project also provided hands-on experience with &lt;strong&gt;PHP backend development, document parsing, API integration, automated email delivery, and workflow automation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I look forward to further improving the project and exploring more ways to integrate AI into practical software solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Also Published On
&lt;/h2&gt;

&lt;p&gt;This article is also available on the following platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;a href="https://www.linkedin.com/pulse/ai-powered-automatic-email-sending-system-file-liyanarachchi-bcyxc" rel="noopener noreferrer"&gt;Read on LinkedIn&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medium:&lt;/strong&gt; &lt;a href="https://dulannithilaliyanarachchi.medium.com/ai-powered-automatic-email-sending-system-for-file-uploads-d22c8f563d4b" rel="noopener noreferrer"&gt;Read on Medium&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS:&lt;/strong&gt; &lt;a href="https://builder.aws.com/content/3Id2VyzNFQQxwgS93ZkdJTnM5iJ/ai-powered-automatic-email-sending-system-for-file-uploads" rel="noopener noreferrer"&gt;Read on AWS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CODERLEGION:&lt;/strong&gt; &lt;a href="https://coderlegion.com/26575/ai-powered-automatic-email-sending-system-for-file-uploads" rel="noopener noreferrer"&gt;Read on CODERLEGION&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>backenddevelopment</category>
      <category>documentprocessing</category>
    </item>
  </channel>
</rss>
