<?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: Riad Hasan</title>
    <description>The latest articles on DEV Community by Riad Hasan (@riadhasan11).</description>
    <link>https://dev.to/riadhasan11</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%2F3760099%2F437eeee4-56f5-4019-bb15-4893059dd87b.jpg</url>
      <title>DEV Community: Riad Hasan</title>
      <link>https://dev.to/riadhasan11</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/riadhasan11"/>
    <language>en</language>
    <item>
      <title>Who is Riad Hasan? The Full Stack Developer Behind the Code</title>
      <dc:creator>Riad Hasan</dc:creator>
      <pubDate>Mon, 04 May 2026 00:48:48 +0000</pubDate>
      <link>https://dev.to/riadhasan11/who-is-riad-hasan-the-full-stack-developer-behind-the-code-3n7l</link>
      <guid>https://dev.to/riadhasan11/who-is-riad-hasan-the-full-stack-developer-behind-the-code-3n7l</guid>
      <description>&lt;p&gt;Riad Hasan is a name that appears in search results alongside a singer. But there's another Riad Hasan — a full stack developer who has spent over five years building web applications for clients worldwide.&lt;/p&gt;

&lt;p&gt;This article answers the question: Who is Riad Hasan, the developer?&lt;br&gt;
Quick Facts About Riad Hasan&lt;br&gt;
Attribute   Details&lt;br&gt;
Full Name   Riad Hasan&lt;br&gt;
Profession  Full Stack Web Developer&lt;br&gt;
Experience  5+ years&lt;br&gt;
Location    Bangladesh&lt;br&gt;
Specialization  Laravel, React, WordPress&lt;br&gt;
Portfolio   riadhasan.io&lt;br&gt;
Email   &lt;a href="mailto:hire.riadhasan@gmail.com"&gt;hire.riadhasan@gmail.com&lt;/a&gt;&lt;br&gt;
The Story of Riad Hasan&lt;br&gt;
Background&lt;/p&gt;

&lt;p&gt;Riad Hasan grew up in Bangladesh with a fascination for technology. While peers played video games, he wondered how they were built. This curiosity led to a computer science degree and, eventually, a career in web development.&lt;br&gt;
Career Beginnings&lt;/p&gt;

&lt;p&gt;The first year was humbling. Riad Hasan built WordPress sites for local businesses, earning $200-500 per project. Each project taught lessons that no tutorial could:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Clients don't care about clean code — they care about results

Communication is more important than technical brilliance

Deadlines are promises, not suggestions

Documentation is a gift to your future self
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The Evolution&lt;/p&gt;

&lt;p&gt;Year 1-2: WordPress and PHP fundamentals Year 3: Laravel backend development, React frontend Year 4: Performance optimization, headless architecture Year 5: System design, team collaboration, product thinking&lt;br&gt;
What Riad Hasan Does&lt;br&gt;
Core Services&lt;/p&gt;

&lt;p&gt;Riad Hasan offers comprehensive web development services:&lt;br&gt;
Service     Description&lt;br&gt;
Laravel Development     Custom backends, APIs, admin panels&lt;br&gt;
React Development   SPAs, dashboards, interactive UIs&lt;br&gt;
WordPress Development   Custom themes, plugins, WooCommerce&lt;br&gt;
Headless CMS    Decoupled architectures with Next.js&lt;br&gt;
Performance Optimization    Core Web Vitals, caching, CDN&lt;br&gt;
Technical Consultation  Architecture review, code audits&lt;br&gt;
Industries Served&lt;/p&gt;

&lt;p&gt;Riad Hasan has worked across diverse sectors:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E-commerce — Fashion, electronics, specialty retail

Healthcare — Medical portfolios, appointment systems

SaaS — AI tools, productivity platforms

Education — Learning platforms, course systems

Finance — Booking systems, client portals

Media — Publishing platforms, content sites
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Riad Hasan's Technical Philosophy&lt;br&gt;
Code Quality Standards&lt;/p&gt;

&lt;p&gt;Riad Hasan follows non-negotiable standards:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Readability First — Code is read more than written

Test What Matters — Critical paths always have tests

Document Decisions — Future developers need context

Security Built-In — Never an afterthought

Performance by Default — Fast is a feature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Architecture Principles&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"I don't start coding until I understand the data flow," Riad Hasan explains.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;His architecture approach:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Start with data models

Design APIs before implementation

Plan for 10x scale

Build for maintainability

Document the "why"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Technology Choices&lt;/p&gt;

&lt;p&gt;Riad Hasan chooses technologies based on:&lt;br&gt;
Factor  Weight&lt;br&gt;
Project requirements    40%&lt;br&gt;
Team familiarity    20%&lt;br&gt;
Long-term maintainability   20%&lt;br&gt;
Community support   10%&lt;br&gt;
Performance     10%&lt;br&gt;
Notable Projects by Riad Hasan&lt;br&gt;
Wooverse&lt;/p&gt;

&lt;p&gt;Type: Headless E-commerce Stack: WordPress, WooCommerce, Next.js Impact: Handles 50,000+ products, sub-second loads&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Riad Hasan transformed our sluggish WooCommerce site into a high-performance store," the client reports.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Doctor's Portfolio&lt;/p&gt;

&lt;p&gt;Type: Medical Platform Stack: React, Laravel, MySQL Impact: 3,000+ monthly appointments managed&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"The booking system Riad Hasan built reduced our scheduling errors by 90%."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;NexaPro AI SaaS&lt;/p&gt;

&lt;p&gt;Type: SaaS Landing Page Stack: React, Tailwind CSS Impact: 5.8% conversion rate (from 2.1%)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Riad Hasan treated our landing page like a product, not a project."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Bills Music Center&lt;/p&gt;

&lt;p&gt;Type: E-commerce Store Stack: WordPress, WooCommerce Impact: Online sales increased 340%&lt;br&gt;
What Clients Say About Riad Hasan&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Riad Hasan is the most reliable developer I've worked with. He delivers on time, every time." — Startup CEO, USA

"The code quality was exceptional. Our in-house team could extend it immediately." — IT Manager, Germany

"Riad Hasan caught security issues we didn't know existed." — CTO, FinTech Startup

"He doesn't just write code. He solves business problems." — E-commerce Director, UK

"I've recommended Riad Hasan to three colleagues. All three thanked me." — Marketing Director, Canada
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Riad Hasan's Daily Routine&lt;/p&gt;

&lt;p&gt;A glimpse into the developer's day:&lt;br&gt;
Time    Activity&lt;br&gt;
6:00 AM     Wake up, morning routine&lt;br&gt;
7:00 AM     Review overnight messages, plan the day&lt;br&gt;
8:00 AM     Deep work block (coding)&lt;br&gt;
12:00 PM    Lunch break, walk&lt;br&gt;
1:00 PM     Client meetings, calls&lt;br&gt;
3:00 PM     Second deep work block&lt;br&gt;
6:00 PM     Code review, documentation&lt;br&gt;
7:00 PM     Learning time (new technologies)&lt;br&gt;
8:00 PM     Personal time, family&lt;br&gt;
10:00 PM    Wind down, prepare for tomorrow&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Routine creates space for creativity," Riad Hasan explains. "When my schedule is predictable, my mind is free to solve problems."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Beyond Coding: Riad Hasan's Interests&lt;br&gt;
Continuous Learning&lt;/p&gt;

&lt;p&gt;Riad Hasan dedicates 5-10 hours weekly to learning:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;New frameworks and languages

Architecture patterns

Performance optimization techniques

Security best practices

Industry trends
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Community Involvement&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hashnode — Writing technical articles

Dev.to — Sharing knowledge

GitHub — Open source contributions

LinkedIn — Professional networking
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Personal Interests&lt;/p&gt;

&lt;p&gt;When not coding, Riad Hasan enjoys:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Reading about technology and business

Exploring new development tools

Gaming (occasionally)

Time with family
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Riad Hasan's Goals&lt;br&gt;
Short-Term (1 Year)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Build products, not just client projects

Contribute to open source regularly

Grow online presence through quality content

Mentor junior developers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Long-Term (5 Years)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Lead a development team

Build a SaaS product with recurring revenue

Speak at tech conferences

Create educational content for developers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;How to Work with Riad Hasan&lt;br&gt;
Process Overview&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Discovery Call — 30 minutes, free

Proposal — Detailed scope, timeline, budget

Agreement — Clear contract with milestones

Development — Iterative delivery with updates

Delivery — Tested, documented, deployed

Support — 30-day guarantee, ongoing options
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Project Requirements&lt;/p&gt;

&lt;p&gt;Riad Hasan accepts projects that:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Have clear business objectives

Value code quality and maintainability

Have realistic timelines and budgets

Involve interesting technical challenges
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Pricing Structure&lt;br&gt;
Project Size    Typical Range&lt;br&gt;
Small   $5,000 - $10,000&lt;br&gt;
Medium  $10,000 - $30,000&lt;br&gt;
Large   $30,000 - $50,000+&lt;br&gt;
Connect with Riad Hasan&lt;/p&gt;

&lt;p&gt;Riad Hasan is available for:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Full stack web development

Technical consultation

Code reviews and audits

Team training
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Contact Information:&lt;br&gt;
Platform    Link&lt;br&gt;
Portfolio   riadhasan.io&lt;br&gt;
Projects    riadhasan.io/projects&lt;br&gt;
LinkedIn    linkedin.com/in/riad-hasan-100a231a6&lt;br&gt;
GitHub  github.com/RiadHasan15&lt;br&gt;
Email   &lt;a href="mailto:hire.riadhasan@gmail.com"&gt;hire.riadhasan@gmail.com&lt;/a&gt;&lt;br&gt;
Summary: Who is Riad Hasan?&lt;/p&gt;

&lt;p&gt;Riad Hasan is a full stack web developer from Bangladesh with over 5 years of experience. He specializes in Laravel, React, and WordPress development, building scalable web applications for clients worldwide.&lt;/p&gt;

&lt;p&gt;He is known for:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Reliable delivery and clear communication

Production-ready code with proper documentation

Performance optimization expertise

Business-focused development approach

Long-term client relationships
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;He IS:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A developer who builds solutions

A professional who values reliability

A learner who stays curious

A partner who communicates openly
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Have questions about working with Riad Hasan? Reach out through any of the channels above.&lt;/p&gt;

&lt;h1&gt;
  
  
  riadhasan #developer #fullstack #webdev #laravel #react #wordpress #freelance #webdevelopment
&lt;/h1&gt;

