<?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: Arman Rahman</title>
    <description>The latest articles on DEV Community by Arman Rahman (@armanrahman).</description>
    <link>https://dev.to/armanrahman</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1104098%2F7bcadd7f-fbf8-478d-9efc-fb366707b814.jpeg</url>
      <title>DEV Community: Arman Rahman</title>
      <link>https://dev.to/armanrahman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/armanrahman"/>
    <language>en</language>
    <item>
      <title>Trusted HRM Software: Unlock 75% Off | 2025 Buyer’s Guide</title>
      <dc:creator>Arman Rahman</dc:creator>
      <pubDate>Wed, 24 Dec 2025 11:47:45 +0000</pubDate>
      <link>https://dev.to/armanrahman/trusted-hrm-software-unlock-75-off-2025-buyers-guide-1169</link>
      <guid>https://dev.to/armanrahman/trusted-hrm-software-unlock-75-off-2025-buyers-guide-1169</guid>
      <description>&lt;p&gt;This festive season brings joy, laughter, and most importantly, great software deals, so yes, a limited time window has just opened for you and anyone who wants to save big on Trusted HRM Software. &lt;/p&gt;

&lt;p&gt;I chose this product as the big highlight because the 75% discount is genuinely impressive, and it applies to real plans that teams actually use. Still, this blog is not only about one tool. &lt;/p&gt;

&lt;p&gt;The rest of it works as a clear guide that helps you understand why year-end is often the smartest moment to upgrade your Human Resource Management Software, whether you rely on a complete HRMS or a lighter HRIS. &lt;/p&gt;

&lt;p&gt;Usually, the strongest HRM software discounts are available only during the year-end campaigns, where teams finally get access to cloud-based HR platforms and other affordable HR solutions without overspending.&lt;/p&gt;

&lt;p&gt;So, what we have here is the best deal, security checks you should not skip, the essential features that matter, deployment concerns, and how to compare HR vendors with confidence.&lt;/p&gt;

&lt;p&gt;If you plan to upgrade your HR tools this season, keep reading because this guide gives you all the pre-purchase tips you need to save money and avoid guesswork.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Best HR Tech Deal of 2025: Trusted HRM
&lt;/h2&gt;

&lt;p&gt;Trusted HRM stands out as my top pick for the best HR tech deal of 2025. Always, while scouring through the discounts, I check the prices before the discount, so I can understand how much they are giving away and whether the offer is worth my scrutiny. &lt;/p&gt;

&lt;p&gt;Trusted HRM’s pricing felt reasonable even before the discount, and the current offer makes the jump even easier to justify.&lt;/p&gt;

&lt;p&gt;When I looked closely at the pricing plans, the structure felt straightforward. &lt;/p&gt;

&lt;p&gt;The discount pricing is applied across the plans people typically choose, and the subscription discounts actually reduce long-term costs instead of creating confusing tiers. They are also offering more than 12 HR add-ons at 75% discount, and the pricing for all starts at only 9 dollars!&lt;/p&gt;

&lt;p&gt;If you run HR operations on a tight budget, these details matter more than vendors like to admit. Over a full year, the cost savings become noticeable, especially when compared with average HR software pricing in the market.&lt;/p&gt;

&lt;p&gt;This is why Trusted HRM earns its place among the most practical HR Tech Deals this year. It brings stable value without the usual trade-offs that low-priced tools often force on buyers.&lt;/p&gt;

&lt;p&gt;If you are considering it, you may want to explore the plan details next.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Trusted HRM is the Leader in Value and Security
&lt;/h2&gt;

&lt;p&gt;Trusted HRM leads the field because it combines reliable security standards with real value for everyday HR work. The first thing that caught my attention is the strength of its protection with features like single device login and structured credential controls. &lt;/p&gt;

&lt;p&gt;Without a say, these help reduce casual misuse, which is still surprisingly a prevalent issue in many organisations. Most people aren't sold on aesthetics or a catchy interface, but when I explored their platform, it was clean, devoid of usual clutter and very easy to follow.&lt;br&gt;
It hinted at the good-thought of the product team, given how even on my phone, the layout remained easy to follow. Having said that, Trusted HRM maintains strong security and compliance measures aligned with GDPR, SOC2, and ISO. &lt;/p&gt;

&lt;p&gt;If security and user-centric tailored service is what you want, give this offer a check because it is expiring within 8 days!&lt;/p&gt;

&lt;h2&gt;
  
  
  Essential Features to Look for in Leading HR Software Deals
&lt;/h2&gt;

&lt;p&gt;As you begin your HR shopping spree this season, remember that pricing matters, but the real value shows up in how well the software supports your daily workflow.&lt;/p&gt;

&lt;p&gt;If possible, write the HR software features you need and even the add-ons that you may require, in a priority-based hierarchy. &lt;/p&gt;

&lt;p&gt;Then proceed with your search and try to match the offered features with your standards. A proper software features overview saves you from buying tools that look impressive but fail to solve real problems.&lt;/p&gt;

&lt;p&gt;This is also where leading HR software vendors make a difference, because the good ones focus on clarity and practical design instead of overwhelming buyers with unnecessary add-ons.&lt;/p&gt;

&lt;p&gt;While comparing deals, look beyond discounted rates and spend a little time reviewing the HR Tools each vendor offers. Features shape long-term value far more than the price tag.&lt;/p&gt;

&lt;p&gt;Prioritise features first and pricing second. Below, I am giving you a quick lowdown on the core features you should look for when searching for a modern HRM software deal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced Attendance and Geo-Tracking Tools
&lt;/h2&gt;

&lt;p&gt;The new age attendance systems do not just log in time. They make you know the location of every team member and determine the accuracy of the information. Area- Based Attendance manages to capture location in a very simple and precise way. Geo Tracker provides an additional degree of explanation. &lt;/p&gt;

&lt;p&gt;Offices which are dependent on network-based verifications realise that IP based attendance reduces false records and maintains those records. These are the foundations of good workforce management tools and time and attendance systems, particularly when the team involves field-workers or flexible-hour workers. &lt;/p&gt;

&lt;p&gt;The combination of them minimises time fraud, enhances accountability, and maintains better accuracy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automated Payroll and Asset Management
&lt;/h2&gt;

&lt;p&gt;Payroll automation is time-saving because it has a direct connection with attendance data. With payroll, benefit management and HR running in harmony, teams no longer have to scramble at the end of the month and do time-draining manual checks. &lt;/p&gt;

&lt;p&gt;It also monitors the assets, allowing managers to view which equipment is to be used, which is due and which is missing. Such functions are reliant on credible HR Automation tools, and when they act successfully, the rewards are felt instantly. &lt;/p&gt;

&lt;p&gt;Automation reduces errors in manuals, increases the accuracy of records and allows your team to concentrate on decision-making rather than correcting errors. Normally, automated payroll is a safer option when you prefer immediate processing and high compliance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Employee Engagement and Communication Modules
&lt;/h2&gt;

&lt;p&gt;When evaluating an HR tool, I always begin by assessing its capacity to manage communication within the system. The majority of the teams have too many apps, and I search for Live Chat and Meeting tools first.&lt;/p&gt;

&lt;p&gt;These capabilities ensure the discussions remain central and assist teams to act more quickly. I also look at the extent to which the offer lowers the price of these modules during discount season, since communication tools usually lie behind higher plans.&lt;/p&gt;

&lt;p&gt;As well, you should consider characteristics such as employee rewards, write-up and employee self-service portals, as these have a direct impact on engagement and retention. Engagement tools should also be added to your list of comparison to get the actual value of a holiday deal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Governance and Digital Policy Management
&lt;/h2&gt;

&lt;p&gt;Governance shows the degree of seriousness of a tool in supporting structure and consistency. You need to examine whether the platform organises HR policies clearly and whether the system guidelines help users follow them without confusion. &lt;/p&gt;

&lt;p&gt;Strong workflows matter here, and I always look for built-in HR policies and procedures and HR compliance tools, because these features remove the need for separate audit spreadsheets.&lt;/p&gt;

&lt;p&gt;Comparing prices on discounts, I also examine the degree to which the vendors will lower the price of governance modules. These tools are at higher levels for the most part, and thus, a good bargain can render an expensive feature reasonable.&lt;/p&gt;

&lt;p&gt;Governance tools must be at the leading edge of your purchase specifications in case your organisation is big on respecting regulations. &lt;/p&gt;

&lt;h2&gt;
  
  
  Administration and Deployment: How to Switch Software Quickly
&lt;/h2&gt;

&lt;p&gt;Switching software demands planning, so I begin by estimating implementation and onboarding costs. Discounts help here, especially when a vendor reduces setup fees or offers migration support at a lower rate. I also check whether the system includes onboarding tools and bulk import, because these features shorten deployment time and ease the workload for HR teams.&lt;/p&gt;

&lt;p&gt;To compare offers, I often calculate the cost of HR hours and match that against the price difference between plans. This simple math shows which deal actually saves money.&lt;/p&gt;

&lt;p&gt;If you want a smooth transition, prepare for migration early and add both time and discount value to your calculation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bulk Import and Rapid Onboarding
&lt;/h2&gt;

&lt;p&gt;The extent of bulk import will always inform you of how efficient a platform will be to put into place. Start by checking its mapping and data validation in the process of HR data migration. A solvent import tool will accelerate user creation and remove manual cleanup.&lt;/p&gt;

&lt;p&gt;I also check how well the onboarding experience connects with these steps, since strong onboarding tools help new users settle in faster. &lt;/p&gt;

&lt;p&gt;Comparing deals, you should also observe whether or not bulk import is in standard plans or where an upgrade is placed. Occasionally, a few extra dollars could save dozens of hours in onboarding. Select a deal that involves bulk import at the beginning, in case your team is expanding rapidly.&lt;/p&gt;

&lt;p&gt;Now that you know which features matter, the next step is evaluating the deals themselves. &lt;/p&gt;

&lt;h2&gt;
  
  
  Strategic Buying Guide: How to Evaluate HR Tech Deals
&lt;/h2&gt;

&lt;p&gt;When you are evaluating HR tech deals, start by comparing vendors side by side. Look at how transparently they present their plans and how they justify the pricing. A good vendor comparison makes it clear what you gain for each tier, and a strong hr vendor evaluation helps you filter out tools that overcharge for basic features. &lt;/p&gt;