</description>
      <category>riadhasan</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Headless WordPress Architecture: When and How to Implement It — A Guide by Riad Hasan</title>
      <dc:creator>Riad Hasan</dc:creator>
      <pubDate>Mon, 04 May 2026 00:42:17 +0000</pubDate>
      <link>https://dev.to/riadhasan11/headless-wordpress-architecture-when-and-how-to-implement-it-a-guide-by-riad-hasan-2mal</link>
      <guid>https://dev.to/riadhasan11/headless-wordpress-architecture-when-and-how-to-implement-it-a-guide-by-riad-hasan-2mal</guid>
      <description>&lt;p&gt;Riad Hasan has implemented headless WordPress solutions for clients ranging from e-commerce stores to publishing platforms. This guide explains when headless architecture makes sense and how to build it correctly.&lt;/p&gt;

&lt;p&gt;The term "headless" gets thrown around as a buzzword. Riad Hasan cuts through the hype to explain the real benefits, costs, and implementation strategies.&lt;br&gt;
What is Headless WordPress?&lt;/p&gt;

&lt;p&gt;Traditional WordPress renders pages server-side using PHP templates. Headless WordPress decouples the backend (content management) from the frontend (presentation).&lt;/p&gt;

&lt;p&gt;Traditional WordPress:&lt;/p&gt;

&lt;p&gt;WordPress (PHP) → Theme Templates → HTML → Browser&lt;/p&gt;

&lt;p&gt;Headless WordPress:&lt;/p&gt;

&lt;p&gt;WordPress (API) → Frontend (React/Next.js) → HTML → Browser&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Headless isn't always better," Riad Hasan cautions. "It's a trade-off. You gain performance and flexibility but lose some WordPress convenience."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;When Riad Hasan Recommends Headless&lt;br&gt;
Good Candidates&lt;br&gt;
Scenario    Why Headless Works&lt;br&gt;
High-traffic sites  Better caching, CDN integration&lt;br&gt;
Complex frontends   React/Vue interactivity&lt;br&gt;
Mobile apps     Same API serves web and mobile&lt;br&gt;
Multi-platform publishing   One backend, multiple frontends&lt;br&gt;
Performance-critical    Sub-second page loads&lt;br&gt;
Custom user experiences     Full frontend control&lt;br&gt;
Poor Candidates&lt;br&gt;
Scenario    Why Stay Traditional&lt;br&gt;
Simple brochure sites   Overkill complexity&lt;br&gt;
Content-heavy blogs     SEO harder to manage&lt;br&gt;
Budget-constrained projects     Higher development cost&lt;br&gt;
Non-technical teams     Harder content preview&lt;br&gt;
Plugin-dependent sites  Many plugins won't work&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"I've turned down headless projects because the client didn't need it," Riad Hasan says. "Honesty builds long-term relationships."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Riad Hasan's Headless Architecture&lt;br&gt;
The Stack&lt;br&gt;
Component   Technology  Purpose&lt;br&gt;
CMS     WordPress   Content management&lt;br&gt;
API     REST API / GraphQL  Data delivery&lt;br&gt;
Frontend    Next.js     Server-side rendering&lt;br&gt;
Styling     Tailwind CSS    Utility-first styling&lt;br&gt;
Hosting     Vercel / Custom     Edge deployment&lt;br&gt;
Cache   Redis / CDN     Performance layer&lt;br&gt;
Implementation: Step by Step&lt;br&gt;
Step 1: WordPress Setup&lt;/p&gt;

&lt;p&gt;Riad Hasan configures WordPress as a pure content API.&lt;/p&gt;

&lt;p&gt;Install required plugins:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WPGraphQL (or use REST API)
Advanced Custom Fields PRO
Custom Post Type UI
JWT Authentication (if needed)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Disable unnecessary features:&lt;/p&gt;