&lt;p&gt;You can also break down HR software pricing into setup, usage, and long-term scalability. I can tell you that most deals look attractive on the surface, but over time, you realise you are getting charged for fees you didn't sign up for.&lt;/p&gt;

&lt;p&gt;So always ask vendors about hidden costs and future upgrades. Create a small checklist before you buy so you stay focused on value instead of hype.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checking for Hidden Fees vs. Transparent Pricing
&lt;/h2&gt;

&lt;p&gt;As already mentioned, always watch for hidden fees when you are reviewing HR software deals. Setups often carry surprise setup fees, and some vendors charge extra for support, integrations, or reports.&lt;/p&gt;

&lt;p&gt;To avoid confusion, you must request a full breakdown using an HR software pricing comparison, because this approach exposes inflated items quickly.&lt;br&gt;
Check whether the discount includes or excludes add-ons because some vendors promote HR tech coupon codes, but limit the offer to base plans only, which reduces the actual value.&lt;/p&gt;

&lt;p&gt;Before you sign anything, insist on transparent pricing so you know exactly what you are paying for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scalability and Security Compliance
&lt;/h2&gt;

&lt;p&gt;Scalability sits at the centre of every long-term HR decision. When you evaluate vendors, review their security and compliance standards first. Certifications like GDPR, SOC2, and ISO help you understand how seriously they treat data protection. &lt;/p&gt;

&lt;p&gt;Then you should check whether the system supports integrations and whether the design adapts to future growth. I also run a quick review of scalability and HR security to see how the platform performs under load, because these factors matter once the team expands.&lt;/p&gt;

&lt;p&gt;Before choosing a deal, confirm the vendor’s certifications and make sure the system can grow with your organisation.&lt;/p&gt;

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

&lt;p&gt;The current 75 percent discount creates a rare chance to secure reliable and affordable HR software at a much lower cost than usual. Deals like this make affordable HR software accessible to smaller teams and help larger organisations control expenses without sacrificing essential features.&lt;/p&gt;

&lt;p&gt;You gain real cost savings, sharper oversight of payroll and benefits management, and stronger engagement through improved communication and employee engagement tools. &lt;/p&gt;

&lt;p&gt;Once you find a deal that aligns with your needs, compare the plan tiers, confirm the limited-time offer, and choose the one that fits your long-term goals.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://trustedhrm.com" rel="noopener noreferrer"&gt;Grab the offer&lt;/a&gt; while it is available and build your HRM stack at a rate that rarely shows up.&lt;/p&gt;

</description>
      <category>onesttech</category>
      <category>helloarman</category>
      <category>software</category>
      <category>hrm</category>
    </item>
    <item>
      <title>How to Handle Automatic Logout Due to Inactivity in MySQL</title>
      <dc:creator>Arman Rahman</dc:creator>
      <pubDate>Wed, 30 Apr 2025 06:22:51 +0000</pubDate>
      <link>https://dev.to/armanrahman/how-to-handle-automatic-logout-due-to-inactivity-in-mysql-3iai</link>
      <guid>https://dev.to/armanrahman/how-to-handle-automatic-logout-due-to-inactivity-in-mysql-3iai</guid>
      <description>&lt;p&gt;&lt;strong&gt;ERROR:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You have been automatically logged out due to inactivity of 1440 seconds. Once you log in again, you should be able to resume the work where you left off.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Follow these Steps:&lt;/p&gt;

&lt;p&gt;Add this line to &lt;code&gt;/config.inc.php&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$cfg['LoginCookieValidity'] = 36000;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In &lt;code&gt;/setup/lib/index.lib.php&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$cf-&amp;gt;getValue('LoginCookieValidity') &amp;gt; 36000;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you don't already have a &lt;code&gt;.htaccess&lt;/code&gt; file for your phpMyAdmin site, create one, and add the following line to override the default PHP session timeout:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php_value session.gc_maxlifetime 36000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>phpmyadmin</category>
      <category>webdev</category>
      <category>help</category>
    </item>
    <item>
      <title>How to Host a Laravel Script on a Local LAN Network and Access It From Any Connected Device</title>
      <dc:creator>Arman Rahman</dc:creator>
      <pubDate>Tue, 10 Dec 2024 09:38:46 +0000</pubDate>
      <link>https://dev.to/armanrahman/how-to-host-a-laravel-script-on-a-local-lan-network-and-access-it-from-any-connected-device-4jf6</link>
      <guid>https://dev.to/armanrahman/how-to-host-a-laravel-script-on-a-local-lan-network-and-access-it-from-any-connected-device-4jf6</guid>
      <description>&lt;p&gt;Sometimes, we need to test a local Laravel project on a mobile device or another device without deploying it to a server. By following a few simple steps, you can easily set up your Laravel application on a local LAN network and make it accessible to all connected devices.&lt;/p&gt;

&lt;p&gt;Run This command on your laravel project&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan serve --host=0.0.0.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Go to the search button search for cmd and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ipconfig 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy &lt;code&gt;IPv4 Address&lt;/code&gt; from &lt;code&gt;Wireless LAN adapter Wi-Fi&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Example: 192.168.0.138&lt;/p&gt;

&lt;p&gt;Your task is done. You just have to search like this on other devices that connected with the same LAN or Router Connection.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://192.168.0.138:8000" rel="noopener noreferrer"&gt;http://192.168.0.138:8000&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>Add Google ReCaptcha To Laravel Project</title>
      <dc:creator>Arman Rahman</dc:creator>
      <pubDate>Tue, 03 Sep 2024 07:18:54 +0000</pubDate>
      <link>https://dev.to/armanrahman/add-google-recaptcha-to-laravel-project-2g5i</link>
      <guid>https://dev.to/armanrahman/add-google-recaptcha-to-laravel-project-2g5i</guid>
      <description>&lt;p&gt;Without using any package we can easily add Google Recaptcha to the laravel project&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdokku467s2ww4dxbsz54.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdokku467s2ww4dxbsz54.gif" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 1: Go to the &lt;a href="https://www.google.com/recaptcha/admin/create" rel="noopener noreferrer"&gt;Google reCAPTCHA&lt;/a&gt; website &lt;code&gt;(https://www.google.com/recaptcha/admin/create)&lt;/code&gt; and log in with your Google account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzj11ffohzq5ue5jhw71p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzj11ffohzq5ue5jhw71p.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Choose the &lt;code&gt;reCAPTCHA v2&lt;/code&gt;.&lt;br&gt;
Step 3: Select the “I’m not a robot” Checkbox.&lt;br&gt;
Step 4: In the Domains section, enter your website domain(s) where the reCAPTCHA will be used. For development purposes, you can use “localhost” as one of the domains.&lt;br&gt;
Step 5: Accept the reCAPTCHA Terms of Service, and click the “Submit” button.&lt;/p&gt;

&lt;p&gt;Step 6: add this on &lt;code&gt;.env&lt;/code&gt; and replace it with your site key and secret &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

RECAPTCHA_SITE_KEY=[your_site_key]
RECAPTCHA_SECRET_KEY=[your_secret_key]
RECAPTCHA_SITE=https://www.google.com/recaptcha/admin/


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Step 7: Add this link to your head tag&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&amp;lt;script async src="https://www.google.com/recaptcha/api.js"&amp;gt;&amp;lt;/script&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Step 8: Add this to your form &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&amp;lt;!-- Google Recaptcha Widget--&amp;gt;
&amp;lt;div class="g-recaptcha mt-4" data-sitekey={{config('services.recaptcha.key')}}&amp;gt;&amp;lt;/div&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Step 9: Add this to the &lt;code&gt;config/services.php&lt;/code&gt; file&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

'recaptcha' =&amp;gt; [
        'key' =&amp;gt; env('RECAPTCHA_SITE_KEY'),
        'secret' =&amp;gt; env('RECAPTCHA_SECRET_KEY'),
    ]


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Step 10: validate with this &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

$request-&amp;gt;validate([
'g-recaptcha-response' =&amp;gt; 'required'
], [], [
'g-recaptcha-response.required' =&amp;gt; 'Captcha is required',
])


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>laravel</category>
      <category>recaptcha</category>
      <category>armanrahman</category>
      <category>nopackage</category>
    </item>
    <item>
      <title>Add Captcha On Laravel Forms</title>
      <dc:creator>Arman Rahman</dc:creator>
      <pubDate>Sun, 25 Aug 2024 04:40:56 +0000</pubDate>
      <link>https://dev.to/armanrahman/add-captcha-on-laravel-forms-2i0e</link>
      <guid>https://dev.to/armanrahman/add-captcha-on-laravel-forms-2i0e</guid>
      <description>&lt;p&gt;To add Captcha to Laravel form without any API Connection &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzwnj5brwzhbo72anvn4b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzwnj5brwzhbo72anvn4b.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Install &lt;code&gt;mews/captcha&lt;/code&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

composer require mews/captcha


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Find the providers key in config/app.php and register the Captcha Service Provider. for for Laravel 5.1+&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

'providers' =&amp;gt; [
        // ...
        Mews\Captcha\CaptchaServiceProvider::class,
    ]


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Find the aliases key in config/app.php.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

'aliases' =&amp;gt; [
        // ...
        'Captcha' =&amp;gt; Mews\Captcha\Facades\Captcha::class,
    ]


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;publish &lt;code&gt;mews/captcha&lt;/code&gt; by running - &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

$ php artisan vendor:publish


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Add this to .env to disable captcha&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

CAPTCHA_DISABLE=true


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Add this on laravel blade &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

 //register.blade.php
    &amp;lt;img src="{{ captcha_src() }}" alt="captcha"&amp;gt;
        &amp;lt;div class="mt-2"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;input 
            type="text" name="captcha" class="form-control @error('captcha') is-invalid @enderror" placeholder="Please Insert Captch"
            &amp;gt;
         @error('captcha') 
         &amp;lt;div class="invalid-feedback"&amp;gt;{{ $message }}&amp;lt;/div&amp;gt; @enderror 


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;in controller validate like this -&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