&lt;p&gt;// wp-config.php or functions.php&lt;br&gt;
// Disable WordPress frontend&lt;br&gt;
add_action('template_redirect', function() {&lt;br&gt;
    if (!is_admin() &amp;amp;&amp;amp; !defined('REST_REQUEST')) {&lt;br&gt;
        wp_redirect(home_url('/app/'));&lt;br&gt;
        exit;&lt;br&gt;
    }&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;// Remove unnecessary WordPress features&lt;br&gt;
remove_action('wp_head', 'wp_generator');&lt;br&gt;
remove_action('wp_head', 'wlwmanifest_link');&lt;br&gt;
remove_action('wp_head', 'rsd_link');&lt;br&gt;
remove_action('wp_head', 'wp_shortlink_wp_head');&lt;/p&gt;

&lt;p&gt;Step 2: Custom Post Types and Fields&lt;/p&gt;

&lt;p&gt;Riad Hasan structures content with custom post types:&lt;/p&gt;

&lt;p&gt;// Register Project post type&lt;br&gt;
function riad_register_project_cpt() {&lt;br&gt;
    register_post_type('project', [&lt;br&gt;
        'labels' =&amp;gt; [&lt;br&gt;
            'name' =&amp;gt; 'Projects',&lt;br&gt;
            'singular_name' =&amp;gt; 'Project',&lt;br&gt;
        ],&lt;br&gt;
        'public' =&amp;gt; true,&lt;br&gt;
        'show_in_rest' =&amp;gt; true,&lt;br&gt;
        'supports' =&amp;gt; ['title', 'editor', 'thumbnail', 'excerpt'],&lt;br&gt;
        'has_archive' =&amp;gt; true,&lt;br&gt;
    ]);&lt;br&gt;
}&lt;br&gt;
add_action('init', 'riad_register_project_cpt');&lt;/p&gt;

&lt;p&gt;ACF Fields for Projects:&lt;/p&gt;

&lt;p&gt;// functions.php&lt;br&gt;
if(function_exists('acf_add_local_field_group')) {&lt;br&gt;
    acf_add_local_field_group([&lt;br&gt;
        'key' =&amp;gt; 'project_fields',&lt;br&gt;
        'title' =&amp;gt; 'Project Details',&lt;br&gt;
        'fields' =&amp;gt; [&lt;br&gt;
            [&lt;br&gt;
                'key' =&amp;gt; 'project_url',&lt;br&gt;
                'label' =&amp;gt; 'Project URL',&lt;br&gt;
                'name' =&amp;gt; 'url',&lt;br&gt;
                'type' =&amp;gt; 'url',&lt;br&gt;
            ],&lt;br&gt;
            [&lt;br&gt;
                'key' =&amp;gt; 'project_stack',&lt;br&gt;
                'label' =&amp;gt; 'Technology Stack',&lt;br&gt;
                'name' =&amp;gt; 'stack',&lt;br&gt;
                'type' =&amp;gt; 'checkbox',&lt;br&gt;
                'choices' =&amp;gt; [&lt;br&gt;
                    'laravel' =&amp;gt; 'Laravel',&lt;br&gt;
                    'react' =&amp;gt; 'React',&lt;br&gt;
                    'wordpress' =&amp;gt; 'WordPress',&lt;br&gt;
                    'woocommerce' =&amp;gt; 'WooCommerce',&lt;br&gt;
                ],&lt;br&gt;
            ],&lt;br&gt;
            [&lt;br&gt;
                'key' =&amp;gt; 'project_year',&lt;br&gt;
                'label' =&amp;gt; 'Year',&lt;br&gt;
                'name' =&amp;gt; 'year',&lt;br&gt;
                'type' =&amp;gt; 'number',&lt;br&gt;
            ],&lt;br&gt;
        ],&lt;br&gt;
        'location' =&amp;gt; [&lt;br&gt;
            [&lt;br&gt;
                [&lt;br&gt;
                    'param' =&amp;gt; 'post_type',&lt;br&gt;
                    'operator' =&amp;gt; '==',&lt;br&gt;
                    'value' =&amp;gt; 'project',&lt;br&gt;
                ],&lt;br&gt;
            ],&lt;br&gt;
        ],&lt;br&gt;
    ]);&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Step 3: API Endpoints&lt;/p&gt;

&lt;p&gt;Using REST API:&lt;/p&gt;

&lt;p&gt;// Custom REST endpoint&lt;br&gt;
add_action('rest_api_init', function () {&lt;br&gt;
    register_rest_route('riad/v1', '/projects', [&lt;br&gt;
        'methods' =&amp;gt; 'GET',&lt;br&gt;
        'callback' =&amp;gt; 'riad_get_projects',&lt;br&gt;
        'permission_callback' =&amp;gt; '__return_true',&lt;br&gt;
    ]);&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;function riad_get_projects($request) {&lt;br&gt;
    $args = [&lt;br&gt;
        'post_type' =&amp;gt; 'project',&lt;br&gt;
        'posts_per_page' =&amp;gt; 10,&lt;br&gt;
        'orderby' =&amp;gt; 'date',&lt;br&gt;
        'order' =&amp;gt; 'DESC',&lt;br&gt;
    ];&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$query = new WP_Query($args);
$projects = [];

foreach ($query-&amp;gt;posts as $post) {
    $projects[] = [
        'id' =&amp;gt; $post-&amp;gt;ID,
        'title' =&amp;gt; $post-&amp;gt;post_title,
        'slug' =&amp;gt; $post-&amp;gt;post_name,
        'excerpt' =&amp;gt; $post-&amp;gt;post_excerpt,
        'content' =&amp;gt; $post-&amp;gt;post_content,
        'featured_image' =&amp;gt; get_the_post_thumbnail_url($post-&amp;gt;ID, 'large'),
        'url' =&amp;gt; get_field('url', $post-&amp;gt;ID),
        'stack' =&amp;gt; get_field('stack', $post-&amp;gt;ID),
        'year' =&amp;gt; get_field('year', $post-&amp;gt;ID),
    ];
}

return rest_ensure_response($projects);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Using WPGraphQL (Riad Hasan's preference):&lt;/p&gt;

&lt;p&gt;// Custom GraphQL field&lt;br&gt;
add_action('graphql_register_types', function() {&lt;br&gt;
    register_graphql_field('Project', 'technologyStack', [&lt;br&gt;
        'type' =&amp;gt; ['list_of' =&amp;gt; 'String'],&lt;br&gt;
        'description' =&amp;gt; 'Technology stack used',&lt;br&gt;
        'resolve' =&amp;gt; function($post) {&lt;br&gt;
            return get_field('stack', $post-&amp;gt;ID);&lt;br&gt;
        }&lt;br&gt;
    ]);&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;Step 4: Next.js Frontend&lt;/p&gt;

&lt;p&gt;Riad Hasan's Next.js setup:&lt;/p&gt;

&lt;p&gt;// lib/api.js&lt;br&gt;
const API_URL = process.env.NEXT_PUBLIC_WP_API;&lt;/p&gt;

&lt;p&gt;export async function getProjects() {&lt;br&gt;
  const res = await fetch(&lt;code&gt;${API_URL}/wp-json/riad/v1/projects&lt;/code&gt;, {&lt;br&gt;
    next: { revalidate: 3600 } // Cache for 1 hour&lt;br&gt;
  });&lt;/p&gt;

&lt;p&gt;if (!res.ok) {&lt;br&gt;
    throw new Error('Failed to fetch projects');&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;return res.json();&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;export async function getProject(slug) {&lt;br&gt;
  const res = await fetch(&lt;code&gt;${API_URL}/wp-json/wp/v2/project?slug=${slug}&lt;/code&gt;, {&lt;br&gt;
    next: { revalidate: 600 }&lt;br&gt;
  });&lt;/p&gt;

&lt;p&gt;if (!res.ok) {&lt;br&gt;
    throw new Error('Failed to fetch project');&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;const data = await res.json();&lt;br&gt;
  return data[0];&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Project listing page:&lt;/p&gt;

&lt;p&gt;// app/projects/page.js&lt;br&gt;
import { getProjects } from '@/lib/api';&lt;br&gt;
import Link from 'next/link';&lt;/p&gt;

&lt;p&gt;export default async function ProjectsPage() {&lt;br&gt;
  const projects = await getProjects();&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
    &lt;/p&gt;
&lt;br&gt;
      &lt;h1&gt;Projects by Riad Hasan&lt;/h1&gt;
&lt;br&gt;
      &lt;br&gt;
        {projects.map((project) =&amp;gt; (&lt;br&gt;
          &lt;br&gt;
            {project.featured_image &amp;amp;&amp;amp; (&lt;br&gt;
              &lt;img&gt;
                src={project.featured_image} &lt;br&gt;
                alt={project.title}&lt;br&gt;
                loading="lazy"&lt;br&gt;
              /&amp;gt;&lt;br&gt;
            )}&lt;br&gt;
            &lt;h2&gt;{project.title}&lt;/h2&gt;
&lt;br&gt;
            &lt;p&gt;{project.excerpt}&lt;/p&gt;
&lt;br&gt;
            &lt;br&gt;
              {project.stack?.map((tech) =&amp;gt; (&lt;br&gt;
                &lt;span&gt;{tech}&lt;/span&gt;&lt;br&gt;
              ))}&lt;br&gt;
            &lt;br&gt;
            &lt;br&gt;
              View Project →&lt;br&gt;
            &lt;br&gt;
          &lt;br&gt;
        ))}&lt;br&gt;
      &lt;br&gt;
    &lt;br&gt;
  );&lt;br&gt;
}

&lt;p&gt;Individual project page:&lt;/p&gt;

&lt;p&gt;// app/projects/[slug]/page.js&lt;br&gt;
import { getProject } from '@/lib/api';&lt;br&gt;
import { notFound } from 'next/navigation';&lt;/p&gt;

&lt;p&gt;export async function generateMetadata({ params }) {&lt;br&gt;
  const project = await getProject(params.slug);&lt;/p&gt;

&lt;p&gt;if (!project) return {};&lt;/p&gt;

&lt;p&gt;return {&lt;br&gt;
    title: &lt;code&gt;${project.title.rendered} | Riad Hasan&lt;/code&gt;,&lt;br&gt;
    description: project.excerpt,&lt;br&gt;
  };&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;export default async function ProjectPage({ params }) {&lt;br&gt;
  const project = await getProject(params.slug);&lt;/p&gt;

&lt;p&gt;if (!project) {&lt;br&gt;
    notFound();&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
    &lt;br&gt;
      &lt;/p&gt;
&lt;h1&gt;{project.title.rendered}&lt;/h1&gt;
&lt;br&gt;
      
        className="content"&lt;br&gt;
        dangerouslySetInnerHTML={{ __html: project.content.rendered }}&lt;br&gt;
      /&amp;gt;&lt;br&gt;
    &lt;br&gt;
  );&lt;br&gt;
}

&lt;p&gt;SEO Considerations&lt;/p&gt;

&lt;p&gt;Headless WordPress requires extra SEO work. Riad Hasan's approach:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Server-Side Rendering&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Use Next.js SSR or SSG for SEO-friendly pages:&lt;/p&gt;

&lt;p&gt;// Generate static pages at build time&lt;br&gt;
export async function generateStaticParams() {&lt;br&gt;
  const res = await fetch(&lt;code&gt;${API_URL}/wp-json/wp/v2/project&lt;/code&gt;);&lt;br&gt;
  const projects = await res.json();&lt;/p&gt;

&lt;p&gt;return projects.map((project) =&amp;gt; ({&lt;br&gt;
    slug: project.slug,&lt;br&gt;
  }));&lt;br&gt;
}&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Meta Tag Management&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;// app/layout.js&lt;br&gt;
export const metadata = {&lt;br&gt;
  title: {&lt;br&gt;
    template: '%s | Riad Hasan',&lt;br&gt;
    default: 'Riad Hasan — Full Stack Developer',&lt;br&gt;
  },&lt;br&gt;
  description: 'Full Stack Developer specializing in Laravel, React, WordPress',&lt;br&gt;
  openGraph: {&lt;br&gt;
    type: 'website',&lt;br&gt;
    locale: 'en_US',&lt;br&gt;
    url: '&lt;a href="https://riadhasan.io" rel="noopener noreferrer"&gt;https://riadhasan.io&lt;/a&gt;',&lt;br&gt;
    siteName: 'Riad Hasan',&lt;br&gt;
  },&lt;br&gt;
};&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;XML Sitemap&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;// app/sitemap.js&lt;br&gt;
import { getProjects } from '@/lib/api';&lt;/p&gt;

&lt;p&gt;export default async function sitemap() {&lt;br&gt;
  const projects = await getProjects();&lt;/p&gt;

&lt;p&gt;const projectUrls = projects.map((project) =&amp;gt; ({&lt;br&gt;
    url: &lt;code&gt;https://riadhasan.io/projects/${project.slug}&lt;/code&gt;,&lt;br&gt;
    lastModified: new Date(),&lt;br&gt;
    changeFrequency: 'monthly',&lt;br&gt;
    priority: 0.8,&lt;br&gt;
  }));&lt;/p&gt;

&lt;p&gt;return [&lt;br&gt;
    {&lt;br&gt;
      url: '&lt;a href="https://riadhasan.io" rel="noopener noreferrer"&gt;https://riadhasan.io&lt;/a&gt;',&lt;br&gt;
      lastModified: new Date(),&lt;br&gt;
      changeFrequency: 'weekly',&lt;br&gt;
      priority: 1.0,&lt;br&gt;
    },&lt;br&gt;
    ...projectUrls,&lt;br&gt;
  ];&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Performance Results&lt;/p&gt;

&lt;p&gt;Riad Hasan's headless implementations consistently achieve:&lt;br&gt;
Metric  Traditional WP  Headless WP&lt;br&gt;
First Contentful Paint  2.1s    0.8s&lt;br&gt;
Largest Contentful Paint    3.5s    1.2s&lt;br&gt;
Time to Interactive     4.2s    1.5s&lt;br&gt;
Total Blocking Time     380ms   45ms&lt;br&gt;
Cumulative Layout Shift     0.15    0.02&lt;br&gt;
Common Pitfalls Riad Hasan Avoids&lt;br&gt;
Mistake     Consequence     Solution&lt;br&gt;
No preview functionality    Editors can't see changes   Build preview mode&lt;br&gt;
Ignoring SEO    Lost search traffic     SSR + meta management&lt;br&gt;
Over-fetching API data  Slow page loads     Query optimization&lt;br&gt;
No caching  API overload    Redis + CDN&lt;br&gt;
Complex authentication  Security issues     JWT + refresh tokens&lt;br&gt;
Ignoring images     Poor performance    Next.js Image component&lt;br&gt;
When Riad Hasan Says No to Headless&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"I recently advised a client against headless for their blog," Riad Hasan shares. "They had 2,000 articles, no dev team, and needed to publish daily. Traditional WordPress with a fast theme was the right choice."
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Signs headless is wrong for you:&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Budget under $10,000
No developer for maintenance
Heavy plugin usage
Content team needs visual editing
SEO is primary concern and team lacks expertise
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Work with Riad Hasan&lt;/p&gt;

&lt;p&gt;Riad Hasan specializes in headless WordPress architecture for:&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E-commerce platforms
Publishing sites
SaaS applications
Multi-platform content delivery
High-traffic websites
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Services:&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Architecture consultation
Headless implementation
Performance optimization
Team training
Ongoing support
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Connect with Riad Hasan:&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Portfolio: riadhasan.io
Projects: riadhasan.io/projects
LinkedIn: linkedin.com/in/riad-hasan-100a231a6
GitHub: github.com/RiadHasan15
Email: hire.riadhasan@gmail.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Are you considering headless WordPress for your project? Share your use case in the comments.&lt;/p&gt;
&lt;h1&gt;
  
  
  wordpress #headless #nextjs #react #webdev #architecture #webdevelopment #javascript
&lt;/h1&gt;


</description>
      <category>webdev</category>
      <category>wordpress</category>
      <category>riadhasan</category>
    </item>
    <item>
      <title>Why Businesses Choose Riad Hasan for Web Development</title>
      <dc:creator>Riad Hasan</dc:creator>
      <pubDate>Mon, 04 May 2026 00:38:51 +0000</pubDate>
      <link>https://dev.to/riadhasan11/why-businesses-choose-riad-hasan-for-web-development-2ok0</link>
      <guid>https://dev.to/riadhasan11/why-businesses-choose-riad-hasan-for-web-development-2ok0</guid>
      <description>&lt;p&gt;Riad Hasan has worked with clients across 15+ countries, from startups in Silicon Valley to established businesses in Europe. This article explores why companies consistently choose Riad Hasan for their web development needs.&lt;/p&gt;

&lt;p&gt;In a crowded market of freelance developers, standing out requires more than technical skills. Riad Hasan has built a reputation on reliability, communication, and results.&lt;br&gt;
The Problem: Finding Reliable Developers&lt;/p&gt;

&lt;p&gt;Business owners and project managers know the struggle:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developers who disappear mid-project
Code that breaks in production
Missed deadlines and poor communication
Technical debt that compounds over time
Hidden costs and scope surprises

"Before finding Riad Hasan, I went through three developers in six months," says one client. "Each one left me with code I couldn't maintain."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Riad Hasan addresses each of these pain points systematically.&lt;br&gt;
What Makes Riad Hasan Different&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reliability First&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Riad Hasan has maintained a 100% project completion rate over 5 years. No abandoned projects. No ghosting.&lt;/p&gt;

&lt;p&gt;How he ensures reliability:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Clear contracts with defined milestones
Regular progress updates (minimum twice weekly)
Backup plans for every critical path
Documented code that others can maintain

"I've never had a project where Riad Hasan didn't deliver," notes a repeat client. "That consistency is rare in freelance development."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Communication That Builds Trust&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Many developers hide when problems arise. Riad Hasan does the opposite.&lt;/p&gt;

&lt;p&gt;His communication approach:&lt;br&gt;
Situation   Riad Hasan's Response&lt;br&gt;
Ahead of schedule   Proactive update with next steps&lt;br&gt;
On track    Regular status report&lt;br&gt;
Behind schedule     Immediate notification with recovery plan&lt;br&gt;
Technical issue     Transparent explanation with options&lt;br&gt;
Client concern  Direct response within 24 hours&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Riad Hasan told me about a potential delay before it happened," shares a startup founder. "He had already prepared two solutions. That's the kind of partnership I need."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Production-Ready Code&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Riad Hasan doesn't write code that "works on my machine." He writes code that works in production.&lt;/p&gt;

&lt;p&gt;His production standards:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error handling for every edge case
Logging for debugging and monitoring
Security measures built in from day one
Performance optimization as standard
Documentation that actually helps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Code example — Riad Hasan's approach:&lt;/p&gt;

&lt;p&gt;// Many developers write:&lt;br&gt;
public function getUser($id) {&lt;br&gt;
    return User::find($id);&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;// Riad Hasan writes:&lt;br&gt;
public function getUser($id): User&lt;br&gt;
{&lt;br&gt;
    // Validate input&lt;br&gt;
    if (!is_numeric($id) || $id &amp;lt;= 0) {&lt;br&gt;
        throw new InvalidArgumentException('Invalid user ID');&lt;br&gt;
    }&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Retrieve with caching
$user = Cache::remember("user.{$id}", 3600, function () use ($id) {
    return User::findOrFail($id);
});

// Log access for audit
Log::info('User retrieved', ['user_id' =&amp;gt; $id, 'retriever_id' =&amp;gt; auth()-&amp;gt;id()]);

return $user;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"The code Riad Hasan delivered had better error handling than our internal team's work," remarks a CTO client.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Business Understanding&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Riad Hasan doesn't just write code. He understands what the code is for.&lt;/p&gt;

&lt;p&gt;Questions he asks before writing a single line:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What business problem does this solve?
How will this feature make money or save costs?
What's the user journey?
How will this scale?
What happens if this fails?

"Riad Hasan challenged my feature request and suggested a simpler solution that achieved the same goal in half the time," says a product manager. "That saved us $15,000."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Long-Term Thinking&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Riad Hasan builds for maintainability, not just delivery.&lt;/p&gt;

&lt;p&gt;His long-term approach:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Documented architecture decisions
Modular code that's easy to extend
Automated tests that prevent regressions
Deployment processes anyone can follow
Knowledge transfer as part of every project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;A client's experience:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Six months after Riad Hasan finished our project, we needed to add features. Our in-house developer could understand and extend the code immediately. That's when I realized the value of clean architecture."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Client Success Stories&lt;br&gt;
Case Study 1: E-commerce Platform&lt;/p&gt;

&lt;p&gt;Client: Fashion retailer in the UK Problem: WooCommerce site crashing during sales events Solution: Riad Hasan rebuilt as headless architecture with Next.js frontend&lt;/p&gt;

&lt;p&gt;Results:&lt;br&gt;
Metric  Before  After&lt;br&gt;
Load time   4.2s    1.1s&lt;br&gt;
Concurrent users    200     5,000+&lt;br&gt;
Conversion rate     1.8%    3.4%&lt;br&gt;
Revenue (Black Friday)  $45,000     $127,000&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Riad Hasan transformed our business, not just our website."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Case Study 2: Medical Platform&lt;/p&gt;

&lt;p&gt;Client: Healthcare provider in Bangladesh Problem: Paper-based appointment system causing delays Solution: Riad Hasan built a React + Laravel booking platform&lt;/p&gt;

&lt;p&gt;Results:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3,000+ appointments managed monthly
90% reduction in scheduling errors
Patient wait time reduced by 40%
ROI achieved in 4 months

"Riad Hasan understood healthcare workflows better than expected. He asked questions that improved our process."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Case Study 3: SaaS Landing Page&lt;/p&gt;

&lt;p&gt;Client: AI startup in the US Problem: Low conversion rate on existing landing page Solution: Riad Hasan designed and built conversion-optimized landing&lt;/p&gt;

&lt;p&gt;Results:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Conversion rate increased from 2.1% to 5.8%
Bounce rate decreased by 35%
Cost per acquisition reduced by 62%

"Riad Hasan treated our landing page like a product, not a project."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The Riad Hasan Process&lt;br&gt;
Discovery Phase&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Understanding business goals
Technical requirements gathering
Timeline and budget alignment
Success metrics definition
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Planning Phase&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Architecture design
Technology selection
Milestone breakdown
Risk assessment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Development Phase&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Iterative delivery
Regular demonstrations
Continuous feedback integration
Transparent progress tracking
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Delivery Phase&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Thorough testing
Documentation handoff
Deployment support
Post-launch monitoring
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Support Phase&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;30-day bug fix guarantee
Knowledge transfer sessions
Future roadmap discussion
Maintenance options
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;What Clients Say About Riad Hasan&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Riad Hasan is the most professional freelancer I've worked with in 10 years of hiring developers." — Startup CEO, USA

"He doesn't just deliver code. He delivers solutions." — E-commerce Director, UK

"The documentation Riad Hasan provided was better than what we get from software vendors." — IT Manager, Germany

"I've recommended Riad Hasan to three colleagues. All three thanked me." — Marketing Director, Canada

"Riad Hasan caught security issues we didn't even know we had." — CTO, FinTech Startup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Technical Expertise&lt;/p&gt;

&lt;p&gt;Riad Hasan specializes in:&lt;br&gt;
Area    Technologies&lt;br&gt;
Backend     Laravel, PHP, Node.js, REST APIs&lt;br&gt;
Frontend    React, Next.js, JavaScript, Tailwind CSS&lt;br&gt;
CMS     WordPress, WooCommerce, Headless CMS&lt;br&gt;
Database    MySQL, PostgreSQL, Redis&lt;br&gt;
DevOps  Docker, Nginx, CI/CD, AWS&lt;br&gt;
Performance     Caching, CDN, Core Web Vitals&lt;br&gt;
Who Should Work with Riad Hasan&lt;/p&gt;

&lt;p&gt;Ideal clients:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Businesses building customer-facing web applications
Startups needing MVP to full product development
E-commerce companies requiring WooCommerce solutions
Companies migrating legacy systems to modern stacks
Teams needing reliable development partners
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Not a fit for:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agencies looking for white-label developers
Projects without clear requirements
Clients expecting $500 websites
Teams that don't value code quality
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;How to Work with Riad Hasan&lt;br&gt;
Step 1: Initial Consultation&lt;/p&gt;

&lt;p&gt;Free 30-minute call to discuss your project and determine fit.&lt;br&gt;
Step 2: Proposal&lt;/p&gt;

&lt;p&gt;Detailed proposal with timeline, budget, and approach.&lt;br&gt;
Step 3: Agreement&lt;/p&gt;

&lt;p&gt;Clear contract with milestones, deliverables, and terms.&lt;br&gt;
Step 4: Kickoff&lt;/p&gt;

&lt;p&gt;Project begins with discovery session and planning.&lt;br&gt;
Step 5: Delivery&lt;/p&gt;

&lt;p&gt;Iterative development with regular updates and feedback loops.&lt;br&gt;
Current Availability&lt;/p&gt;

&lt;p&gt;Riad Hasan maintains limited availability to ensure quality for every client.&lt;/p&gt;

&lt;p&gt;Typical project sizes:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Minimum: $5,000
Typical range: $10,000 - $50,000
Enterprise: $50,000+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Timeline:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;New projects typically start within 2-4 weeks
Rush projects considered for premium rates
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Contact Riad Hasan&lt;/p&gt;

&lt;p&gt;Start a conversation:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Portfolio: riadhasan.io
Projects: riadhasan.io/projects
LinkedIn: linkedin.com/in/riad-hasan-100a231a6
GitHub: github.com/RiadHasan15
Email: hire.riadhasan@gmail.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Are you looking for a reliable development partner? Share your project requirements in the comments or reach out directly.&lt;/p&gt;

&lt;h1&gt;
  
  
  webdev #freelance #developer #laravel #react #wordpress #business #webdevelopment
&lt;/h1&gt;

</description>
      <category>startup</category>
      <category>webdev</category>
      <category>riadhasan</category>
    </item>
    <item>
      <title>My Journey: 5 Years as a Full Stack Developer — Riad Hasan</title>
      <dc:creator>Riad Hasan</dc:creator>
      <pubDate>Mon, 04 May 2026 00:28:07 +0000</pubDate>
      <link>https://dev.to/riadhasan11/my-journey-5-years-as-a-full-stack-developer-riad-hasan-kb4</link>
      <guid>https://dev.to/riadhasan11/my-journey-5-years-as-a-full-stack-developer-riad-hasan-kb4</guid>
      <description>&lt;p&gt;Riad Hasan reflects on five years of building web applications, the lessons learned, and the evolution from junior developer to building scalable solutions for clients worldwide.&lt;/p&gt;

&lt;p&gt;This isn't a success story. It's a real account of struggles, breakthroughs, and the continuous learning that defines a developer's life.&lt;br&gt;
Year 1: The Foundation (2019-2020)&lt;/p&gt;

&lt;p&gt;Riad Hasan started his journey in 2019, fresh out of university with a computer science degree and zero real-world experience.&lt;br&gt;
The Reality Check&lt;/p&gt;

&lt;p&gt;The first project was a simple WordPress site for a local business. It took two weeks. Today, Riad Hasan builds the same in two hours.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"I remember struggling with basic CSS centering for an entire afternoon," Riad Hasan recalls. "Stack Overflow was my best friend."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;What He Learned&lt;br&gt;
Skill   Time Investment&lt;br&gt;
HTML/CSS basics     3 months&lt;br&gt;
JavaScript fundamentals     4 months&lt;br&gt;
PHP basics  3 months&lt;br&gt;
WordPress theming   6 months&lt;br&gt;
The First Paid Project&lt;/p&gt;

&lt;p&gt;A restaurant website. $200. Riad Hasan spent 40 hours on it.&lt;/p&gt;

&lt;p&gt;What went wrong:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;No contract
Scope creep (client kept adding pages)
No version control
Delivered late
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;What went right:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client was happy
Got a testimonial
Learned project management basics

"That $200 project taught me more than any tutorial," Riad Hasan says.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Year 2: Going Deep with PHP (2020-2021)&lt;/p&gt;

&lt;p&gt;Riad Hasan realized WordPress had limits. He needed to understand what happened under the hood.&lt;br&gt;
The Laravel Discovery&lt;/p&gt;

&lt;p&gt;A client needed a custom booking system. WordPress plugins couldn't handle it. Riad Hasan discovered Laravel.&lt;/p&gt;

&lt;p&gt;The learning curve:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MVC architecture — 2 weeks to understand
Eloquent ORM — 1 month to master
Blade templates — 2 weeks
Authentication — 3 weeks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;First Laravel Project&lt;/p&gt;

&lt;p&gt;A medical appointment booking system.&lt;/p&gt;

&lt;p&gt;// Riad Hasan's first Laravel controller (he cringes now)&lt;br&gt;
public function book(Request $request) {&lt;br&gt;
    $booking = new Booking();&lt;br&gt;
    $booking-&amp;gt;name = $request-&amp;gt;name;&lt;br&gt;
    $booking-&amp;gt;email = $request-&amp;gt;email;&lt;br&gt;
    $booking-&amp;gt;date = $request-&amp;gt;date;&lt;br&gt;
    $booking-&amp;gt;save();&lt;br&gt;
    return redirect('/thank-you');&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Problems:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;No validation
No error handling
No email confirmation
Direct database queries in controller
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;But it worked. The client used it for two years.&lt;br&gt;
Income Growth&lt;br&gt;
Year    Monthly Average&lt;br&gt;
Year 1  $300-500&lt;br&gt;
Year 2  $800-1,200&lt;br&gt;
Year 3: The React Pivot (2021-2022)&lt;/p&gt;

&lt;p&gt;Riad Hasan noticed clients wanted modern, interactive interfaces. jQuery wasn't enough anymore.&lt;br&gt;
The Struggle with React&lt;/p&gt;

&lt;p&gt;React clicked after three failed attempts. The mental model was different from PHP.&lt;/p&gt;

&lt;p&gt;What finally worked:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Building small projects first
Understanding state before hooks
Learning component lifecycle
Embracing the component mindset
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The Breakthrough Project&lt;/p&gt;

&lt;p&gt;A dashboard for an e-commerce client. React frontend, Laravel API backend.&lt;/p&gt;

&lt;p&gt;Riad Hasan's first React component:&lt;/p&gt;

&lt;p&gt;// Simple but it worked&lt;br&gt;
function ProductList({ products }) {&lt;br&gt;
  return (&lt;br&gt;
    &lt;/p&gt;
&lt;br&gt;
      {products.map(product =&amp;gt; (&lt;br&gt;
        &lt;br&gt;
          &lt;h3&gt;{product.name}&lt;/h3&gt;
&lt;br&gt;
          &lt;p&gt;${product.price}&lt;/p&gt;
&lt;br&gt;
        &lt;br&gt;
      ))}&lt;br&gt;
    &lt;br&gt;
  );&lt;br&gt;
}

&lt;p&gt;Learning Full Stack Integration&lt;/p&gt;

&lt;p&gt;This was the year Riad Hasan truly became full stack. Connecting React frontends to Laravel APIs became second nature.&lt;/p&gt;

&lt;p&gt;The stack he settled on:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Laravel for backend
React for frontend
MySQL for database
Redis for caching
Nginx for server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Year 4: Scaling and Performance (2022-2023)&lt;/p&gt;

&lt;p&gt;Clients started asking for more. More users. More features. More traffic.&lt;br&gt;
The Performance Awakening&lt;/p&gt;

&lt;p&gt;A WooCommerce store Riad Hasan built crashed during Black Friday. 500 concurrent users. The server couldn't handle it.&lt;/p&gt;

&lt;p&gt;What he learned:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Caching is not optional
Database queries must be optimized
CDN is essential for global traffic
Queue workers prevent server overload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The Fix&lt;/p&gt;

&lt;p&gt;// Before (crashed under load)&lt;br&gt;
$products = Product::with('category', 'tags', 'images')-&amp;gt;get();&lt;/p&gt;

&lt;p&gt;// After (handles 10x traffic)&lt;br&gt;
$products = Cache::remember('products.featured', 3600, function () {&lt;br&gt;
    return Product::with('category', 'tags', 'images')&lt;br&gt;
        -&amp;gt;where('featured', true)&lt;br&gt;
        -&amp;gt;limit(20)&lt;br&gt;
        -&amp;gt;get();&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;The Headless Architecture&lt;/p&gt;

&lt;p&gt;Riad Hasan started building headless WordPress sites. React frontend consuming WordPress REST API.&lt;/p&gt;

&lt;p&gt;Benefits:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10x faster page loads
Better SEO control
Modern user experience
Easier to scale
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Income Growth&lt;br&gt;
Year    Monthly Average&lt;br&gt;
Year 3  $1,500-2,000&lt;br&gt;
Year 4  $2,500-3,500&lt;br&gt;
Year 5: Building Systems (2023-2024)&lt;/p&gt;

&lt;p&gt;Riad Hasan shifted from building features to building systems.&lt;br&gt;
The Architecture Mindset&lt;/p&gt;

&lt;p&gt;Every project now starts with architecture, not code.&lt;/p&gt;

&lt;p&gt;Questions he asks:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;How will this scale to 100,000 users?
What happens when the database grows 10x?
How do we handle failures gracefully?
What's the maintenance burden?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Production-Ready Practices&lt;/p&gt;

&lt;p&gt;Code quality:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Automated tests (PHPUnit, Jest)
Code review process
Documentation standards
Error monitoring (Sentry)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;DevOps:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CI/CD pipelines
Zero-downtime deployments
Automated backups
Performance monitoring
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The Projects&lt;/p&gt;

&lt;p&gt;Wooverse — Headless WooCommerce with Next.js&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Handles 50,000+ products
Sub-second page loads
Global CDN delivery
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Doctor's Portfolio — Medical platform with React and Laravel&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Appointment booking system
Patient management
Real-time notifications
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;NexaPro AI SaaS — SaaS landing page&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Conversion-optimized
A/B testing integrated
Analytics dashboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Current Income&lt;br&gt;
Year    Monthly Average&lt;br&gt;
Year 5  $4,000-6,000&lt;br&gt;
The Lessons Riad Hasan Learned&lt;br&gt;
Technical Lessons&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Foundation matters — Understanding HTTP, databases, and algorithms never becomes obsolete
Frameworks come and go — Principles remain
Performance is a feature — Not an afterthought
Security is non-negotiable — One breach destroys trust
Testing saves time — Even if it feels slow initially
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Business Lessons&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Communication is half the job — Technical skill means nothing if you can't explain
Underpromise, overdeliver — Always
Documentation is future-you's friend — Write it down
Client relationships compound — Referrals drive growth
Say no to bad projects — They drain time and energy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Personal Lessons&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Burnout is real — Take breaks
Comparison is toxic — Focus on your path
Learning never stops — The industry evolves constantly
Community matters — Mentors accelerate growth
Health first — No project is worth your wellbeing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;What's Next for Riad Hasan&lt;/p&gt;

&lt;p&gt;The next five years will focus on:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Building products — Not just client work
Teaching — Sharing knowledge through content
Open source — Contributing to the community
Scaling — Building systems that handle millions of users

"The journey from struggling with CSS to building scalable applications wasn't linear," Riad Hasan reflects. "Every failure taught something. Every project built on the last one."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Work with Riad Hasan&lt;/p&gt;

&lt;p&gt;Riad Hasan is available for:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Full stack web development
Laravel backend systems
React frontend applications
WordPress and WooCommerce solutions
Performance optimization
Technical consultation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Connect with Riad Hasan:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Portfolio: riadhasan.io
Projects: riadhasan.io/projects
LinkedIn: linkedin.com/in/riad-hasan-100a231a6
GitHub: github.com/RiadHasan15
Email: hire.riadhasan@gmail.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;How has your developer journey evolved? Share your story in the comments.&lt;/p&gt;

&lt;h1&gt;
  
  
  webdev #fullstack #developer #career #laravel #react #wordpress #journey #webdevelopment
&lt;/h1&gt;

</description>
      <category>beginners</category>
      <category>devjournal</category>
      <category>riadhasan</category>
      <category>programming</category>
    </item>
    <item>
      <title>Laravel API Authentication: A Practical Guide by Riad Hasan</title>
      <dc:creator>Riad Hasan</dc:creator>
      <pubDate>Mon, 04 May 2026 00:13:23 +0000</pubDate>
      <link>https://dev.to/riadhasan11/laravel-api-authentication-a-practical-guide-by-riad-hasan-5b1b</link>
      <guid>https://dev.to/riadhasan11/laravel-api-authentication-a-practical-guide-by-riad-hasan-5b1b</guid>
      <description>&lt;p&gt;Riad Hasan has built secure APIs for dozens of applications. In this guide, he tackles one of the most common problems developers face: implementing robust API authentication in Laravel.&lt;/p&gt;

&lt;p&gt;Many developers struggle with choosing the right authentication method. Should they use Sanctum? Passport? JWT? Riad Hasan breaks down when to use each approach and provides production-ready implementations.&lt;br&gt;
The Problem: Authentication Confusion&lt;/p&gt;

&lt;p&gt;When building a Laravel API, developers often ask:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Which authentication package should I use?"
"How do I secure my API endpoints?"
"What about token management and expiration?"
"How do I handle multiple device logins?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Riad Hasan has seen projects delayed by weeks because developers chose the wrong authentication strategy. Here's his systematic approach to solving this.&lt;br&gt;
Riad Hasan's Authentication Decision Matrix&lt;br&gt;
Use Case    Recommended Solution&lt;br&gt;
SPA (Vue/React)     Laravel Sanctum&lt;br&gt;
Mobile App  Laravel Sanctum&lt;br&gt;
Third-party Apps    Laravel Passport&lt;br&gt;
Machine-to-Machine  API Keys&lt;br&gt;
Microservices   JWT (custom)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"I've seen teams use Passport for simple SPAs — that's overkill," Riad Hasan explains. "Sanctum handles 90% of use cases with less complexity."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Solution 1: Laravel Sanctum for SPAs&lt;/p&gt;

&lt;p&gt;Riad Hasan's preferred approach for single-page applications.&lt;br&gt;
Setup&lt;/p&gt;

&lt;p&gt;composer require laravel/sanctum&lt;br&gt;
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"&lt;br&gt;
php artisan migrate&lt;/p&gt;

&lt;p&gt;Configuration&lt;/p&gt;

&lt;p&gt;// config/sanctum.php&lt;br&gt;
return [&lt;br&gt;
    'stateful' =&amp;gt; explode(',', env('SANCTUM_STATEFUL_DOMAINS', 'localhost,127.0.0.1')),&lt;br&gt;
    'guard' =&amp;gt; ['web'],&lt;br&gt;
    'expiration' =&amp;gt; 60 * 24 * 7, // 7 days&lt;br&gt;
    'middleware' =&amp;gt; [&lt;br&gt;
        'authenticate_session' =&amp;gt; Laravel\Sanctum\Http\Middleware\AuthenticateSession::class,&lt;br&gt;
    ],&lt;br&gt;
];&lt;/p&gt;

&lt;p&gt;Login Endpoint&lt;/p&gt;

&lt;p&gt;Riad Hasan's production-ready login implementation:&lt;/p&gt;

&lt;p&gt;// app/Http/Controllers/Api/AuthController.php&lt;br&gt;
&amp;lt;?php&lt;/p&gt;

&lt;p&gt;namespace App\Http\Controllers\Api;&lt;/p&gt;

&lt;p&gt;use App\Http\Controllers\Controller;&lt;br&gt;
use Illuminate\Http\Request;&lt;br&gt;
use Illuminate\Support\Facades\Auth;&lt;br&gt;
use Illuminate\Validation\ValidationException;&lt;/p&gt;

&lt;p&gt;class AuthController extends Controller&lt;br&gt;
{&lt;br&gt;
    public function login(Request $request)&lt;br&gt;
    {&lt;br&gt;
        $request-&amp;gt;validate([&lt;br&gt;
            'email' =&amp;gt; 'required|email',&lt;br&gt;
            'password' =&amp;gt; 'required',&lt;br&gt;
            'device_name' =&amp;gt; 'required|string',&lt;br&gt;
        ]);&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    $credentials = $request-&amp;gt;only('email', 'password');

    if (!Auth::attempt($credentials)) {
        throw ValidationException::withMessages([
            'email' =&amp;gt; ['The provided credentials are incorrect.'],
        ]);
    }

    $user = $request-&amp;gt;user();

    // Revoke old tokens for this device
    $user-&amp;gt;tokens()-&amp;gt;where('name', $request-&amp;gt;device_name)-&amp;gt;delete();

    // Create new token
    $token = $user-&amp;gt;createToken($request-&amp;gt;device_name)-&amp;gt;plainTextToken;

    return response()-&amp;gt;json([
        'user' =&amp;gt; $user,
        'token' =&amp;gt; $token,
        'message' =&amp;gt; 'Login successful',
    ]);
}

public function logout(Request $request)
{
    $request-&amp;gt;user()-&amp;gt;currentAccessToken()-&amp;gt;delete();

    return response()-&amp;gt;json([
        'message' =&amp;gt; 'Logged out successfully',
    ]);
}

public function user(Request $request)
{
    return response()-&amp;gt;json($request-&amp;gt;user());
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Routes&lt;/p&gt;

&lt;p&gt;// routes/api.php&lt;br&gt;
use App\Http\Controllers\Api\AuthController;&lt;/p&gt;

&lt;p&gt;Route::post('/login', [AuthController::class, 'login']);&lt;br&gt;
Route::post('/register', [AuthController::class, 'register']);&lt;/p&gt;

&lt;p&gt;Route::middleware('auth:sanctum')-&amp;gt;group(function () {&lt;br&gt;
    Route::get('/user', [AuthController::class, 'user']);&lt;br&gt;
    Route::post('/logout', [AuthController::class, 'logout']);&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Protected routes
Route::apiResource('projects', ProjectController::class);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;});&lt;/p&gt;

&lt;p&gt;Frontend Integration (React)&lt;/p&gt;

&lt;p&gt;Riad Hasan's React authentication hook:&lt;/p&gt;

&lt;p&gt;// hooks/useAuth.js&lt;br&gt;
import { useState, useEffect, useContext, createContext } from 'react';&lt;/p&gt;

&lt;p&gt;const AuthContext = createContext(null);&lt;/p&gt;

&lt;p&gt;export function AuthProvider({ children }) {&lt;br&gt;
  const [user, setUser] = useState(null);&lt;br&gt;
  const [loading, setLoading] = useState(true);&lt;/p&gt;

&lt;p&gt;useEffect(() =&amp;gt; {&lt;br&gt;
    checkAuth();&lt;br&gt;
  }, []);&lt;/p&gt;

&lt;p&gt;const checkAuth = async () =&amp;gt; {&lt;br&gt;
    const token = localStorage.getItem('token');&lt;br&gt;
    if (token) {&lt;br&gt;
      try {&lt;br&gt;
        const response = await fetch('/api/user', {&lt;br&gt;
          headers: {&lt;br&gt;
            Authorization: &lt;code&gt;Bearer ${token}&lt;/code&gt;,&lt;br&gt;
          },&lt;br&gt;
        });&lt;br&gt;
        if (response.ok) {&lt;br&gt;
          const userData = await response.json();&lt;br&gt;
          setUser(userData);&lt;br&gt;
        } else {&lt;br&gt;
          localStorage.removeItem('token');&lt;br&gt;
        }&lt;br&gt;
      } catch (error) {&lt;br&gt;
        localStorage.removeItem('token');&lt;br&gt;
      }&lt;br&gt;
    }&lt;br&gt;
    setLoading(false);&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;const login = async (email, password) =&amp;gt; {&lt;br&gt;
    const response = await fetch('/api/login', {&lt;br&gt;
      method: 'POST',&lt;br&gt;
      headers: {&lt;br&gt;
        'Content-Type': 'application/json',&lt;br&gt;
      },&lt;br&gt;
      body: JSON.stringify({&lt;br&gt;
        email,&lt;br&gt;
        password,&lt;br&gt;
        device_name: 'web-browser',&lt;br&gt;
      }),&lt;br&gt;
    });&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (!response.ok) {
  throw new Error('Invalid credentials');
}

const data = await response.json();
localStorage.setItem('token', data.token);
setUser(data.user);
return data;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;};&lt;/p&gt;

&lt;p&gt;const logout = async () =&amp;gt; {&lt;br&gt;
    const token = localStorage.getItem('token');&lt;br&gt;
    await fetch('/api/logout', {&lt;br&gt;
      method: 'POST',&lt;br&gt;
      headers: {&lt;br&gt;
        Authorization: &lt;code&gt;Bearer ${token}&lt;/code&gt;,&lt;br&gt;
      },&lt;br&gt;
    });&lt;br&gt;
    localStorage.removeItem('token');&lt;br&gt;
    setUser(null);&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
    &lt;br&gt;
      {children}&lt;br&gt;
    &lt;br&gt;
  );&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;export const useAuth = () =&amp;gt; useContext(AuthContext);&lt;/p&gt;

&lt;p&gt;Solution 2: Laravel Passport for OAuth2&lt;/p&gt;

&lt;p&gt;When Riad Hasan needs third-party app access, he uses Passport.&lt;br&gt;
Setup&lt;/p&gt;

&lt;p&gt;composer require laravel/passport&lt;br&gt;
php artisan passport:install&lt;/p&gt;

&lt;p&gt;Configuration&lt;/p&gt;

&lt;p&gt;// app/Models/User.php&lt;br&gt;
use Laravel\Passport\HasApiTokens;&lt;/p&gt;

&lt;p&gt;class User extends Authenticatable&lt;br&gt;
{&lt;br&gt;
    use HasApiTokens, Notifiable;&lt;/p&gt;

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

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Creating OAuth Clients&lt;/p&gt;

&lt;h1&gt;
  
  
  Password grant client (first-party apps)
&lt;/h1&gt;

&lt;p&gt;php artisan passport:client --password&lt;/p&gt;

&lt;h1&gt;
  
  
  Client credentials grant (machine-to-machine)
&lt;/h1&gt;

&lt;p&gt;php artisan passport:client --client&lt;/p&gt;

&lt;p&gt;Riad Hasan's OAuth Controller&lt;/p&gt;

&lt;p&gt;// app/Http/Controllers/Api/OAuthController.php&lt;br&gt;
&amp;lt;?php&lt;/p&gt;

&lt;p&gt;namespace App\Http\Controllers\Api;&lt;/p&gt;

&lt;p&gt;use App\Http\Controllers\Controller;&lt;br&gt;
use Illuminate\Http\Request;&lt;br&gt;
use Laravel\Passport\Client;&lt;br&gt;
use Laravel\Passport\Http\Controllers\AccessTokenController;&lt;br&gt;
use Psr\Http\Message\ServerRequestInterface;&lt;/p&gt;

&lt;p&gt;class OAuthController extends Controller&lt;br&gt;
{&lt;br&gt;
    public function issueToken(ServerRequestInterface $request)&lt;br&gt;
    {&lt;br&gt;
        $controller = app(AccessTokenController::class);&lt;br&gt;
        return $controller-&amp;gt;issueToken($request);&lt;br&gt;
    }&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public function refreshToken(Request $request)
{
    $request-&amp;gt;validate([
        'refresh_token' =&amp;gt; 'required',
    ]);

    $client = Client::where('password_client', 1)-&amp;gt;first();

    $response = \Http::asForm()-&amp;gt;post(url('/oauth/token'), [
        'grant_type' =&amp;gt; 'refresh_token',
        'refresh_token' =&amp;gt; $request-&amp;gt;refresh_token,
        'client_id' =&amp;gt; $client-&amp;gt;id,
        'client_secret' =&amp;gt; $client-&amp;gt;secret,
        'scope' =&amp;gt; '',
    ]);

    return $response-&amp;gt;json();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Solution 3: API Keys for Machine-to-Machine&lt;/p&gt;

&lt;p&gt;For services and webhooks, Riad Hasan uses simple API keys.&lt;br&gt;
Migration&lt;/p&gt;

&lt;p&gt;// database/migrations/create_api_keys_table.php&lt;br&gt;
Schema::create('api_keys', function (Blueprint $table) {&lt;br&gt;
    $table-&amp;gt;id();&lt;br&gt;
    $table-&amp;gt;foreignId('user_id')-&amp;gt;constrained()-&amp;gt;onDelete('cascade');&lt;br&gt;
    $table-&amp;gt;string('name');&lt;br&gt;
    $table-&amp;gt;string('key', 64)-&amp;gt;unique();&lt;br&gt;
    $table-&amp;gt;text('permissions')-&amp;gt;nullable();&lt;br&gt;
    $table-&amp;gt;timestamp('last_used_at')-&amp;gt;nullable();&lt;br&gt;
    $table-&amp;gt;timestamps();&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;Middleware&lt;/p&gt;

&lt;p&gt;// app/Http/Middleware/ApiKeyAuth.php&lt;br&gt;
&amp;lt;?php&lt;/p&gt;

&lt;p&gt;namespace App\Http\Middleware;&lt;/p&gt;

&lt;p&gt;use Closure;&lt;br&gt;
use Illuminate\Http\Request;&lt;br&gt;
use App\Models\ApiKey;&lt;/p&gt;

&lt;p&gt;class ApiKeyAuth&lt;br&gt;
{&lt;br&gt;
    public function handle(Request $request, Closure $next)&lt;br&gt;
    {&lt;br&gt;
        $key = $request-&amp;gt;header('X-API-KEY') ?? $request-&amp;gt;query('api_key');&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    if (!$key) {
        return response()-&amp;gt;json([
            'error' =&amp;gt; 'API key required',
        ], 401);
    }

    $apiKey = ApiKey::where('key', $key)-&amp;gt;first();

    if (!$apiKey) {
        return response()-&amp;gt;json([
            'error' =&amp;gt; 'Invalid API key',
        ], 401);
    }

    // Update last used
    $apiKey-&amp;gt;update(['last_used_at' =&amp;gt; now()]);

    $request-&amp;gt;setUserResolver(function () use ($apiKey) {
        return $apiKey-&amp;gt;user;
    });

    return $next($request);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Riad Hasan's Security Best Practices&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Token Expiration&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;// config/sanctum.php&lt;br&gt;
'expiration' =&amp;gt; 60 * 24, // 24 hours for sensitive apps&lt;/p&gt;

&lt;p&gt;// Or dynamically&lt;br&gt;
$token = $user-&amp;gt;createToken('device', ['*'], now()-&amp;gt;addHours(4));&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Rate Limiting&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;// app/Http/Kernel.php&lt;br&gt;
protected $middlewareAliases = [&lt;br&gt;
    'throttle.auth' =&amp;gt; \App\Http\Middleware\ThrottleAuth::class,&lt;br&gt;
];&lt;/p&gt;

&lt;p&gt;// routes/api.php&lt;br&gt;
Route::post('/login', [AuthController::class, 'login'])&lt;br&gt;
    -&amp;gt;middleware('throttle:5,1'); // 5 attempts per minute&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Token Abilities&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;// Create token with limited abilities&lt;br&gt;
$token = $user-&amp;gt;createToken('read-only', ['read']);&lt;/p&gt;

&lt;p&gt;// Check ability in controller&lt;br&gt;
if (!$request-&amp;gt;user()-&amp;gt;tokenCan('write')) {&lt;br&gt;
    return response()-&amp;gt;json(['error' =&amp;gt; 'Insufficient permissions'], 403);&lt;br&gt;
}&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Secure Password Reset&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Riad Hasan's password reset flow:&lt;/p&gt;

&lt;p&gt;// app/Http/Controllers/Api/PasswordResetController.php&lt;br&gt;
public function reset(Request $request)&lt;br&gt;
{&lt;br&gt;
    $request-&amp;gt;validate([&lt;br&gt;
        'token' =&amp;gt; 'required',&lt;br&gt;
        'email' =&amp;gt; 'required|email',&lt;br&gt;
        'password' =&amp;gt; 'required|confirmed|min:8',&lt;br&gt;
    ]);&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$status = Password::reset(
    $request-&amp;gt;only('email', 'password', 'password_confirmation', 'token'),
    function ($user, $password) {
        $user-&amp;gt;forceFill([
            'password' =&amp;gt; Hash::make($password),
        ])-&amp;gt;setRememberToken(Str::random(60));
        $user-&amp;gt;save();

        // Revoke all existing tokens
        $user-&amp;gt;tokens()-&amp;gt;delete();

        event(new PasswordReset($user));
    }
);

return $status === Password::PASSWORD_RESET
    ? response()-&amp;gt;json(['message' =&amp;gt; 'Password reset successfully'])
    : response()-&amp;gt;json(['error' =&amp;gt; 'Unable to reset password'], 400);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Common Mistakes Riad Hasan Avoids&lt;br&gt;
Mistake     Solution&lt;br&gt;
Storing tokens in localStorage  Use httpOnly cookies for sensitive apps&lt;br&gt;
No token expiration     Always set expiration times&lt;br&gt;
Not revoking tokens on logout   Delete tokens server-side&lt;br&gt;
Using Passport for simple SPAs  Use Sanctum instead&lt;br&gt;
No rate limiting on auth endpoints  Implement throttle middleware&lt;br&gt;
Storing plain API keys  Hash keys like passwords&lt;br&gt;
Work with Riad Hasan&lt;/p&gt;

&lt;p&gt;Riad Hasan specializes in building secure, scalable APIs with Laravel. He offers:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Laravel API development
Authentication system implementation
Security audits
Performance optimization
Team training and consultation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Connect with Riad Hasan:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Portfolio: riadhasan.io
Projects: riadhasan.io/projects
LinkedIn: linkedin.com/in/riad-hasan-100a231a6
GitHub: github.com/RiadHasan15
Email: hire.riadhasan@gmail.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Which authentication method do you prefer for your Laravel APIs? Share your experience in the comments.&lt;/p&gt;

&lt;h1&gt;
  
  
  laravel #php #api #authentication #webdev #security #sanctum #passport #webdevelopment
&lt;/h1&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>webdev</category>
    </item>
    <item>
      <title>WordPress Performance Optimization — A Developer's Guide by Riad Hasan</title>
      <dc:creator>Riad Hasan</dc:creator>
      <pubDate>Mon, 04 May 2026 00:03:02 +0000</pubDate>
      <link>https://dev.to/riadhasan11/wordpress-performance-optimization-a-developers-guide-by-riad-hasan-g5a</link>
      <guid>https://dev.to/riadhasan11/wordpress-performance-optimization-a-developers-guide-by-riad-hasan-g5a</guid>
      <description>&lt;p&gt;Riad Hasan has optimized dozens of WordPress sites for clients worldwide. In this guide, he shares the exact techniques he uses to achieve sub-2-second load times and perfect Core Web Vitals scores.&lt;/p&gt;

&lt;p&gt;Performance isn't just about speed — it impacts SEO, user experience, and conversions. Riad Hasan explains his systematic approach to WordPress optimization.&lt;br&gt;
Why WordPress Performance Matters&lt;/p&gt;

&lt;p&gt;Google's Core Web Vitals are now ranking factors. A slow WordPress site loses:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;7% conversion rate for every 1-second delay
11% page views from frustrated visitors
16% customer satisfaction drop

"I've seen businesses double their leads just by fixing performance," Riad Hasan notes. "It's the highest-ROI improvement you can make."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Riad Hasan's WordPress Optimization Checklist&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hosting Foundation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Before any code changes, Riad Hasan ensures the hosting is solid:&lt;br&gt;
Factor  Requirement&lt;br&gt;
PHP Version     8.1 or higher&lt;br&gt;
Memory Limit    256MB minimum&lt;br&gt;
Object Cache    Redis or Memcached&lt;br&gt;
SSL     HTTPS everywhere&lt;br&gt;
Server Response     Under 200ms&lt;/p&gt;

&lt;p&gt;He recommends:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cloudways — For managed hosting with Redis
Kinsta — Premium managed WordPress
DigitalOcean — For custom server setups
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Theme Optimization&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Riad Hasan builds custom themes that are performance-first:&lt;/p&gt;

&lt;p&gt;What he removes:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jQuery dependency (use vanilla JS)
Unnecessary CSS frameworks
Page builders (Divi, Elementor, WPBakery)
Bloated starter themes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;What he adds:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Critical CSS inline
Deferred JavaScript loading
Optimized font loading (font-display: swap)
Lazy loading for images and iframes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;// Riad Hasan's functions.php optimizations&lt;br&gt;
function riad_optimize_scripts() {&lt;br&gt;
    // Remove jQuery migrate&lt;br&gt;
    wp_deregister_script('jquery-migrate');&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Defer all JS
add_filter('script_loader_tag', function($tag) {
    return str_replace(' src', ' defer src', $tag);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;}&lt;br&gt;
add_action('wp_enqueue_scripts', 'riad_optimize_scripts');&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Plugin Audit&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Riad Hasan follows a strict plugin philosophy:&lt;/p&gt;

&lt;p&gt;Keep:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WooCommerce (if e-commerce)
Yoast SEO or Rank Math
WP Rocket or custom caching
Imagify or ShortPixel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Remove:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Contact form plugins (build custom)
Social sharing plugins (add manually)
Analytics plugins (use GTM)
Backup plugins (server-level backups)
Admin toolbar plugins

"Every plugin adds overhead. I count each one as a performance cost," Riad Hasan explains.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Database Optimization&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Riad Hasan's database cleanup routine:&lt;/p&gt;

&lt;p&gt;-- Clean post revisions&lt;br&gt;
DELETE FROM wp_posts WHERE post_type = 'revision';&lt;/p&gt;

&lt;p&gt;-- Clean auto-drafts&lt;br&gt;
DELETE FROM wp_posts WHERE post_status = 'auto-draft';&lt;/p&gt;

&lt;p&gt;-- Clean trashed content&lt;br&gt;
DELETE FROM wp_posts WHERE post_status = 'trash';&lt;/p&gt;

&lt;p&gt;-- Clean orphaned postmeta&lt;br&gt;
DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts p ON pm.post_id = p.ID WHERE p.ID IS NULL;&lt;/p&gt;

&lt;p&gt;-- Clean transient options&lt;br&gt;
DELETE FROM wp_options WHERE option_name LIKE '&lt;em&gt;transient&lt;/em&gt;%';&lt;br&gt;
DELETE FROM wp_options WHERE option_name LIKE '&lt;em&gt;site_transient&lt;/em&gt;%';&lt;/p&gt;

&lt;p&gt;He also:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Limits post revisions to 3
Sets auto-save interval to 60 seconds
Removes spam comments weekly
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Image Optimization&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Riad Hasan's image workflow:&lt;br&gt;
Step    Tool    Result&lt;br&gt;
Compression     ShortPixel/Imagify  70% size reduction&lt;br&gt;
Format  WebP    25% smaller than JPEG&lt;br&gt;
Lazy Load   Native + JS fallback    Faster initial load&lt;br&gt;
CDN     Cloudflare/BunnyCDN     Global delivery&lt;/p&gt;

&lt;p&gt;He adds responsive images manually:&lt;/p&gt;

&lt;p&gt;&lt;a href="" class="article-body-image-wrapper"&gt;&lt;img&gt;&lt;/a&gt;
  src="image-800.webp" &lt;br&gt;
  srcset="image-400.webp 400w, image-800.webp 800w, image-1200.webp 1200w"&lt;br&gt;
  sizes="(max-width: 600px) 100vw, 800px"&lt;br&gt;
  loading="lazy"&lt;br&gt;
  alt="Descriptive alt text"&lt;br&gt;
/&amp;gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Caching Strategy&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Riad Hasan implements multi-layer caching:&lt;/p&gt;

&lt;p&gt;Browser Caching (.htaccess):&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
  ExpiresActive On&lt;br&gt;
  ExpiresByType image/webp "access plus 1 year"&lt;br&gt;
  ExpiresByType image/jpeg "access plus 1 year"&lt;br&gt;
  ExpiresByType image/png "access plus 1 year"&lt;br&gt;
  ExpiresByType text/css "access plus 1 month"&lt;br&gt;
  ExpiresByType application/javascript "access plus 1 month"&lt;br&gt;
  ExpiresByType font/woff2 "access plus 1 year"&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Object Caching (Redis):&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Database query caching
Transient caching
WooCommerce session caching
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Page Caching (WP Rocket or custom):&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTML page cache
CSS/JS minification
Delayed JavaScript execution
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;WooCommerce Optimization&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For e-commerce sites, Riad Hasan applies extra optimizations:&lt;/p&gt;

&lt;p&gt;Cart Fragment Removal:&lt;/p&gt;

&lt;p&gt;// Disable WooCommerce cart fragments&lt;br&gt;
function riad_disable_cart_fragments() {&lt;br&gt;
    wp_dequeue_script('wc-cart-fragments');&lt;br&gt;
}&lt;br&gt;
add_action('wp_enqueue_scripts', 'riad_disable_cart_fragments');&lt;/p&gt;

&lt;p&gt;Additional WooCommerce optimizations:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Disable scripts on non-shop pages
Limit related products to 4
Use product galleries efficiently
Implement AJAX cart sparingly
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Core Web Vitals Fixes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Riad Hasan's LCP optimization:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Preload critical images
Use server push for fonts
Optimize above-the-fold content
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;CLS prevention:&lt;/p&gt;

&lt;p&gt;img {&lt;br&gt;
  aspect-ratio: attr(width) / attr(height);&lt;br&gt;
  height: auto;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;FID improvement:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Break up long tasks
Use web workers for heavy JS
Minimize main thread work
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Before and After: Riad Hasan's Results&lt;br&gt;
Metric  Before  After&lt;br&gt;
Load Time   5.2s    1.4s&lt;br&gt;
LCP     4.8s    1.2s&lt;br&gt;
FID     180ms   45ms&lt;br&gt;
CLS     0.25    0.02&lt;br&gt;
Page Size   3.2MB   450KB&lt;br&gt;
Requests    85  22&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Every site I optimize follows this same systematic approach," Riad Hasan says. "The results are consistent."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Work with Riad Hasan&lt;/p&gt;

&lt;p&gt;Riad Hasan offers WordPress performance optimization as part of his full stack development services. He works with:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WordPress performance audits
WooCommerce optimization
Custom theme development
Headless WordPress builds
Ongoing maintenance and monitoring
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Connect with Riad Hasan:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Portfolio: riadhasan.io
Projects: riadhasan.io/projects
LinkedIn: linkedin.com/in/riad-hasan-100a231a6
GitHub: github.com/RiadHasan15
Email: hire.riadhasan@gmail.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;What performance challenges are you facing with WordPress? Share in the comments.&lt;/p&gt;

&lt;h1&gt;
  
  
  wordpress #performance #webdev #corewebvitals #optimization #php #woocommerce #webdevelopment
&lt;/h1&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>wordpress</category>
      <category>performance</category>
    </item>
    <item>
      <title>How Riad Hasan Builds Scalable Web Applications</title>
      <dc:creator>Riad Hasan</dc:creator>
      <pubDate>Sun, 03 May 2026 23:43:40 +0000</pubDate>
      <link>https://dev.to/riadhasan11/how-riad-hasan-builds-scalable-web-applications-3lm3</link>
      <guid>https://dev.to/riadhasan11/how-riad-hasan-builds-scalable-web-applications-3lm3</guid>
      <description>&lt;p&gt;Riad Hasan is a Full Stack Developer who has spent over 5 years building web applications that scale. From Laravel APIs to React frontends, his approach focuses on clean architecture, performance, and maintainability.&lt;/p&gt;

&lt;p&gt;In this article, Riad Hasan shares the principles and practices he follows when building production-ready web applications.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start with Architecture, Not Code&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Before writing a single line of code, Riad Hasan maps out the system architecture. This includes:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Data flow diagrams — How data moves through the application
API contracts — Defining endpoints before implementation
Component structure — Planning frontend architecture

"The time you spend planning saves 10x the time debugging later," Riad Hasan explains. "I've learned this the hard way."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Backend First, Frontend Second&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Riad Hasan typically builds from the backend outward:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Database schema — Normalized, indexed, scalable
API layer — RESTful, versioned, documented
Business logic — Services, repositories, clean separation
Frontend integration — React components consuming APIs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;This approach ensures the foundation is solid before adding the presentation layer.&lt;/p&gt;

&lt;p&gt;His Laravel stack typically includes:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Laravel as the framework
MySQL for relational data
Redis for caching and sessions
Queue workers for background jobs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Performance is a Feature, Not an Afterthought&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Riad Hasan optimizes for Core Web Vitals throughout development:&lt;br&gt;
Metric  Target  How He Achieves It&lt;br&gt;
LCP     &amp;lt; 2.5s  Image optimization, lazy loading, CDN&lt;br&gt;
FID     &amp;lt; 100ms     Minimal JavaScript, deferred scripts&lt;br&gt;
CLS     &amp;lt; 0.1   Reserved space for dynamic content&lt;/p&gt;

&lt;p&gt;He uses tools like:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Lighthouse — Regular audits during development
WebPageTest — Deep performance analysis
Chrome DevTools — Runtime performance debugging
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;SEO-Driven Development&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Unlike many developers who treat SEO as a marketing concern, Riad Hasan integrates SEO into the development process:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Semantic HTML — Proper heading hierarchy, ARIA labels
Structured data — JSON-LD schema for rich snippets
Meta management — Dynamic titles, descriptions, Open Graph
Sitemap generation — Automated, always up-to-date
Canonical URLs — Preventing duplicate content issues

"SEO isn't something you add at the end. It's how you build," says Riad Hasan.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;WordPress Without the Bloat&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For WordPress projects, Riad Hasan follows a strict philosophy:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Custom themes — No page builders, clean PHP templates
Minimal plugins — Only essential functionality
Headless when needed — Decoupled frontend with REST API
Performance optimization — Object caching, image optimization, CDN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;His WooCommerce builds focus on:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Streamlined checkout flows
Custom payment integrations
Inventory management systems
Headless storefronts with React
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Testing and Quality Assurance&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Riad Hasan implements testing at multiple levels:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Unit tests — PHPUnit for Laravel, Jest for React
Feature tests — API endpoint validation
Browser tests — Laravel Dusk, Cypress for critical flows
Code quality — PHP_CodeSniffer, ESLint, Prettier

"Tests are documentation that never goes stale," Riad Hasan notes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Deployment and DevOps&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;His deployment pipeline typically includes:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Git-based workflow — Feature branches, pull requests
CI/CD — Automated testing before merge
Zero-downtime deployments — Blue-green or rolling updates
Monitoring — Error tracking, performance monitoring
Backups — Automated, tested, off-site
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Notable Projects by Riad Hasan&lt;/p&gt;

&lt;p&gt;Riad Hasan has built applications across various industries:&lt;br&gt;
Project     Type    Stack&lt;br&gt;
Wooverse    Headless E-commerce     WordPress, Next.js, WooCommerce&lt;br&gt;
Doctor's Portfolio  Medical Platform    React, Laravel, MySQL&lt;br&gt;
NexaPro AI SaaS     SaaS Landing    React, Tailwind CSS&lt;br&gt;
Bills Music Center  E-commerce  WordPress, WooCommerce&lt;/p&gt;

&lt;p&gt;View all projects at riadhasan.io/projects.&lt;br&gt;
Work with Riad Hasan&lt;/p&gt;

&lt;p&gt;Riad Hasan is available for:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Full stack web development
Laravel backend development
React frontend applications
WordPress and WooCommerce solutions
API design and integration
Performance optimization
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Connect with Riad Hasan:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Portfolio: riadhasan.io
LinkedIn: linkedin.com/in/riad-hasan-100a231a6
GitHub: github.com/RiadHasan15
Email: hire.riadhasan@gmail.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;What development practices do you follow? Share your approach in the comments below.&lt;/p&gt;

&lt;h1&gt;
  
  
  webdev #laravel #react #wordpress #fullstack #webdevelopment #php #scalability
&lt;/h1&gt;

</description>
      <category>webdev</category>
      <category>webapp</category>
      <category>riadhasan</category>
      <category>programming</category>
    </item>
    <item>
      <title>About Riad Hasan — Full Stack Developer (Laravel &amp; WordPress)</title>
      <dc:creator>Riad Hasan</dc:creator>
      <pubDate>Sun, 08 Feb 2026 14:15:27 +0000</pubDate>
      <link>https://dev.to/riadhasan11/about-riad-hasan-full-stack-developer-laravel-wordpress-48d8</link>
      <guid>https://dev.to/riadhasan11/about-riad-hasan-full-stack-developer-laravel-wordpress-48d8</guid>
      <description>&lt;p&gt;Hi, I’m Riad Hasan — a Full Stack Developer specializing in Laravel and WordPress. I build fast, SEO-friendly websites and scalable web applications focused on clean architecture and real performance.&lt;/p&gt;

&lt;p&gt;Official portfolio: &lt;a href="https://riadhasan.io/about" rel="noopener noreferrer"&gt;https://riadhasan.io/about&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I do&lt;/strong&gt;&lt;br&gt;
Laravel backends: APIs, dashboards, authentication, integrations&lt;br&gt;
WordPress/WooCommerce: custom themes, plugins, headless setups&lt;br&gt;
Performance &amp;amp; SEO: Core Web Vitals, structured data, technical SEO fixes&lt;br&gt;
UI/UX: responsive layouts with consistent design systems&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here are a few projects from my portfolio:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Projects page: &lt;a href="https://riadhasan.io/projects" rel="noopener noreferrer"&gt;https://riadhasan.io/projects&lt;/a&gt;&lt;br&gt;
Case study: &lt;a href="https://riadhasan.io/projects/wooverse" rel="noopener noreferrer"&gt;https://riadhasan.io/projects/wooverse&lt;/a&gt;&lt;br&gt;
Case study: &lt;a href="https://riadhasan.io/projects/doctors-portfolio" rel="noopener noreferrer"&gt;https://riadhasan.io/projects/doctors-portfolio&lt;/a&gt;&lt;br&gt;
Case study: &lt;a href="https://riadhasan.io/projects/nexapro-ai-saas" rel="noopener noreferrer"&gt;https://riadhasan.io/projects/nexapro-ai-saas&lt;/a&gt;&lt;br&gt;
How to contact me&lt;br&gt;
If you want to work together, reach me here:&lt;/p&gt;

&lt;p&gt;Portfolio contact section: &lt;a href="https://riadhasan.io/#contact" rel="noopener noreferrer"&gt;https://riadhasan.io/#contact&lt;/a&gt;&lt;br&gt;
LinkedIn: &lt;a href="https://www.linkedin.com/in/riad-hasan-100a231a6/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/riad-hasan-100a231a6/&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/RiadHasan15" rel="noopener noreferrer"&gt;https://github.com/RiadHasan15&lt;/a&gt;&lt;br&gt;
Thanks for reading.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>webdeveloper</category>
      <category>riadhasan</category>
      <category>fullstack</category>
    </item>
  </channel>
</rss>