$request-&amp;gt;validate([
'captcha' =&amp;gt; 'required|captcha'
],[],[
     'captcha.required' =&amp;gt; 'Captcha is required',
     'captcha.captcha' =&amp;gt; 'Captcha is invalid',
])


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>laravel</category>
      <category>captcha</category>
      <category>composer</category>
    </item>
    <item>
      <title>How to Add Stripe Payment Getaway on Laravel | Latest 2024</title>
      <dc:creator>Arman Rahman</dc:creator>
      <pubDate>Wed, 21 Aug 2024 10:38:16 +0000</pubDate>
      <link>https://dev.to/armanrahman/how-to-add-stripe-payment-getaway-on-laravel-latest-2024-1p72</link>
      <guid>https://dev.to/armanrahman/how-to-add-stripe-payment-getaway-on-laravel-latest-2024-1p72</guid>
      <description>&lt;p&gt;On your Laravel project, you can easily add a stripe payment gateway to get payment from customers. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F66kp46b68x2paghq1ln8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F66kp46b68x2paghq1ln8.png" alt="Image" width="800" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; First of all, you need to install the package.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;composer requires stripe/stripe-php
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Create a Stripe account to get Client Secret and Client Key&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Visit This Site: &lt;a href="https://dashboard.stripe.com/dashboard" rel="noopener noreferrer"&gt;https://dashboard.stripe.com/dashboard&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyr52hm0c8lo4t1uvcidz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyr52hm0c8lo4t1uvcidz.png" alt="Image" width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; add this on &lt;code&gt;.env&lt;/code&gt; File&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;STRIPE_KEY=pk_test_reFxwbsm9cdCKASdTfxAR
STRIPE_SECRET=sk_test_oQMFWteJiPd4wj4AtgApY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Add those methods on your controller&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Checkout View Page
    public function stripe(): View
    {
        return view('stripe');
    }

// Checkout Post button Page
    public function stripeCheckout(Request $request)
    {
        $stripe = new \Stripe\StripeClient(env('STRIPE_SECRET'));
        $redirectUrl = route('stripe.checkout.success').'?session_id={CHECKOUT_SESSION_ID}';
        $response =  $stripe-&amp;gt;checkout-&amp;gt;sessions-&amp;gt;create([
                'success_url' =&amp;gt; $redirectUrl,
                'customer_email' =&amp;gt; 'demo@gmail.com',
                'payment_method_types' =&amp;gt; ['link', 'card'],
                'line_items' =&amp;gt; [
                    [
                        'price_data'  =&amp;gt; [
                            'product_data' =&amp;gt; [
                                'name' =&amp;gt; $request-&amp;gt;product,
                            ],
                            'unit_amount'  =&amp;gt; 100 * $request-&amp;gt;price,
                            'currency'     =&amp;gt; 'USD',
                        ],
                        'quantity'    =&amp;gt; 1
                    ],
                ],
                'mode' =&amp;gt; 'payment',
                'allow_promotion_codes' =&amp;gt; true
            ]);
        return redirect($response['url']);
    }

// Success Return Page
    public function stripeCheckoutSuccess(Request $request)
    {
        $stripe = new \Stripe\StripeClient(env('STRIPE_SECRET'));
        $session = $stripe-&amp;gt;checkout-&amp;gt;sessions-&amp;gt;retrieve($request-&amp;gt;session_id);
        info($session);
        return redirect()-&amp;gt;route('stripe.index')

                         -&amp;gt;with('success', 'Payment successful.');
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Create Routes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Route::controller(StripePaymentController::class)-&amp;gt;group(function(){
    Route::get('stripe', 'stripe')-&amp;gt;name('stripe.index');
    Route::get('stripe/checkout', 'stripeCheckout')-&amp;gt;name('stripe.checkout');
    Route::get('stripe/checkout/success', 'stripeCheckoutSuccess')-&amp;gt;name('stripe.checkout.success');

});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Call this route on checkout button/purchase button&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;a href="{{ route('stripe.checkout', ['price' =&amp;gt; 1000, 'product' =&amp;gt; 'Platinum']) }}" class="btn btn-primary"&amp;gt;Checkout&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frs4g99y462rp82s1pndt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frs4g99y462rp82s1pndt.png" alt="Image" width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now run your project and use &lt;code&gt;https:://&lt;/code&gt; requests.&lt;/p&gt;

&lt;p&gt;Test with this: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Name: Test&lt;br&gt;
Number: 4242 4242 4242 4242&lt;br&gt;
CSV: 123&lt;br&gt;
Expiration Month: 12&lt;br&gt;
Expiration Year: 2028&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>stripe</category>
      <category>laravel</category>
      <category>armanrahman</category>
      <category>paymentgetway</category>
    </item>
    <item>
      <title>Submit 2 or More forms in one button click</title>
      <dc:creator>Arman Rahman</dc:creator>
      <pubDate>Wed, 31 Jul 2024 05:43:24 +0000</pubDate>
      <link>https://dev.to/armanrahman/submit-2-or-more-forms-in-one-button-click-30aj</link>
      <guid>https://dev.to/armanrahman/submit-2-or-more-forms-in-one-button-click-30aj</guid>
      <description>&lt;p&gt;Suppose you have two from on your web page in different places. but you want to submit two forms in one click. Then use - &lt;/p&gt;

&lt;p&gt;Your HTML:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;form id="form1"&amp;gt;
   &amp;lt;!-- Form 1 fields --&amp;gt;
   &amp;lt;input type="text" name="field1" placeholder="Field 1"&amp;gt;
&amp;lt;/form&amp;gt;

&amp;lt;form id="form2"&amp;gt;
    &amp;lt;!-- Form 2 fields --&amp;gt;
    &amp;lt;input type="text" name="field2" placeholder="Field 2"&amp;gt;
&amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;JS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;window.addEventListener('load', function() {
            // Get form data
            let form1 = new FormData(document.getElementById('form1'));
            let form2 = new FormData(document.getElementById('form2'));

            // Combine both forms data into URLSearchParams
            let urlParams = new URLSearchParams();
            form1.forEach((value, key) =&amp;gt; {
                urlParams.append(key, value);
            });
            form2.forEach((value, key) =&amp;gt; {
                urlParams.append(key, value);
            });

            // Redirect to a new URL with combined form data
            window.location.href = '/submit-both-forms?' + urlParams.toString();
        });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will send a get request to the location.&lt;/p&gt;

</description>
      <category>html</category>
      <category>form</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Introducing a New Laravel Package DumpTable for Seamless Migrations</title>
      <dc:creator>Arman Rahman</dc:creator>
      <pubDate>Wed, 26 Jun 2024 06:04:07 +0000</pubDate>
      <link>https://dev.to/armanrahman/introducing-a-new-laravel-package-dumptable-for-seamless-migrations-51lb</link>
      <guid>https://dev.to/armanrahman/introducing-a-new-laravel-package-dumptable-for-seamless-migrations-51lb</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In the dynamic world of web development, managing databases efficiently is crucial. Laravel, one of the most popular PHP frameworks, provides a robust migration system to handle database schema changes. However, updating migrations often means altering entire tables, which can result in data loss in other tables. This challenge can be particularly problematic when valuable data is stored across different tables.&lt;/p&gt;

&lt;p&gt;To address this issue, I am excited to introduce my new Laravel package designed specifically for developers. This package allows you to update a single migration file for a specific table without affecting data in other tables, ensuring data integrity across your database.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;Here’s a practical example to illustrate how to use this package effectively.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Install the Package&lt;/strong&gt; &lt;br&gt;
First, install the package via Composer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ composer require helloarman/dumptable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2: Link Storage Folder&lt;/strong&gt;&lt;br&gt;
Need to link storage file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ php artisan storage:link
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;&lt;strong&gt;1. Targeted Migrations&lt;/strong&gt;&lt;br&gt;
Updating a specific migration file without impacting other tables is now possible. With a simple command, you can target a particular table and make the necessary updates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Seeding Support&lt;/strong&gt;&lt;br&gt;
Seeding your database with initial data is a common requirement. This package supports seeding, allowing you to migrate data along with seed files.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ php artisan migrate:dump-table {table_name} --seed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ php artisan migrate:dump-table {table_name} --s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ensure your seeder files follow the convention: ModelNameSeeder.php.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Magic Restore&lt;/strong&gt;&lt;br&gt;
The magic restore feature is a game-changer. It allows you to update a migration file without affecting the existing data in the table. The command stores the current data and only updates the migration columns.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ php artisan migrate:dump-table {table_name} --restore
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ php artisan migrate:dump-table {table_name} --r
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Warning: This --restore or -r feature is in beta. Currently, it cannot handle a large amount of data (I tested with 20,000+ entries, and it worked perfectly). Additionally, if this table is used as a foreign key in another table, it may fail. However, don't worry, a backup file will be saved in the storage folder if it fails. Use this feature only during development.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;4. Backup and Restore&lt;/strong&gt;&lt;br&gt;
Backing up your data is essential. This package provides a straightforward way to backup any table into an SQL file and restore it when needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backup Table&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;$ php artisan table:backup {table_name}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Restore Table&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;$ php artisan table:restore {table_name}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;To update user table with updated migration.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan migrate:dump-table users --seed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Also update seed file on the table&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan migrate:dump-table users --seed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without hampering table data update new column.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan migrate:dump-table users --restore
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;Managing migrations in Laravel can be challenging, especially when dealing with large databases and critical data. This package provides a robust solution to update specific migration files without affecting other tables, ensuring data integrity and making the development process smoother.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: This package is designed for developers. While developing, it might help you to work with ease and confidence.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By leveraging the features of this package, you can streamline your database migration workflow and avoid the pitfalls of traditional migration methods. Try it out today and experience seamless migrations in Laravel!&lt;/p&gt;

&lt;h2&gt;
  
  
  Share Your Feedback
&lt;/h2&gt;

&lt;p&gt;I hope this package proves to be a valuable tool in your Laravel development toolkit. Your feedback is important to me. Feel free to share your thoughts, suggestions, or any issues you encounter.&lt;/p&gt;

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

</description>
      <category>dumptable</category>
      <category>laravelpackage</category>
      <category>armanrahman</category>
      <category>helloarman</category>
    </item>
    <item>
      <title>Conventional Commits for Writing Effective Git Commit Messages</title>
      <dc:creator>Arman Rahman</dc:creator>
      <pubDate>Thu, 06 Jun 2024 05:27:30 +0000</pubDate>
      <link>https://dev.to/armanrahman/conventional-commits-for-writing-effective-git-commit-messages-47b6</link>
      <guid>https://dev.to/armanrahman/conventional-commits-for-writing-effective-git-commit-messages-47b6</guid>
      <description>&lt;p&gt;Conventional Commits is a compact, well-organized way of making commit messages. It provides a set of principles for adding human and computer-readable meaning to commits. Its principal objective is to enable the development of automated tools based on commit messages.&lt;/p&gt;

&lt;p&gt;In this regard, it adds some distinctive items in the commit messages where the type of the commit stands out as one. The next table gives an overview of common types of commits that are described in the specification:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Structure:&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;type&amp;gt;: &amp;lt;subject-description&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnrgdzqcq9y6bl50j5ms3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnrgdzqcq9y6bl50j5ms3.png" alt="Image description" width="738" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;$git commit -m "feat: added new nav bar on template"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  In addition,
&lt;/h2&gt;

&lt;p&gt;A convention that sets the subject for a commit message thusly:&lt;/p&gt;

&lt;p&gt;Following this structure, a commit that adds, for example, a new endpoint to an API to allow the creation of coupons, should have a subject that looks like this:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Structure:&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;type&amp;gt;(optional scope): &amp;lt;subject-description&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A commit that adds a new endpoint to an API to allow the creation of coupons, for instance, should have a subject that looks like this:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;$git commit -m "feat(api): Add support to create coupons"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Besides, we can append BREAKING CHANGE: in the footer of the commit to indicate that it introduces breaking changes. On the other hand, after the commit type, we can insert ! to highlight the breaking changes.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"chore!: Update PHP version to min 8.2&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;also you can add '&lt;strong&gt;BREAKING CHANGE&lt;/strong&gt;' footer for extra description to the commit. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"chore!: downgraded PHP version to 8.1 from 8.2&lt;/p&gt;

&lt;p&gt;BREAKING CHANGE: use packages that supports php 8.1"&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>gitlab</category>
      <category>armanrahman</category>
    </item>
    <item>
      <title>Alpine JS Delete Confirmation Modal</title>
      <dc:creator>Arman Rahman</dc:creator>
      <pubDate>Tue, 04 Jun 2024 09:10:01 +0000</pubDate>
      <link>https://dev.to/armanrahman/alpine-js-delete-confirmation-modal-43km</link>
      <guid>https://dev.to/armanrahman/alpine-js-delete-confirmation-modal-43km</guid>
      <description>&lt;p&gt;Want to make like this? &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4cu5qabzy1oy8s4djv3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4cu5qabzy1oy8s4djv3.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 1: At first connect AlpineJs in your project &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&amp;lt;head&amp;gt;
    &amp;lt;script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Step 2: Then add this CSS&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&amp;lt;style&amp;gt;
            .modal {
                position: fixed;
                left: 50%;
                top: 50%;
                transform: translate(-50%, -50%);
                background-color: #ffffff;
                z-index: 99999;
                transition: 0.4s ease;
                width: 500px;
                border-radius: 10px;
                box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
            }

            .overlay {
                /* background-color: blue; */
                position: fixed;
                inset: 0;
                z-index: 99998;
                backdrop-filter: blur(5px);
                background-color: rgb(0, 0, 0, 0.1);
                transition: 0.4s ease;

            }

            .modal .modal-head {
                display: flex;
                align-items: center;
                justify-content: space-between;
                padding: 18px;
            }

            .modal .modal-head h4 {
                margin: 0;
                padding: 0;
                font-size: 18px;
            }

            .modal .modal-body {
                padding: 65px 0;
            }

            .modal .modal-body .large-icon {
                font-size: 60px;
                margin-bottom: 25px;
            }

[x-cloak] {
  display: none !important;
}

        &amp;lt;/style&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Step 3: Add This On your HTML File&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&amp;lt;div x-data="{deleteModal:false}"&amp;gt;
&amp;lt;div x-cloak x-show="deleteModal"&amp;gt;
            &amp;lt;div x-on:click="deleteModal=false" class="overlay"&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;div class="modal"&amp;gt;
                &amp;lt;div class="modal-body"&amp;gt;
                    &amp;lt;div class="flex justify-center items-center flex-col"&amp;gt;
                        &amp;lt;i class="large-icon fa-regular fa-trash-can"&amp;gt;&amp;lt;/i&amp;gt;
                        &amp;lt;h5&amp;gt;Are You Sure?&amp;lt;/h5&amp;gt;
                        &amp;lt;p&amp;gt;Are you sure to delete this?&amp;lt;/p&amp;gt;
                        &amp;lt;div class="flex g-10 justify-center"&amp;gt;
                            &amp;lt;a class="btn-theme2" x-on:click="deleteModal=false" href="javascript:void(0)"&amp;gt;&amp;lt;i
                                    class="fa-solid fa-xmark"&amp;gt;&amp;lt;/i&amp;gt;Cancel&amp;lt;/a&amp;gt;
                            &amp;lt;a class="btn-theme" href="#"&amp;gt;&amp;lt;i class="fa-solid fa-check"&amp;gt;&amp;lt;/i&amp;gt; Confirm
                                Delete&amp;lt;/a&amp;gt;
                        &amp;lt;/div&amp;gt;
                    &amp;lt;/div&amp;gt;
                &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Step 4: Add this button to Open this modal&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&amp;lt;button x-on:click="deleteModal = true" href="javascript:voide(0)" class="btn btn-primary"&amp;gt;&amp;lt;i class="fa-regular fa-trash-can"&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/button&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>alpinejs</category>
      <category>alpine</category>
      <category>armanrahman</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Laravel 11 Custom Component File Structure</title>
      <dc:creator>Arman Rahman</dc:creator>
      <pubDate>Sun, 02 Jun 2024 10:36:25 +0000</pubDate>
      <link>https://dev.to/armanrahman/laravel-11-custom-component-file-structure-33ab</link>
      <guid>https://dev.to/armanrahman/laravel-11-custom-component-file-structure-33ab</guid>
      <description>&lt;p&gt;Would you like to create a component like this, or do you prefer to develop your own custom component in Laravel with a custom path?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftcu42ebjbjehu5v48fcx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftcu42ebjbjehu5v48fcx.png" alt="Image description" width="681" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then you need to follow few steps &lt;/p&gt;

&lt;p&gt;Step 1: Create a Service Provider&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan make:provider PackageServiceProvider
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can name it your own.&lt;/p&gt;

&lt;p&gt;Step 2: Add &lt;code&gt;Blade::componentNamespace('App\View\Backend\Components', 'backend');&lt;/code&gt; on your boot() method&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php

namespace App\Providers;

use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;

class PackageServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     */
    public function register(): void
    {
        //
    }

    /**
     * Bootstrap services.
     */
    public function boot(): void
    {
        Blade::componentNamespace('App\View\Backend\Components', 'backend');
    }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3: Create a php file as per your file structure. I created my file here.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;app\View\Backend\Components\AdminSidebar.php&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Step 4: Return your blade directive on render() method.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php

namespace App\View\Backend\Components;

use Illuminate\View\Component;
use Illuminate\View\View;

class AdminSidebar extends Component
{
    /**
     * Get the view / contents that represents the component.
     */
    public function render(): View
    {
        return view('backend.components.sidebar');
    }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 5: Create your blade file as you mentioned. For my case I added like this. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;resources\views\backend\components\sidebar.blade.php&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Step 6: Your Component setup is done. now you can access that component by this-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;x-backend::admin-sidebar /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hope this will help you. Thank You.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>component</category>
      <category>custom</category>
      <category>armanrahman</category>
    </item>
    <item>
      <title>Laravel - Class "Illuminate\Database\Console\ShowModelCommand" not found Solved</title>
      <dc:creator>Arman Rahman</dc:creator>
      <pubDate>Wed, 28 Feb 2024 15:15:50 +0000</pubDate>
      <link>https://dev.to/armanrahman/laravel-class-illuminatedatabaseconsoleshowmodelcommand-not-found-solved-24j9</link>
      <guid>https://dev.to/armanrahman/laravel-class-illuminatedatabaseconsoleshowmodelcommand-not-found-solved-24j9</guid>
      <description>&lt;p&gt;While Installing Laravel Module Package sometime you may have issue with &lt;code&gt;Class "Illuminate\Database\Console\ShowModelCommand" not found&lt;/code&gt; So Here is the Solve!&lt;/p&gt;

&lt;p&gt;&lt;code&gt;composer require nwidart/laravel-modules&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Class App\Http\Requests\settings\MessageSentRequest located in C:/laragon/www/codebit/app\Http\Requests\Settings\MessageSentRequest.php does not comply with psr-4 autoloading standard. Skipping.                                                                                                                                                                              
&amp;gt; Illuminate\Foundation\ComposerScripts::postAutoloadDump
&amp;gt; @php artisan package:discover --ansi

   Error

  Class "Illuminate\Database\Console\ShowModelCommand" not found

  at C:\laragon\www\codebit\vendor\nwidart\laravel-modules\src\Commands\ModelShowCommand.php:9
      5▕ use Illuminate\Database\Console\ShowModelCommand;
      6▕ use Symfony\Component\Console\Attribute\AsCommand;
      7▕
      8▕ #[AsCommand('module:model-show', 'Show information about an Eloquent model in modules')]
  ➜   9▕ class ModelShowCommand extends ShowModelCommand
     10▕ {
     11▕     /**
     12▕      * The console command name.
     13▕      *

  1   C:\laragon\www\codebit\vendor\composer\ClassLoader.php:576
      include()

  2   C:\laragon\www\codebit\vendor\composer\ClassLoader.php:427
      Composer\Autoload\{closure}("C:\laragon\www\codebit\vendor\composer/../nwidart/laravel-modules/src/Commands/ModelShowCommand.php")
Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you face this issue then you have to search &lt;/p&gt;

&lt;p&gt;&lt;code&gt;vendor\nwidart\laravel-modules\src\Commands\ModelShowCommand.php&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;File on your project. Then Replace two lines -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;namespace Nwidart\Modules\Commands;

use Illuminate\Database\Console\ShowCommand;
use Symfony\Component\Console\Attribute\AsCommand;

#[AsCommand('module:model-show', 'Show information about an Eloquent model in modules')]
class ModelShowCommand extends ShowCommand
{

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwnswyof4r4twg5tjs6n6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwnswyof4r4twg5tjs6n6.png" alt="Image description" width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hope this will help you! Thak You&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
