<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Maruti Kr., Author at Artificial Intelligence</title>
	<atom:link href="https://www.aiuniverse.xyz/author/maruti/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.aiuniverse.xyz/author/maruti/</link>
	<description>Exploring the universe of Intelligence</description>
	<lastBuildDate>Fri, 27 Feb 2026 04:32:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Complete Guide to Setting Up React Native Android Development Environment on Windows (Step-by-Step)</title>
		<link>https://www.aiuniverse.xyz/complete-guide-to-setting-up-react-native-android-development-environment-on-windows-step-by-step/</link>
					<comments>https://www.aiuniverse.xyz/complete-guide-to-setting-up-react-native-android-development-environment-on-windows-step-by-step/#respond</comments>
		
		<dc:creator><![CDATA[Maruti Kr.]]></dc:creator>
		<pubDate>Fri, 27 Feb 2026 04:32:05 +0000</pubDate>
				<category><![CDATA[Android Studio]]></category>
		<category><![CDATA[add platform-tools to PATH]]></category>
		<category><![CDATA[configure ANDROID_HOME Windows]]></category>
		<category><![CDATA[create Android Virtual Device API 35]]></category>
		<category><![CDATA[fix React Native CMake error]]></category>
		<category><![CDATA[fix std::format React Native error]]></category>
		<category><![CDATA[install Android Build Tools 36.0.0]]></category>
		<category><![CDATA[install Android SDK Platform 35]]></category>
		<category><![CDATA[install Node LTS for React Native]]></category>
		<category><![CDATA[install React Native on Windows]]></category>
		<category><![CDATA[React Native Android setup Windows]]></category>
		<category><![CDATA[React Native Android Studio configuration]]></category>
		<category><![CDATA[React Native development environment guide]]></category>
		<category><![CDATA[React Native emulator setup]]></category>
		<category><![CDATA[React Native environment setup]]></category>
		<category><![CDATA[React Native JDK 17 setup]]></category>
		<category><![CDATA[React Native NDK 27.1 setup]]></category>
		<guid isPermaLink="false">https://www.aiuniverse.xyz/?p=22344</guid>

					<description><![CDATA[<p>Setting up a React Native development environment for Android can feel overwhelming at first — especially if you&#8217;re new to Android Studio, SDK tools, and environment variables. <a class="read-more-link" href="https://www.aiuniverse.xyz/complete-guide-to-setting-up-react-native-android-development-environment-on-windows-step-by-step/">Read More</a></p>
<p>The post <a href="https://www.aiuniverse.xyz/complete-guide-to-setting-up-react-native-android-development-environment-on-windows-step-by-step/">Complete Guide to Setting Up React Native Android Development Environment on Windows (Step-by-Step)</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Setting up a React Native development environment for Android can feel overwhelming at first — especially if you&#8217;re new to Android Studio, SDK tools, and environment variables.</p>



<p>In this guide, I’ll walk you through the exact process I followed to successfully set up my environment on Windows. By the end, you’ll be able to:</p>



<ul class="wp-block-list">
<li>Run your React Native project on an Android emulator</li>



<li>Build your app locally</li>



<li>Avoid common JDK, SDK, and NDK issues</li>



<li>Launch your app smoothly using <code>npx react-native run-android</code></li>
</ul>



<p>This setup is ideal for long-term development and future-proofing your workflow.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Why Proper Environment Setup Is Important</h1>



<p>React Native development for Android requires multiple tools working together:</p>



<ul class="wp-block-list">
<li>Node.js</li>



<li>React Native CLI</li>



<li>Java Development Kit (JDK)</li>



<li>Android Studio</li>



<li>Android SDK</li>



<li>Android Emulator</li>
</ul>



<p>If even one component is misconfigured, you may face:</p>



<ul class="wp-block-list">
<li>CMake build errors</li>



<li>Device detection issues</li>



<li>Gradle failures</li>



<li>Emulator launch problems</li>
</ul>



<p>So let’s set everything up properly from scratch.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Step 1: Install Node.js (LTS Recommended)</h1>



<p>React Native depends on Node.js.</p>



<h3 class="wp-block-heading">Recommended Method (Windows)</h3>



<p>Use <strong>Chocolatey</strong> package manager.</p>



<p>Open <strong>Command Prompt as Administrator</strong> and run:</p>



<pre class="wp-block-code"><code>choco install -y nodejs-lts microsoft-openjdk17</code></pre>



<h3 class="wp-block-heading">Important Notes</h3>



<ul class="wp-block-list">
<li>Use an LTS version of Node.</li>



<li>Node 22.11.0 or newer is recommended.</li>



<li>If you want multiple Node versions, use <code>nvm-windows</code>.</li>
</ul>



<p>Verify installation:</p>



<pre class="wp-block-code"><code>node -v
npm -v</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Step 2: Install Java Development Kit (JDK 17)</h1>



<p>React Native works most reliably with <strong>JDK 17</strong>.</p>



<p>Even if you have a newer JDK installed, I strongly recommend using JDK 17 to avoid Gradle compatibility issues.</p>



<p>Verify:</p>



<pre class="wp-block-code"><code>java -version</code></pre>



<p>It should show something like:</p>



<pre class="wp-block-code"><code>openjdk version "17.x.x"</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Step 3: Install Android Studio</h1>



<p>Download and install Android Studio.</p>



<p>During installation, make sure these are selected:</p>



<ul class="wp-block-list">
<li>Android SDK</li>



<li>Android SDK Platform</li>



<li>Android Virtual Device</li>



<li>Performance (Intel HAXM if not using Hyper-V)</li>
</ul>



<p>After installation completes, proceed to SDK configuration.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Step 4: Install Required Android SDK Components</h1>



<p>Open Android Studio → More Actions → SDK Manager.</p>



<h3 class="wp-block-heading">In SDK Platforms Tab</h3>



<ol class="wp-block-list">
<li>Enable “Show Package Details”.</li>



<li>Expand Android 15 (VanillaIceCream).</li>



<li>Select:
<ul class="wp-block-list">
<li>Android SDK Platform 35</li>



<li>Intel x86 Atom_64 System Image or Google APIs System Image</li>
</ul>
</li>
</ol>



<h3 class="wp-block-heading">In SDK Tools Tab</h3>



<ol class="wp-block-list">
<li>Enable “Show Package Details”.</li>



<li>Select:
<ul class="wp-block-list">
<li>Android SDK Build-Tools 36.0.0</li>



<li>Android SDK Command-line Tools (latest)</li>



<li>NDK (Side by side)</li>



<li>CMake</li>
</ul>
</li>
</ol>



<p>Click Apply and install.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Step 5: Set ANDROID_HOME Environment Variable</h1>



<p>React Native requires Android environment variables.</p>



<h3 class="wp-block-heading">How to Set It (Windows)</h3>



<ol class="wp-block-list">
<li>Open Control Panel</li>



<li>Go to User Accounts → Environment Variables</li>



<li>Click New</li>
</ol>



<p>Create:</p>



<pre class="wp-block-code"><code>Variable Name: ANDROID_HOME
Variable Value: %LOCALAPPDATA%\Android\Sdk
</code></pre>



<p>Open a new Command Prompt and verify:</p>



<pre class="wp-block-code"><code>Get-ChildItem -Path Env:\</code></pre>



<p>Make sure ANDROID_HOME appears.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Step 6: Add platform-tools to PATH</h1>



<p>Still in Environment Variables:</p>



<ol class="wp-block-list">
<li>Edit the Path variable</li>



<li>Add:</li>
</ol>



<pre class="wp-block-code"><code>%LOCALAPPDATA%\Android\Sdk\platform-tools</code></pre>



<p>Verify:</p>



<pre class="wp-block-code"><code>adb --version
adb devices</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Step 7: Create and Launch an Android Virtual Device (AVD)</h1>



<p>Open Android Studio → AVD Manager.</p>



<ol class="wp-block-list">
<li>Click Create Virtual Device</li>



<li>Select a phone model</li>



<li>Choose API Level 35 (VanillaIceCream)</li>



<li>Finish setup</li>
</ol>



<p>Click the green ▶ button to launch the emulator.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Step 8: Verify Device Connection</h1>



<p>Once emulator is running:</p>



<pre class="wp-block-code"><code>adb devices
</code></pre>



<p>You should see:</p>



<pre class="wp-block-code"><code>emulator-5554 device
</code></pre>



<p>If not, restart ADB:</p>



<pre class="wp-block-code"><code>adb kill-server
adb start-server
adb devices
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Step 9: Create and Run React Native Project</h1>



<p>Create project:</p>



<pre class="wp-block-code"><code>npx react-native init MyApp</code></pre>



<p>Navigate into project:</p>



<pre class="wp-block-code"><code>cd MyApp</code></pre>



<p>Run Android app:</p>



<pre class="wp-block-code"><code>npx react-native run-android</code></pre>



<p>If multiple devices are connected:</p>



<pre class="wp-block-code"><code>npx react-native run-android --device emulator-5554</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Important Compatibility Notes (Very Important)</h1>



<p>During my setup, I faced the following real issues:</p>



<h3 class="wp-block-heading">1. Gradle Using Wrong Java Version</h3>



<p>Fix: Force JDK 17 in <code>android/gradle.properties</code></p>



<h3 class="wp-block-heading">2. CMake Error: std::format Not Found</h3>



<p>Cause: Using NDK 26<br>Fix: Install and use NDK 27.1.12297006</p>



<p>Add inside <code>android {}</code> in build.gradle:</p>



<pre class="wp-block-code"><code>ndkVersion "27.1.12297006"
</code></pre>



<p>Then clean:</p>



<pre class="wp-block-code"><code>cd android
gradlew clean</code></pre>



<p>This resolved C++ build errors completely.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Final Working Configuration Summary</h1>



<p>For a stable React Native Android setup on Windows:</p>



<ul class="wp-block-list">
<li>Node: LTS (22+ recommended)</li>



<li>Java: JDK 17</li>



<li>Android SDK Platform: 35</li>



<li>Build Tools: 36.0.0</li>



<li>NDK: 27.1.12297006</li>



<li>Emulator: API 35</li>



<li>Correct ANDROID_HOME + PATH</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Conclusion</h1>



<p>Setting up React Native Android development correctly takes time — but once done properly, everything runs smoothly.</p>



<p>By following this guide:</p>



<ul class="wp-block-list">
<li>Emulator launches correctly</li>



<li>ADB detects devices</li>



<li>Gradle builds without errors</li>



<li>Native C++ compilation works</li>



<li>App runs smoothly using <code>run-android</code></li>
</ul>



<p>If you’re setting this up for the first time, expect about an hour. After that, development becomes fast and seamless.</p>



<p>This guide will help you avoid common mistakes and future build headaches.</p>
<p>The post <a href="https://www.aiuniverse.xyz/complete-guide-to-setting-up-react-native-android-development-environment-on-windows-step-by-step/">Complete Guide to Setting Up React Native Android Development Environment on Windows (Step-by-Step)</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aiuniverse.xyz/complete-guide-to-setting-up-react-native-android-development-environment-on-windows-step-by-step/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Fix React Native Android Build Errors (JDK 25, NDK 26, CMake &#038; Emulator Issues)</title>
		<link>https://www.aiuniverse.xyz/how-to-fix-react-native-android-build-errors-jdk-25-ndk-26-cmake-emulator-issues/</link>
					<comments>https://www.aiuniverse.xyz/how-to-fix-react-native-android-build-errors-jdk-25-ndk-26-cmake-emulator-issues/#respond</comments>
		
		<dc:creator><![CDATA[Maruti Kr.]]></dc:creator>
		<pubDate>Fri, 27 Feb 2026 04:05:17 +0000</pubDate>
				<category><![CDATA[Android Studio]]></category>
		<category><![CDATA[adb devices not showing emulator]]></category>
		<category><![CDATA[Android emulator not detected React Native]]></category>
		<category><![CDATA[fix buildCMakeDebug arm64-v8a failed]]></category>
		<category><![CDATA[fix CMake ninja build failed]]></category>
		<category><![CDATA[fix configureCMakeDebug error]]></category>
		<category><![CDATA[force ndkVersion in build.gradle]]></category>
		<category><![CDATA[Gradle daemon JVM mismatch fix]]></category>
		<category><![CDATA[Gradle Launcher JVM 25 issue]]></category>
		<category><![CDATA[Gradle using wrong Java version]]></category>
		<category><![CDATA[React Native 0.84 CMake error]]></category>
		<category><![CDATA[React Native Android build error]]></category>
		<category><![CDATA[React Native JDK 17 fix]]></category>
		<category><![CDATA[React Native NDK 26 error]]></category>
		<category><![CDATA[React Native NDK 27.1 setup]]></category>
		<category><![CDATA[React Native no Android device connected]]></category>
		<category><![CDATA[React Native safe-area-context C++ error]]></category>
		<category><![CDATA[std::format no member named format]]></category>
		<guid isPermaLink="false">https://www.aiuniverse.xyz/?p=22342</guid>

					<description><![CDATA[<p>If you are working with React Native (especially 0.84+) and suddenly your Android app: Then this complete guide will help you fix everything step by step. This <a class="read-more-link" href="https://www.aiuniverse.xyz/how-to-fix-react-native-android-build-errors-jdk-25-ndk-26-cmake-emulator-issues/">Read More</a></p>
<p>The post <a href="https://www.aiuniverse.xyz/how-to-fix-react-native-android-build-errors-jdk-25-ndk-26-cmake-emulator-issues/">How to Fix React Native Android Build Errors (JDK 25, NDK 26, CMake &amp; Emulator Issues)</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>If you are working with React Native (especially 0.84+) and suddenly your Android app:</p>



<ul class="wp-block-list">
<li>Opens the emulator but does not launch the app</li>



<li>Fails with <code>configureCMakeDebug</code> error</li>



<li>Shows <code>std::format</code> not found error</li>



<li>Or says “No Android device connected”</li>
</ul>



<p>Then this complete guide will help you fix everything step by step.</p>



<p>This guide is based on a real-world troubleshooting session on Windows with React Native 0.84.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Problem 1: Gradle Using Wrong Java Version (JDK 25 Instead of JDK 17)</h1>



<h3 class="wp-block-heading">Symptoms</h3>



<p>Running:</p>



<pre class="wp-block-code"><code>gradlew.bat -version</code></pre>



<p>Showed:</p>



<pre class="wp-block-code"><code>Launcher JVM: 25.0.2
Daemon JVM: jdk-25</code></pre>



<p>Even though <code>java -version</code> showed JDK 17.</p>



<p>This caused:</p>



<pre class="wp-block-code"><code>Execution failed for task ':app:configureCMakeDebug&#91;arm64-v8a]'
WARNING: A restricted method in java.lang.System has been called</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Why This Happens</h2>



<p>Gradle was using JDK 25 internally, but React Native Android builds are stable with <strong>JDK 17</strong>.</p>



<p>Gradle launcher and daemon must both use Java 17.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Solution: Force Gradle to Use JDK 17</h2>



<h3 class="wp-block-heading">Step 1: Locate Your JDK 17 Folder</h3>



<p>Example:</p>



<pre class="wp-block-code"><code>C:\Program Files\Microsoft\jdk-17.0.18.8-hotspot</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 2: Add This to android/gradle.properties</h3>



<p>Open:</p>



<pre class="wp-block-code"><code>android/gradle.properties</code></pre>



<p>Add:</p>



<pre class="wp-block-code"><code>org.gradle.java.home=C:\\Program Files\\Microsoft\\jdk-17.0.18.8-hotspot</code></pre>



<p>Use double backslashes.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 3: Stop Gradle and Clean</h3>



<pre class="wp-block-code"><code>cd android
gradlew.bat --stop
rmdir /s /q .gradle
rmdir /s /q .cxx
rmdir /s /q app\.cxx
gradlew.bat clean</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 4: Verify</h3>



<pre class="wp-block-code"><code>gradlew.bat -version</code></pre>



<p>Now both should show:</p>



<pre class="wp-block-code"><code>Launcher JVM: 17.x
Daemon JVM: 17.x</code></pre>



<p>If not, temporarily force in CMD:</p>



<pre class="wp-block-code"><code>set "JAVA_HOME=C:\Program Files\Microsoft\jdk-17.0.18.8-hotspot"
set "PATH=%JAVA_HOME%\bin;%PATH%"</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Problem 2: CMake Error – std::format Not Found (NDK Issue)</h1>



<p>After fixing Java, build failed with:</p>



<pre class="wp-block-code"><code>error: no member named 'format' in namespace 'std'
return std::format("{}%", dimension.value);</code></pre>



<p>This came from:</p>



<pre class="wp-block-code"><code>react-native-safe-area-context</code></pre>



<p>And NDK path showed:</p>



<pre class="wp-block-code"><code>ndk\26.1.10909125</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Why This Happens</h2>



<p>React Native 0.84 uses C++20 features like <code>std::format</code>.</p>



<p>NDK 26 does not properly support this setup.</p>



<p>You must use <strong>NDK 27.1+</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Solution: Install and Force NDK 27.1</h2>



<h3 class="wp-block-heading">Step 1: Install NDK 27.1</h3>



<p>In Android Studio:</p>



<ul class="wp-block-list">
<li>Settings</li>



<li>Android SDK</li>



<li>SDK Tools</li>



<li>Enable “NDK (Side by side)”</li>



<li>Select <strong>27.1.12297006</strong></li>



<li>Apply</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 2: Force Project to Use NDK 27.1</h3>



<p>Open:</p>



<pre class="wp-block-code"><code>android/build.gradle</code></pre>



<p>Inside <code>android {}</code> add:</p>



<pre class="wp-block-code"><code>ndkVersion "27.1.12297006"</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 3: Clean Native Build</h3>



<pre class="wp-block-code"><code>cd android
gradlew.bat --stop
rmdir /s /q .cxx
rmdir /s /q app\.cxx
rmdir /s /q .gradle
gradlew.bat clean</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 4: Run Again</h3>



<pre class="wp-block-code"><code>cd ..
npx react-native run-android</code></pre>



<p>Now build succeeds.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Problem 3: Emulator Opens but CLI Says “No Android Device Connected”</h1>



<p>Even though:</p>



<pre class="wp-block-code"><code>adb devices</code></pre>



<p>Showed:</p>



<pre class="wp-block-code"><code>emulator-5554 device</code></pre>



<p>Sometimes it showed blank.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Why This Happens</h2>



<ul class="wp-block-list">
<li>ADB server mismatch</li>



<li>Multiple adb.exe in PATH</li>



<li>Emulator not cold booted</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Fix Emulator Detection</h2>



<h3 class="wp-block-heading">Step 1: Restart Emulator</h3>



<p>Cold boot from Android Studio Device Manager.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 2: Reset ADB</h3>



<pre class="wp-block-code"><code>adb kill-server
taskkill /F /IM adb.exe
adb start-server
adb devices</code></pre>



<p>Now emulator should show:</p>



<pre class="wp-block-code"><code>emulator-5554 device</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 3: Run with Correct Flag</h3>



<p>New React Native versions use:</p>



<pre class="wp-block-code"><code>npx react-native run-android --device emulator-5554</code></pre>



<p>(Not <code>--deviceId</code>)</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 4: Ensure Correct ADB in PATH</h3>



<pre class="wp-block-code"><code>where adb</code></pre>



<p>Make sure this path is first:</p>



<pre class="wp-block-code"><code>C:\Users\YourUser\AppData\Local\Android\Sdk\platform-tools\adb.exe</code></pre>



<p>If not:</p>



<pre class="wp-block-code"><code>set "ANDROID_SDK_ROOT=%LOCALAPPDATA%\Android\Sdk"
set "PATH=%ANDROID_SDK_ROOT%\platform-tools;%PATH%"</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Final Working Configuration Summary</h1>



<p>For React Native 0.84 (Windows):</p>



<ul class="wp-block-list">
<li>Java: <strong>JDK 17</strong></li>



<li>Gradle JVM: <strong>17</strong></li>



<li>NDK: <strong>27.1.12297006</strong></li>



<li>CMake: Installed via SDK Tools</li>



<li>Use: <code>--device</code> instead of <code>--deviceId</code></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Final Command That Worked</h1>



<pre class="wp-block-code"><code>npx react-native run-android --device emulator-5554</code></pre>



<p>Everything built smoothly.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Key Lessons Learned</h1>



<ol class="wp-block-list">
<li>Gradle launcher and daemon must both use Java 17.</li>



<li>NDK 26 is not compatible with React Native 0.84 C++20 requirements.</li>



<li>Always force ndkVersion in build.gradle.</li>



<li>Always clean <code>.cxx</code> when changing NDK.</li>



<li>If emulator shows but CLI doesn’t detect, reset ADB.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>
<p>The post <a href="https://www.aiuniverse.xyz/how-to-fix-react-native-android-build-errors-jdk-25-ndk-26-cmake-emulator-issues/">How to Fix React Native Android Build Errors (JDK 25, NDK 26, CMake &amp; Emulator Issues)</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aiuniverse.xyz/how-to-fix-react-native-android-build-errors-jdk-25-ndk-26-cmake-emulator-issues/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Install WordPress Inside a blog Folder on Linux (XAMPP Public Directory)</title>
		<link>https://www.aiuniverse.xyz/how-to-install-wordpress-inside-a-blog-folder-on-linux-xampp-public-directory/</link>
					<comments>https://www.aiuniverse.xyz/how-to-install-wordpress-inside-a-blog-folder-on-linux-xampp-public-directory/#respond</comments>
		
		<dc:creator><![CDATA[Maruti Kr.]]></dc:creator>
		<pubDate>Sat, 14 Feb 2026 07:36:25 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[install wordpress in subdirectory]]></category>
		<category><![CDATA[install wordpress in xampp linux]]></category>
		<category><![CDATA[install wordpress manually linux server]]></category>
		<category><![CDATA[install wordpress on local linux server]]></category>
		<category><![CDATA[linux server wordpress configuration]]></category>
		<category><![CDATA[linux wordpress install]]></category>
		<category><![CDATA[wordpress blog folder setup]]></category>
		<category><![CDATA[wordpress blog setup tutorial]]></category>
		<category><![CDATA[wordpress blog url setup]]></category>
		<category><![CDATA[wordpress database setup linux]]></category>
		<category><![CDATA[wordpress install in project public folder]]></category>
		<category><![CDATA[wordpress install on linux]]></category>
		<category><![CDATA[wordpress install using terminal]]></category>
		<category><![CDATA[wordpress installation guide linux]]></category>
		<category><![CDATA[wordpress manual installation steps]]></category>
		<category><![CDATA[wordpress setup apache linux]]></category>
		<category><![CDATA[wordpress setup for laravel public folder]]></category>
		<category><![CDATA[wordpress setup in public folder]]></category>
		<category><![CDATA[wordpress subfolder installation guide]]></category>
		<category><![CDATA[xampp wordpress installation steps]]></category>
		<guid isPermaLink="false">https://www.aiuniverse.xyz/?p=21809</guid>

					<description><![CDATA[<p>If you are running a Linux server with XAMPP and want to install WordPress inside a blog folder within your project’s public directory, this step-by-step guide will <a class="read-more-link" href="https://www.aiuniverse.xyz/how-to-install-wordpress-inside-a-blog-folder-on-linux-xampp-public-directory/">Read More</a></p>
<p>The post <a href="https://www.aiuniverse.xyz/how-to-install-wordpress-inside-a-blog-folder-on-linux-xampp-public-directory/">How to Install WordPress Inside a blog Folder on Linux (XAMPP Public Directory)</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>If you are running a Linux server with XAMPP and want to install WordPress inside a <strong><code>blog</code></strong> folder within your project’s public directory, this step-by-step guide will help you set it up properly.<br>In this example, WordPress will be installed at:</p>



<pre class="wp-block-code"><code>/opt/lampp/htdocs/hyderabadorbit.com/public/blog</code></pre>



<p>After installation, your blog will be accessible at:</p>



<pre class="wp-block-code"><code>https:&#47;&#47;yourdomain.com/blog</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 1 — Navigate to the Public Directory</h2>



<p>Open your terminal and move to your project’s public folder:</p>



<pre class="wp-block-code"><code>cd /opt/lampp/htdocs/hyderabadorbit.com/public</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 2 — Download the Latest WordPress Package</h2>



<p>Download the latest WordPress version directly from the official source:</p>



<pre class="wp-block-code"><code>wget https://wordpress.org/latest.zip</code></pre>



<p>Extract the downloaded file:</p>



<pre class="wp-block-code"><code>unzip latest.zip</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 3 — Rename the WordPress Folder to blog</h2>



<p>Rename the extracted folder so that WordPress runs under the <code>/blog</code> URL:</p>



<pre class="wp-block-code"><code>mv wordpress blog</code></pre>



<p>Now your WordPress files will be located at:</p>



<pre class="wp-block-code"><code>public/blog</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 4 — Set Proper Permissions</h2>



<p>Since you are using XAMPP, set ownership and permissions for the web server:</p>



<pre class="wp-block-code"><code>sudo chown -R daemon:daemon blog
sudo chmod -R 755 blog</code></pre>



<p>This ensures Apache can access and manage the files correctly.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 5 — Create a Database for WordPress</h2>



<p>Open MySQL using XAMPP:</p>



<pre class="wp-block-code"><code>/opt/lampp/bin/mysql -u root -p</code></pre>



<p>Create a new database and user:</p>



<pre class="wp-block-code"><code>CREATE DATABASE blog_db;
CREATE USER 'blog_user'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON blog_db.* TO 'blog_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 6 — Restart XAMPP Services</h2>



<p>Restart XAMPP to apply changes:</p>



<pre class="wp-block-code"><code>sudo /opt/lampp/lampp restart</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 7 — Complete WordPress Installation via Browser</h2>



<p>Open your browser and go to:</p>



<pre class="wp-block-code"><code>https:&#47;&#47;yourdomain.com/blog</code></pre>



<p>Enter the following database details:</p>



<ul class="wp-block-list">
<li>Database Name: <code>blog_db</code></li>



<li>Username: <code>blog_user</code></li>



<li>Password: <code>StrongPassword</code></li>



<li>Database Host: <code>localhost</code></li>
</ul>



<p>Click <strong>Install WordPress</strong>, and follow the on-screen instructions.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>
<p>The post <a href="https://www.aiuniverse.xyz/how-to-install-wordpress-inside-a-blog-folder-on-linux-xampp-public-directory/">How to Install WordPress Inside a blog Folder on Linux (XAMPP Public Directory)</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aiuniverse.xyz/how-to-install-wordpress-inside-a-blog-folder-on-linux-xampp-public-directory/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Deploy a Laravel Project on a Linux Server Using HTDOCS and GitHub – Complete Step-by-Step Guide</title>
		<link>https://www.aiuniverse.xyz/how-to-deploy-a-laravel-project-on-a-linux-server-using-htdocs-and-github-complete-step-by-step-guide/</link>
					<comments>https://www.aiuniverse.xyz/how-to-deploy-a-laravel-project-on-a-linux-server-using-htdocs-and-github-complete-step-by-step-guide/#respond</comments>
		
		<dc:creator><![CDATA[Maruti Kr.]]></dc:creator>
		<pubDate>Mon, 09 Feb 2026 10:03:25 +0000</pubDate>
				<category><![CDATA[laravel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[deploy Laravel using htdocs]]></category>
		<category><![CDATA[GitHub clone Laravel project server]]></category>
		<category><![CDATA[how to deploy Laravel step by step]]></category>
		<category><![CDATA[install Laravel on Linux server]]></category>
		<category><![CDATA[Laravel Apache configuration]]></category>
		<category><![CDATA[Laravel application live setup]]></category>
		<category><![CDATA[Laravel composer install production]]></category>
		<category><![CDATA[Laravel deployment on Linux server]]></category>
		<category><![CDATA[Laravel deployment with GitHub]]></category>
		<category><![CDATA[Laravel environment setup production]]></category>
		<category><![CDATA[Laravel Linux hosting tutorial]]></category>
		<category><![CDATA[Laravel migration production server]]></category>
		<category><![CDATA[Laravel project hosting guide]]></category>
		<category><![CDATA[Laravel project live on server]]></category>
		<category><![CDATA[Laravel project production setup]]></category>
		<category><![CDATA[Laravel public folder setup]]></category>
		<category><![CDATA[Laravel server configuration tutorial]]></category>
		<category><![CDATA[Laravel virtual host setup]]></category>
		<category><![CDATA[Laravel XAMPP deployment Linux]]></category>
		<guid isPermaLink="false">https://www.aiuniverse.xyz/?p=21790</guid>

					<description><![CDATA[<p>Deploying a Laravel project on a Linux server becomes simple when you follow a structured process. In this guide, we will deploy a Laravel project by cloning <a class="read-more-link" href="https://www.aiuniverse.xyz/how-to-deploy-a-laravel-project-on-a-linux-server-using-htdocs-and-github-complete-step-by-step-guide/">Read More</a></p>
<p>The post <a href="https://www.aiuniverse.xyz/how-to-deploy-a-laravel-project-on-a-linux-server-using-htdocs-and-github-complete-step-by-step-guide/">How to Deploy a Laravel Project on a Linux Server Using HTDOCS and GitHub – Complete Step-by-Step Guide</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Deploying a Laravel project on a Linux server becomes simple when you follow a structured process. In this guide, we will deploy a Laravel project by <strong>cloning it from GitHub</strong> and placing it inside the <strong>htdocs directory</strong>, which is commonly used in XAMPP or LAMP-based server setups.</p>



<p>This tutorial is ideal for developers who prefer using the <strong>htdocs folder structure</strong> instead of the traditional <code>/var/www</code> directory.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Prerequisites</h2>



<p>Before starting, ensure you have:</p>



<ul class="wp-block-list">
<li>A Linux server with SSH access</li>



<li>GitHub repository of your Laravel project</li>



<li>Apache/XAMPP or LAMP stack installed</li>



<li>PHP and Composer installed</li>



<li>Database access (MySQL/MariaDB)</li>



<li>Basic Linux command knowledge</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 1: Connect to Your Linux Server</h2>



<p>Login via SSH from your local machine:</p>



<pre class="wp-block-code"><code>ssh username@server_ip</code></pre>



<p>Example:</p>



<pre class="wp-block-code"><code>ssh myeventadmin@your_server_ip</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 2: Update Your Server</h2>



<p>Always update packages before setup:</p>



<pre class="wp-block-code"><code>sudo apt update &amp;&amp; sudo apt upgrade -y</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 3: Install Required Packages</h2>



<p>Install Apache, PHP, Git, Composer dependencies, and tools:</p>



<pre class="wp-block-code"><code>sudo apt install apache2 mysql-server unzip git curl -y</code></pre>



<p>Install PHP extensions required by Laravel:</p>



<pre class="wp-block-code"><code>sudo apt install php php-cli php-mysql php-zip php-gd php-mbstring php-curl php-xml libapache2-mod-php -y</code></pre>



<p>Check PHP version:</p>



<pre class="wp-block-code"><code>php -v</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 4: Install Composer</h2>



<pre class="wp-block-code"><code>cd ~
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer</code></pre>



<p>Verify installation:</p>



<pre class="wp-block-code"><code>composer -V</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 5: Move to HTDOCS Directory</h2>



<p>Depending on your server setup, the htdocs directory may be located at:</p>



<pre class="wp-block-code"><code>/opt/lampp/htdocs</code></pre>



<p>or</p>



<pre class="wp-block-code"><code>/var/www/html</code></pre>



<p>Navigate to htdocs:</p>



<pre class="wp-block-code"><code>cd /opt/lampp/htdocs</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 6: Clone Laravel Project from GitHub</h2>



<pre class="wp-block-code"><code>sudo git clone https://github.com/username/project.git</code></pre>



<p>Move into project folder:</p>



<pre class="wp-block-code"><code>cd project</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 7: Set Folder Permissions</h2>



<pre class="wp-block-code"><code>sudo chown -R daemon:daemon /opt/lampp/htdocs/project
sudo chmod -R 775 storage
sudo chmod -R 775 bootstrap/cache</code></pre>



<p><em>(If using Apache instead of XAMPP, replace daemon with www-data)</em></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 8: Configure Environment File</h2>



<p>Create the environment file:</p>



<pre class="wp-block-code"><code>cp .env.example .env
nano .env</code></pre>



<p>Update important settings:</p>



<pre class="wp-block-code"><code>APP_NAME=Laravel
APP_ENV=production
APP_DEBUG=false
APP_URL=http://yourdomain.com</code></pre>



<p>Add your database credentials as well.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 9: Install Laravel Dependencies</h2>



<pre class="wp-block-code"><code>composer install</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 10: Generate Application Key</h2>



<pre class="wp-block-code"><code>php artisan key:generate</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 11: Create Database and Run Migration</h2>



<p>Login to MySQL:</p>



<pre class="wp-block-code"><code>sudo mysql</code></pre>



<p>Create database:</p>



<pre class="wp-block-code"><code>CREATE DATABASE laravel_db;
EXIT;</code></pre>



<p>Run migrations:</p>



<pre class="wp-block-code"><code>php artisan migrate</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 12: Configure Apache to Use Public Folder</h2>



<p>Edit Apache configuration:</p>



<pre class="wp-block-code"><code>sudo nano /opt/lampp/etc/extra/httpd-vhosts.conf</code></pre>



<p>Add:</p>



<pre class="wp-block-code"><code>&lt;VirtualHost *:80&gt;
    ServerName yourdomain.com
    DocumentRoot "/opt/lampp/htdocs/project/public"

    &lt;Directory "/opt/lampp/htdocs/project"&gt;
        AllowOverride All
        Require all granted
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
</code></pre>



<p>Restart Apache/XAMPP:</p>



<pre class="wp-block-code"><code>sudo /opt/lampp/lampp restart</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 13: Test Laravel Application</h2>



<p>Open browser:</p>



<pre class="wp-block-code"><code>http:&#47;&#47;your_server_ip/project/public</code></pre>



<p>or</p>



<pre class="wp-block-code"><code>http:&#47;&#47;yourdomain.com</code></pre>



<p>If everything is configured properly, your Laravel website will be live.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Important Production Tips</h2>



<ul class="wp-block-list">
<li>Always set <code>APP_DEBUG=false</code></li>



<li>Never make <code>.env</code> publicly accessible</li>



<li>Ensure correct folder permissions</li>



<li>Use SSL (HTTPS) for live websites</li>



<li>Regularly pull updates from GitHub</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Deploying a Laravel project using the <strong>htdocs directory</strong> and <strong>GitHub cloning</strong> is a practical and efficient workflow for Linux servers running XAMPP or Apache environments. By following this step-by-step process — cloning the repository, configuring environment variables, setting permissions, and configuring Apache — you can successfully deploy your Laravel application in a production-ready environment.</p>



<p>This method is especially useful for developers who prefer traditional htdocs-based hosting environments while maintaining version control through GitHub.</p>
<p>The post <a href="https://www.aiuniverse.xyz/how-to-deploy-a-laravel-project-on-a-linux-server-using-htdocs-and-github-complete-step-by-step-guide/">How to Deploy a Laravel Project on a Linux Server Using HTDOCS and GitHub – Complete Step-by-Step Guide</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aiuniverse.xyz/how-to-deploy-a-laravel-project-on-a-linux-server-using-htdocs-and-github-complete-step-by-step-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Install and Enable GMP Extension in XAMPP PHP on Linux (Step-by-Step Guide)</title>
		<link>https://www.aiuniverse.xyz/how-to-install-and-enable-gmp-extension-in-xampp-php-on-linux-step-by-step-guide/</link>
					<comments>https://www.aiuniverse.xyz/how-to-install-and-enable-gmp-extension-in-xampp-php-on-linux-step-by-step-guide/#respond</comments>
		
		<dc:creator><![CDATA[Maruti Kr.]]></dc:creator>
		<pubDate>Mon, 09 Feb 2026 08:20:07 +0000</pubDate>
				<category><![CDATA[laravel]]></category>
		<category><![CDATA[XAMPP]]></category>
		<category><![CDATA[compile gmp php]]></category>
		<category><![CDATA[enable gmp in xampp]]></category>
		<category><![CDATA[gmp php linux]]></category>
		<category><![CDATA[gmp_init not found]]></category>
		<category><![CDATA[install gmp extension php]]></category>
		<category><![CDATA[php gmp extension missing]]></category>
		<category><![CDATA[php gmp.so install]]></category>
		<category><![CDATA[xampp php 8 gmp]]></category>
		<category><![CDATA[xampp php gmp install]]></category>
		<guid isPermaLink="false">https://www.aiuniverse.xyz/?p=21785</guid>

					<description><![CDATA[<p>Introduction If you are using XAMPP PHP on a Linux server and encounter errors like: then this usually means the GMP extension is not installed, not just <a class="read-more-link" href="https://www.aiuniverse.xyz/how-to-install-and-enable-gmp-extension-in-xampp-php-on-linux-step-by-step-guide/">Read More</a></p>
<p>The post <a href="https://www.aiuniverse.xyz/how-to-install-and-enable-gmp-extension-in-xampp-php-on-linux-step-by-step-guide/">How to Install and Enable GMP Extension in XAMPP PHP on Linux (Step-by-Step Guide)</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Introduction</h2>



<p>If you are using <strong>XAMPP PHP on a Linux server</strong> and encounter errors like:</p>



<ul class="wp-block-list">
<li><code>GMP NOT OK</code></li>



<li><code>Unable to load dynamic library 'gmp'</code></li>



<li><code>Call to undefined function gmp_init()</code></li>
</ul>



<p>then this usually means the <strong>GMP extension is not installed</strong>, not just disabled.</p>



<p>Many developers assume that uncommenting a line in <code>php.ini</code> is enough—but in <strong>XAMPP</strong>, that is often not true.</p>



<p>This guide explains <strong>why GMP is missing</strong>, and shows the <strong>correct, production-safe way</strong> to compile, install, and enable the GMP extension for <strong>XAMPP PHP</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">What Is the GMP Extension in PHP?</h2>



<p><strong>GMP (GNU Multiple Precision)</strong> is a PHP extension used for handling very large integers and high-precision arithmetic.</p>



<p>Common use cases include:</p>



<ul class="wp-block-list">
<li>Cryptography and security libraries</li>



<li>JWT / OAuth / authentication systems</li>



<li>Blockchain and hashing operations</li>



<li>Keycloak integrations</li>



<li>Large integer calculations</li>
</ul>



<p>Example:</p>



<pre class="wp-block-code"><code>gmp_init("12345678901234567890");</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">The Real Problem (Why GMP Doesn’t Work in XAMPP)</h2>



<p>When you run:</p>



<pre class="wp-block-code"><code>php -m | grep gmp</code></pre>



<p>and get <strong>no output</strong>, or:</p>



<pre class="wp-block-code"><code>GMP NOT OK</code></pre>



<p>Even after adding this to <code>php.ini</code>:</p>



<pre class="wp-block-code"><code>extension=gmp</code></pre>



<h3 class="wp-block-heading">❌ Why this happens</h3>



<p>XAMPP PHP is a <strong>precompiled binary</strong> and often <strong>does not include <code>gmp.so</code> at all</strong>.</p>



<p>So:</p>



<ul class="wp-block-list">
<li><code>php.ini</code> only <em>loads</em> extensions</li>



<li>It does <strong>not create them</strong></li>



<li>If <code>gmp.so</code> does not exist, PHP cannot load it</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Environment Used in This Guide</h2>



<ul class="wp-block-list">
<li>OS: Linux (Ubuntu based)</li>



<li>PHP: <strong>XAMPP PHP 8.2.12</strong></li>



<li>PHP binary:</li>
</ul>



<pre class="wp-block-code"><code>/opt/lampp/bin/php</code></pre>



<ul class="wp-block-list">
<li>php.ini location:</li>
</ul>



<pre class="wp-block-code"><code>/opt/lampp/etc/php.ini</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 1: Confirm You Are Using XAMPP PHP</h2>



<pre class="wp-block-code"><code>which php
php -v</code></pre>



<p>Expected output:</p>



<pre class="wp-block-code"><code>/opt/lampp/bin/php
PHP 8.2.12</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 2: Check Whether GMP Is Loaded</h2>



<pre class="wp-block-code"><code>/opt/lampp/bin/php -m | grep -i gmp</code></pre>



<p>If nothing appears, GMP is not installed.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 3: Check the PHP Extension Directory</h2>



<pre class="wp-block-code"><code>/opt/lampp/bin/php -i | grep extension_dir</code></pre>



<p>Example output:</p>



<pre class="wp-block-code"><code>/opt/lampp/lib/php/extensions/no-debug-non-zts-20220829</code></pre>



<p>Check if <code>gmp.so</code> exists:</p>



<pre class="wp-block-code"><code>ls -l /opt/lampp/lib/php/extensions/no-debug-non-zts-20220829 | grep gmp</code></pre>



<p>If nothing is returned, GMP is missing.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 4: Install Required Build Dependencies</h2>



<pre class="wp-block-code"><code>sudo apt update
sudo apt install -y build-essential autoconf automake libtool \
pkg-config libgmp-dev re2c bison wget</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 5: Download PHP Source (Same Version as XAMPP)</h2>



<p>⚠️ <strong>The PHP source version must exactly match your XAMPP PHP version</strong>.</p>



<pre class="wp-block-code"><code>cd /tmp
wget https://www.php.net/distributions/php-8.2.12.tar.gz
tar -xzf php-8.2.12.tar.gz</code></pre>



<p>Verify GMP source exists:</p>



<pre class="wp-block-code"><code>ls /tmp/php-8.2.12/ext/gmp</code></pre>



<p>You should see files like <code>gmp.c</code>, <code>config.m4</code>, etc.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 6: Compile GMP Extension for XAMPP PHP</h2>



<pre class="wp-block-code"><code>cd /tmp/php-8.2.12/ext/gmp

/opt/lampp/bin/phpize
./configure --with-php-config=/opt/lampp/bin/php-config
make -j$(nproc)
sudo make install</code></pre>



<p>This step <strong>creates the <code>gmp.so</code> file</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 7: Verify <code>gmp.so</code> Was Installed</h2>



<pre class="wp-block-code"><code>EXT_DIR=$(/opt/lampp/bin/php -r 'echo ini_get("extension_dir");')
ls -l "$EXT_DIR" | grep gmp</code></pre>



<p>Expected output:</p>



<pre class="wp-block-code"><code>gmp.so</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 8: Enable GMP in php.ini (Linux)</h2>



<p>Open the file:</p>



<pre class="wp-block-code"><code>sudo vi /opt/lampp/etc/php.ini</code></pre>



<h3 class="wp-block-heading">Important Notes</h3>



<ul class="wp-block-list">
<li>Ignore lines like:</li>
</ul>



<pre class="wp-block-code"><code>;extension=php_gmp.dll</code></pre>



<p>These are <strong>Windows-only</strong>.</p>



<ul class="wp-block-list">
<li>Do <strong>not</strong> uncomment <code>.dll</code> lines on Linux.</li>
</ul>



<h3 class="wp-block-heading">Add this line:</h3>



<pre class="wp-block-code"><code>extension=gmp.so</code></pre>



<p>Save and exit:</p>



<pre class="wp-block-code"><code>Esc
:wq</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 9: Restart XAMPP</h2>



<pre class="wp-block-code"><code>sudo /opt/lampp/lampp restart</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 10: Final Verification</h2>



<pre class="wp-block-code"><code>/opt/lampp/bin/php -m | grep -i gmp</code></pre>



<p>Expected output:</p>



<pre class="wp-block-code"><code>gmp</code></pre>



<p>Final confirmation:</p>



<pre class="wp-block-code"><code>/opt/lampp/bin/php -r 'echo function_exists("gmp_init") ? "GMP OK\n" : "GMP NOT OK\n";'</code></pre>



<p>Expected:</p>



<pre class="wp-block-code"><code>GMP OK</code></pre>



<p>🎉 <strong>GMP is now fully installed and enabled in XAMPP PHP</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Common Mistakes to Avoid</h2>



<ul class="wp-block-list">
<li>Only uncommenting <code>extension=gmp</code></li>



<li>Using <code>.dll</code> extensions on Linux</li>



<li>Installing <code>php-gmp</code> via <code>apt</code> for XAMPP</li>



<li>PHP version mismatch during compilation</li>



<li>Forgetting to restart XAMPP</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Enabling GMP in <strong>XAMPP PHP on Linux</strong> requires more than editing <code>php.ini</code>.<br>When the extension is missing, <strong>compiling it for your exact PHP version is the correct and safe solution</strong>.</p>



<p>This method:</p>



<ul class="wp-block-list">
<li>Does <strong>not</strong> reinstall PHP</li>



<li>Does <strong>not</strong> reinstall XAMPP</li>



<li>Works reliably in production environments</li>
</ul>
<p>The post <a href="https://www.aiuniverse.xyz/how-to-install-and-enable-gmp-extension-in-xampp-php-on-linux-step-by-step-guide/">How to Install and Enable GMP Extension in XAMPP PHP on Linux (Step-by-Step Guide)</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aiuniverse.xyz/how-to-install-and-enable-gmp-extension-in-xampp-php-on-linux-step-by-step-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Change Admin Password in a Laravel Project</title>
		<link>https://www.aiuniverse.xyz/how-to-change-admin-password-in-a-laravel-project/</link>
					<comments>https://www.aiuniverse.xyz/how-to-change-admin-password-in-a-laravel-project/#respond</comments>
		
		<dc:creator><![CDATA[Maruti Kr.]]></dc:creator>
		<pubDate>Fri, 06 Feb 2026 03:45:32 +0000</pubDate>
				<category><![CDATA[laravel]]></category>
		<category><![CDATA[change admin password in laravel]]></category>
		<category><![CDATA[how to change admin password in laravel]]></category>
		<category><![CDATA[laravel admin login password change]]></category>
		<category><![CDATA[laravel admin password change]]></category>
		<category><![CDATA[laravel admin password change xampp]]></category>
		<category><![CDATA[laravel admin password reset]]></category>
		<category><![CDATA[laravel bcrypt password change]]></category>
		<category><![CDATA[laravel change password from database]]></category>
		<category><![CDATA[laravel change password using phpmyadmin]]></category>
		<category><![CDATA[laravel forgot admin password]]></category>
		<category><![CDATA[laravel password change cpanel]]></category>
		<category><![CDATA[laravel password hashing bcrypt]]></category>
		<category><![CDATA[laravel reset admin password without login]]></category>
		<category><![CDATA[laravel tinker change password]]></category>
		<guid isPermaLink="false">https://www.aiuniverse.xyz/?p=21774</guid>

					<description><![CDATA[<p>Laravel is a secure and powerful PHP framework, but many developers face confusion when they need to change the admin password, especially if the password is forgotten <a class="read-more-link" href="https://www.aiuniverse.xyz/how-to-change-admin-password-in-a-laravel-project/">Read More</a></p>
<p>The post <a href="https://www.aiuniverse.xyz/how-to-change-admin-password-in-a-laravel-project/">How to Change Admin Password in a Laravel Project</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="683" src="https://www.aiuniverse.xyz/wp-content/uploads/2026/02/ChatGPT-Image-Feb-6-2026-09_14_52-AM-1024x683.png" alt="" class="wp-image-21775" srcset="https://www.aiuniverse.xyz/wp-content/uploads/2026/02/ChatGPT-Image-Feb-6-2026-09_14_52-AM-1024x683.png 1024w, https://www.aiuniverse.xyz/wp-content/uploads/2026/02/ChatGPT-Image-Feb-6-2026-09_14_52-AM-300x200.png 300w, https://www.aiuniverse.xyz/wp-content/uploads/2026/02/ChatGPT-Image-Feb-6-2026-09_14_52-AM-768x512.png 768w, https://www.aiuniverse.xyz/wp-content/uploads/2026/02/ChatGPT-Image-Feb-6-2026-09_14_52-AM.png 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Laravel is a secure and powerful PHP framework, but many developers face confusion when they need to <strong>change the admin password</strong>, especially if the password is forgotten or the admin cannot log in.</p>



<p>In this blog post, you will learn <strong>multiple safe and practical ways to change the admin password in a Laravel project</strong>, applicable to both <strong>XAMPP (local server)</strong> and <strong>cPanel (live server)</strong> environments.</p>



<h2 class="wp-block-heading">Where Is the Admin Password Stored in Laravel?</h2>



<p>Laravel never stores passwords in plain text.<br>By default:</p>



<ul class="wp-block-list">
<li>Passwords are stored as <strong>bcrypt hashes</strong></li>



<li>Common tables used for admin accounts:
<ul class="wp-block-list">
<li><code>users</code></li>



<li><code>admins</code></li>



<li><code>admin_users</code></li>
</ul>
</li>
</ul>



<p>In many projects, the admin user exists in the <code>users</code> table with a column like:</p>



<ul class="wp-block-list">
<li><code>role = admin</code></li>



<li><code>is_admin = 1</code></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Method 1: Change Admin Password Using phpMyAdmin (Recommended)</h2>



<p>This is the <strong>most reliable and commonly used method</strong>, especially when:</p>



<ul class="wp-block-list">
<li>You forgot the admin password</li>



<li>Admin login is not working</li>



<li>You are working on a live server (cPanel)</li>
</ul>



<h3 class="wp-block-heading">Step 1: Open phpMyAdmin</h3>



<ul class="wp-block-list">
<li><strong>XAMPP</strong>: <code>http://localhost/phpmyadmin</code></li>



<li><strong>cPanel</strong>: Login to cPanel → Open phpMyAdmin</li>
</ul>



<h3 class="wp-block-heading">Step 2: Select Laravel Database</h3>



<ul class="wp-block-list">
<li>Choose your Laravel project database</li>



<li>Open the <code>users</code> or <code>admins</code> table</li>
</ul>



<h3 class="wp-block-heading">Step 3: Locate the Admin Account</h3>



<ul class="wp-block-list">
<li>Find the admin record using <strong>email</strong>, <strong>username</strong>, or <strong>role</strong></li>
</ul>



<h3 class="wp-block-heading">Step 4: Generate a New Password Hash</h3>



<p>Open terminal or command prompt in your Laravel project directory:</p>



<pre class="wp-block-code"><code>php artisan tinker
</code></pre>



<p>Then run:</p>



<pre class="wp-block-code"><code>bcrypt('NewPassword@123')
</code></pre>



<p>This will generate an encrypted string starting with <code>$2y$...</code>.<br>Copy this hashed value.</p>



<h3 class="wp-block-heading">Step 5: Update Password in Database</h3>



<ul class="wp-block-list">
<li>Click <strong>Edit</strong> on the admin record</li>



<li>Paste the hashed value into the <code>password</code> column</li>



<li>Save changes</li>
</ul>



<p>✅ The new admin password is now: <strong>NewPassword@123</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Method 2: Change Admin Password Using Laravel Tinker</h2>



<p>This method is useful when:</p>



<ul class="wp-block-list">
<li>You have project access</li>



<li>You prefer not to manually edit the database</li>
</ul>



<h3 class="wp-block-heading">Open Tinker</h3>



<pre class="wp-block-code"><code>php artisan tinker
</code></pre>



<h3 class="wp-block-heading">If Admin Is in the <code>users</code> Table</h3>



<pre class="wp-block-code"><code>use App\Models\User;

$user = User::where('email', 'admin@example.com')-&gt;first();
$user-&gt;password = bcrypt('NewPassword@123');
$user-&gt;save();
</code></pre>



<h3 class="wp-block-heading">If Admin Uses a Separate Model</h3>



<pre class="wp-block-code"><code>use App\Models\Admin;

$admin = Admin::where('email', 'admin@example.com')-&gt;first();
$admin-&gt;password = bcrypt('NewPassword@123');
$admin-&gt;save();
</code></pre>



<p>✅ Password updated successfully.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Method 3: Reset Admin Password Using a Temporary Route</h2>



<p>This method should be used <strong>only in emergencies</strong>.</p>



<h3 class="wp-block-heading">Step 1: Add Temporary Route</h3>



<p>Edit <code>routes/web.php</code>:</p>



<pre class="wp-block-code"><code>use App\Models\User;
use Illuminate\Support\Facades\Hash;

Route::get('/reset-admin-password', function () {
    $user = User::where('email', 'admin@example.com')-&gt;first();
    $user-&gt;password = Hash::make('NewPassword@123');
    $user-&gt;save();
    return 'Admin password changed successfully';
});
</code></pre>



<h3 class="wp-block-heading">Step 2: Open the URL Once</h3>



<pre class="wp-block-code"><code>yourdomain.com/reset-admin-password
</code></pre>



<h3 class="wp-block-heading">Step 3: Remove the Route Immediately</h3>



<p>⚠️ This step is critical for security reasons.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Common Mistakes to Avoid</h2>



<ul class="wp-block-list">
<li>Saving passwords in plain text</li>



<li>Using <code>md5()</code> or <code>sha1()</code> for hashing</li>



<li>Forgetting to delete reset routes</li>



<li>Trying to change passwords from the <code>.env</code> file</li>
</ul>



<p>Laravel passwords must always be stored using <strong>bcrypt or Hash::make()</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Which Method Should You Use?</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Situation</th><th>Best Method</th></tr></thead><tbody><tr><td>Forgot admin password</td><td>phpMyAdmin</td></tr><tr><td>Local development</td><td>Laravel Tinker</td></tr><tr><td>Live server (cPanel)</td><td>phpMyAdmin</td></tr><tr><td>Emergency one-time reset</td><td>Temporary route</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Changing the admin password in a Laravel project is simple if you follow the correct and secure approach.<br>For beginners and production servers, <strong>phpMyAdmin with bcrypt hashing</strong> is the safest method.</p>



<p>Always follow Laravel security best practices to keep your application protected.</p>
<p>The post <a href="https://www.aiuniverse.xyz/how-to-change-admin-password-in-a-laravel-project/">How to Change Admin Password in a Laravel Project</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aiuniverse.xyz/how-to-change-admin-password-in-a-laravel-project/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Show Flarum Discussions on a Laravel Website</title>
		<link>https://www.aiuniverse.xyz/how-to-show-flarum-discussions-on-a-laravel-website/</link>
					<comments>https://www.aiuniverse.xyz/how-to-show-flarum-discussions-on-a-laravel-website/#respond</comments>
		
		<dc:creator><![CDATA[Maruti Kr.]]></dc:creator>
		<pubDate>Tue, 03 Feb 2026 17:39:19 +0000</pubDate>
				<category><![CDATA[Flarum]]></category>
		<category><![CDATA[display Flarum discussions on website]]></category>
		<category><![CDATA[fetch Flarum discussions in Laravel]]></category>
		<category><![CDATA[fetch forum discussions using Laravel]]></category>
		<category><![CDATA[Flarum API Laravel example]]></category>
		<category><![CDATA[Flarum discussions frontend JavaScript]]></category>
		<category><![CDATA[Flarum discussions homepage widget]]></category>
		<category><![CDATA[Flarum discussions Laravel integration]]></category>
		<category><![CDATA[Flarum discussions UI implementation]]></category>
		<category><![CDATA[Flarum JSON API example]]></category>
		<category><![CDATA[Flarum REST API tutorial]]></category>
		<category><![CDATA[integrate Flarum forum with Laravel]]></category>
		<category><![CDATA[Laravel backend proxy API]]></category>
		<category><![CDATA[Laravel community forum integration]]></category>
		<category><![CDATA[Laravel Flarum API integration]]></category>
		<category><![CDATA[show forum discussions in Laravel]]></category>
		<guid isPermaLink="false">https://www.aiuniverse.xyz/?p=21763</guid>

					<description><![CDATA[<p>Modern websites often need to display content from multiple platforms on a single homepage. A common example is showing WordPress blog posts or community discussions directly on <a class="read-more-link" href="https://www.aiuniverse.xyz/how-to-show-flarum-discussions-on-a-laravel-website/">Read More</a></p>
<p>The post <a href="https://www.aiuniverse.xyz/how-to-show-flarum-discussions-on-a-laravel-website/">How to Show Flarum Discussions on a Laravel Website</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img decoding="async" width="840" height="558" src="https://www.aiuniverse.xyz/wp-content/uploads/2026/02/How-to-Show-Flarum-Discussions-on-a-Laravel-Website.png" alt="" class="wp-image-21764" srcset="https://www.aiuniverse.xyz/wp-content/uploads/2026/02/How-to-Show-Flarum-Discussions-on-a-Laravel-Website.png 840w, https://www.aiuniverse.xyz/wp-content/uploads/2026/02/How-to-Show-Flarum-Discussions-on-a-Laravel-Website-300x199.png 300w, https://www.aiuniverse.xyz/wp-content/uploads/2026/02/How-to-Show-Flarum-Discussions-on-a-Laravel-Website-768x510.png 768w" sizes="(max-width: 840px) 100vw, 840px" /></figure>



<p>Modern websites often need to display content from multiple platforms on a single homepage. A common example is showing <strong>WordPress blog posts</strong> or <strong>community discussions</strong> directly on a Laravel-based site without breaking layout or performance.</p>



<p>In this article, we’ll explain the <strong>best and most stable approach to fetch and display Flarum discussions on a Laravel website</strong>, using the <strong>same concept as WordPress blog fetch</strong>, but implemented correctly for production use.</p>



<p>This guide covers:</p>



<ul class="wp-block-list">
<li>Why backend proxy is the best approach</li>



<li>How Flarum API works</li>



<li>Step-by-step Laravel + JavaScript integration</li>



<li>Clean UI rendering with fail-safe handling</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Why Not Fetch Flarum Directly from Frontend?</h2>



<p>Flarum provides a JSON:API endpoint, so technically you <em>can</em> fetch discussions directly using JavaScript. However, this approach causes multiple problems in real-world projects:</p>



<ul class="wp-block-list">
<li>❌ <strong>CORS issues</strong> (very common)</li>



<li>❌ API rate limits exposed to users</li>



<li>❌ Authentication tokens exposed in frontend</li>



<li>❌ No caching → slow homepage</li>



<li>❌ API failure breaks UI</li>
</ul>



<p>Because of this, <strong>direct frontend fetch is not recommended</strong> for production.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Best Practice: Laravel Backend Proxy (Recommended)</h2>



<p>The <strong>best and safest approach</strong> is:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Laravel Backend → Fetch Flarum API → Convert to simple JSON → Frontend JS renders UI</strong></p>
</blockquote>



<h3 class="wp-block-heading">Benefits:</h3>



<ul class="wp-block-list">
<li>✅ No CORS problems</li>



<li>✅ API tokens stay secure</li>



<li>✅ Easy caching (faster homepage)</li>



<li>✅ Clean error handling</li>



<li>✅ Same pattern as WordPress blog fetch</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 1: Understand the Flarum API Endpoint</h2>



<p>Flarum exposes discussions using JSON:API:</p>



<pre class="wp-block-code"><code>GET https://your-flarum-site.com/api/discussions
</code></pre>



<p>Common parameters:</p>



<ul class="wp-block-list">
<li><code>page[limit]=9</code> → number of discussions</li>



<li><code>sort=-createdAt</code> → latest discussions first</li>



<li><code>include=user,tags</code> → include author and tags</li>
</ul>



<p>Example:</p>



<pre class="wp-block-code"><code>/api/discussions?page&#91;limit]=9&amp;sort=-createdAt&amp;include=user,tags
</code></pre>



<p>The response is <strong>nested and complex</strong>, so we will simplify it in Laravel.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 2: Configure Flarum in Laravel</h2>



<p>Add Flarum configuration in <code>config/services.php</code>:</p>



<pre class="wp-block-code"><code>'flarum' =&gt; &#91;
    'base_url' =&gt; env('FLARUM_BASE_URL'),
    'api_token' =&gt; env('FLARUM_API_TOKEN'), // optional
],
</code></pre>



<p>Add values in <code>.env</code>:</p>



<pre class="wp-block-code"><code>FLARUM_BASE_URL=https://community.example.com
FLARUM_API_TOKEN=
</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>If discussions are public, API token is not required.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 3: Create a Laravel Proxy Route</h2>



<p>Create a route that your frontend will call instead of calling Flarum directly.</p>



<pre class="wp-block-code"><code>Route::get('/flarum/discussions', &#91;FlarumController::class, 'discussions'])
    -&gt;name('flarum.discussions');
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 4: Fetch and Normalize Flarum Data (Controller)</h2>



<p>Create a controller that:</p>



<ul class="wp-block-list">
<li>Calls Flarum API</li>



<li>Extracts only required fields</li>



<li>Returns clean JSON</li>



<li>Caches the response</li>
</ul>



<pre class="wp-block-code"><code>class FlarumController extends Controller
{
    public function discussions(Request $request)
    {
        $limit = min((int) $request-&gt;limit ?: 9, 12);

        return Cache::remember("flarum_discussions_$limit", now()-&gt;addMinutes(5), function () use ($limit) {

            $base = rtrim(config('services.flarum.base_url'), '/');

            $response = Http::acceptJson()
                -&gt;get($base . '/api/discussions', &#91;
                    'page' =&gt; &#91;'limit' =&gt; $limit],
                    'sort' =&gt; '-createdAt',
                    'include' =&gt; 'user,tags',
                ]);

            if (!$response-&gt;ok()) {
                return &#91;'success' =&gt; false, 'items' =&gt; &#91;]];
            }

            $json = $response-&gt;json();
            $included = collect($json&#91;'included'] ?? &#91;]);

            $users = $included-&gt;where('type', 'users')-&gt;keyBy('id');
            $tags  = $included-&gt;where('type', 'tags')-&gt;keyBy('id');

            $items = &#91;];

            foreach ($json&#91;'data'] as $d) {
                $authorId = data_get($d, 'relationships.user.data.id');
                $author   = $users&#91;$authorId]&#91;'attributes'] ?? &#91;];

                $items&#91;] = &#91;
                    'title' =&gt; $d&#91;'attributes']&#91;'title'],
                    'link'  =&gt; $base.'/d/'.$d&#91;'attributes']&#91;'slug'],
                    'created_at' =&gt; $d&#91;'attributes']&#91;'createdAt'],
                    'reply_count' =&gt; $d&#91;'attributes']&#91;'replyCount'],
                    'author' =&gt; $author&#91;'displayName'] ?? $author&#91;'username'],
                ];
            }

            return &#91;'success' =&gt; true, 'items' =&gt; $items];
        });
    }
}
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 5: Create Blade Section for Discussions</h2>



<p>Add a section similar to WordPress blog cards:</p>



<pre class="wp-block-code"><code>&lt;div id="flarum-discussions" style="display:none;"&gt;
    &lt;div id="flarum-loading"&gt;Loading discussions...&lt;/div&gt;
    &lt;div id="flarum-grid"&gt;&lt;/div&gt;
&lt;/div&gt;
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 6: Fetch Discussions Using JavaScript</h2>



<p>Now fetch discussions from <strong>your Laravel route</strong>, not from Flarum directly.</p>



<pre class="wp-block-code"><code>&lt;script&gt;
document.addEventListener("DOMContentLoaded", async () =&gt; {

  const section = document.getElementById("flarum-discussions");
  const loading = document.getElementById("flarum-loading");
  const grid    = document.getElementById("flarum-grid");

  section.style.display = "block";

  try {
    const res = await fetch("/flarum/discussions?limit=9");
    const data = await res.json();

    if (!data.success || !data.items.length) throw "No data";

    let html = "";
    data.items.forEach(d =&gt; {
      html += `
        &lt;div class="discussion-card"&gt;
          &lt;a href="${d.link}" target="_blank"&gt;
            &lt;h5&gt;${d.title}&lt;/h5&gt;
            &lt;p&gt;By ${d.author} • ${d.reply_count} replies&lt;/p&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      `;
    });

    grid.innerHTML = html;
    loading.style.display = "none";

  } catch (e) {
    section.style.display = "none";
  }
});
&lt;/script&gt;
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 7: Fail-Safe Handling (Very Important)</h2>



<p>If:</p>



<ul class="wp-block-list">
<li>Flarum is down</li>



<li>API fails</li>



<li>Network error occurs</li>
</ul>



<p>👉 The entire section hides automatically, so <strong>your homepage never breaks</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Final Architecture Overview</h2>



<pre class="wp-block-code"><code>Frontend JS
    ↓
Laravel Proxy Route
    ↓
Flarum JSON API
    ↓
Laravel Normalization + Cache
    ↓
Clean JSON to Frontend
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Conclusion</h2>



<p>If you want to show <strong>Flarum discussions on a Laravel website</strong> using the <strong>same concept as WordPress blog fetch</strong>, the <strong>Laravel backend proxy approach</strong> is the most professional and production-ready solution.</p>



<p>It ensures:</p>



<ul class="wp-block-list">
<li>Better performance</li>



<li>Strong security</li>



<li>Clean UI rendering</li>



<li>No CORS headaches</li>



<li>Scalable architecture</li>
</ul>



<p>This pattern works perfectly for:</p>



<ul class="wp-block-list">
<li>Communities</li>



<li>SaaS dashboards</li>



<li>Blogs + forums combo</li>



<li>Multi-platform content sites</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>
<p>The post <a href="https://www.aiuniverse.xyz/how-to-show-flarum-discussions-on-a-laravel-website/">How to Show Flarum Discussions on a Laravel Website</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aiuniverse.xyz/how-to-show-flarum-discussions-on-a-laravel-website/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Fixing SMTP 535 Authentication Error in Laravel with AWS SES (Step-by-Step Guide)</title>
		<link>https://www.aiuniverse.xyz/fixing-smtp-535-authentication-error-in-laravel-with-aws-ses-step-by-step-guide/</link>
					<comments>https://www.aiuniverse.xyz/fixing-smtp-535-authentication-error-in-laravel-with-aws-ses-step-by-step-guide/#respond</comments>
		
		<dc:creator><![CDATA[Maruti Kr.]]></dc:creator>
		<pubDate>Thu, 22 Jan 2026 11:24:09 +0000</pubDate>
				<category><![CDATA[laravel]]></category>
		<category><![CDATA[Authentication credentials invalid SMTP]]></category>
		<category><![CDATA[AWS SES email sending error]]></category>
		<category><![CDATA[AWS SES Laravel setup]]></category>
		<category><![CDATA[AWS SES SMTP credentials]]></category>
		<category><![CDATA[AWS SES SMTP error]]></category>
		<category><![CDATA[Email not sending Laravel AWS]]></category>
		<category><![CDATA[Fix SMTP authentication error Laravel]]></category>
		<category><![CDATA[Laravel email configuration AWS SES]]></category>
		<category><![CDATA[Laravel mailer SMTP issue]]></category>
		<category><![CDATA[Laravel SMTP 535 error]]></category>
		<category><![CDATA[Laravel SMTP login failed]]></category>
		<category><![CDATA[SES SMTP configuration Laravel]]></category>
		<category><![CDATA[SMTP 535 authentication failed]]></category>
		<category><![CDATA[SMTP credentials invalid error]]></category>
		<guid isPermaLink="false">https://www.aiuniverse.xyz/?p=21739</guid>

					<description><![CDATA[<p>Sending emails is a critical feature for most Laravel applications. Whether it’s account verification, password reset, or notifications, email delivery must work reliably. However, many developers face <a class="read-more-link" href="https://www.aiuniverse.xyz/fixing-smtp-535-authentication-error-in-laravel-with-aws-ses-step-by-step-guide/">Read More</a></p>
<p>The post <a href="https://www.aiuniverse.xyz/fixing-smtp-535-authentication-error-in-laravel-with-aws-ses-step-by-step-guide/">Fixing SMTP 535 Authentication Error in Laravel with AWS SES (Step-by-Step Guide)</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="683" src="https://www.aiuniverse.xyz/wp-content/uploads/2026/01/ChatGPT-Image-Jan-22-2026-04_53_16-PM-1024x683.png" alt="" class="wp-image-21740" srcset="https://www.aiuniverse.xyz/wp-content/uploads/2026/01/ChatGPT-Image-Jan-22-2026-04_53_16-PM-1024x683.png 1024w, https://www.aiuniverse.xyz/wp-content/uploads/2026/01/ChatGPT-Image-Jan-22-2026-04_53_16-PM-300x200.png 300w, https://www.aiuniverse.xyz/wp-content/uploads/2026/01/ChatGPT-Image-Jan-22-2026-04_53_16-PM-768x512.png 768w, https://www.aiuniverse.xyz/wp-content/uploads/2026/01/ChatGPT-Image-Jan-22-2026-04_53_16-PM.png 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Sending emails is a critical feature for most Laravel applications. Whether it’s account verification, password reset, or notifications, email delivery must work reliably.</p>



<p>However, many developers face the following error when configuring AWS SES with Laravel:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>SMTP Error 535: Authentication Credentials Invalid</strong></p>
</blockquote>



<p>This article explains <strong>why this error occurs</strong>, <strong>what it actually means</strong>, and <strong>how to fix it permanently</strong> in Laravel.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Understanding the Error</h2>



<p>The full error usually looks like this:</p>



<pre class="wp-block-code"><code>Failed to authenticate on SMTP server using authenticators LOGIN, PLAIN.
Expected response code 235 but got 535.
Authentication Credentials Invalid.
</code></pre>



<h3 class="wp-block-heading">What does this mean?</h3>



<ul class="wp-block-list">
<li>Laravel successfully connects to the SMTP server</li>



<li>The SMTP server <strong>rejects the username or password</strong></li>



<li>Authentication fails before sending any email</li>
</ul>



<p>This is <strong>not</strong> a Laravel bug.<br>This is <strong>almost always a configuration issue</strong> with AWS SES SMTP credentials.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Why This Error Happens (Most Common Reasons)</h2>



<h3 class="wp-block-heading">1. Using IAM Access Keys Instead of SMTP Credentials</h3>



<p>AWS SES <strong>does not accept normal IAM Access Key &amp; Secret Key</strong> directly for SMTP authentication.</p>



<p>Many developers mistakenly copy:</p>



<ul class="wp-block-list">
<li><code>AWS_ACCESS_KEY_ID</code></li>



<li><code>AWS_SECRET_ACCESS_KEY</code></li>
</ul>



<p>and paste them into:</p>



<pre class="wp-block-code"><code>MAIL_USERNAME
MAIL_PASSWORD
</code></pre>



<p>❌ This will <strong>always fail</strong> with a 535 error.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">2. Wrong AWS SES Region</h3>



<p>AWS SES is region-specific.</p>



<p>If your SES is created in:</p>



<ul class="wp-block-list">
<li><code>ap-south-1</code> → you must use<br><code>email-smtp.ap-south-1.amazonaws.com</code></li>
</ul>



<p>Using the wrong region host causes authentication failure.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">3. Special Characters in SMTP Password</h3>



<p>SES SMTP passwords often contain:</p>



<ul class="wp-block-list">
<li><code>+</code></li>



<li><code>/</code></li>



<li><code>=</code></li>
</ul>



<p>If the password is <strong>not wrapped in quotes</strong>, Laravel may parse it incorrectly.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">4. Laravel Config Cache Still Using Old Values</h3>



<p>Laravel caches configuration aggressively.<br>Even after fixing <code>.env</code>, Laravel may still use old credentials.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Correct Way to Configure AWS SES SMTP in Laravel</h2>



<h3 class="wp-block-heading">Step 1: Generate AWS SES SMTP Credentials</h3>



<p>Do <strong>not</strong> use IAM access keys.</p>



<ol class="wp-block-list">
<li>Go to <strong>AWS Console</strong></li>



<li>Open <strong>Simple Email Service (SES)</strong></li>



<li>Navigate to <strong>SMTP Settings</strong></li>



<li>Click <strong>Create SMTP Credentials</strong></li>



<li>AWS will generate:
<ul class="wp-block-list">
<li>SMTP Username</li>



<li>SMTP Password</li>
</ul>
</li>
</ol>



<p>Save them securely.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 2: Update Laravel <code>.env</code> File</h3>



<pre class="wp-block-code"><code>MAIL_MAILER=smtp
MAIL_HOST=email-smtp.ap-south-1.amazonaws.com
MAIL_PORT=587
MAIL_USERNAME=YOUR_SES_SMTP_USERNAME
MAIL_PASSWORD="YOUR_SES_SMTP_PASSWORD"
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=contact@yourdomain.com
MAIL_FROM_NAME="Your Website Name"
</code></pre>



<h3 class="wp-block-heading">Important Notes</h3>



<ul class="wp-block-list">
<li>Always wrap <code>MAIL_PASSWORD</code> in <strong>double quotes</strong></li>



<li>Ensure <code>MAIL_HOST</code> matches your SES region</li>



<li>No extra spaces before or after values</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 3: Clear Laravel Cache (Very Important)</h3>



<p>Run these commands on your server:</p>



<pre class="wp-block-code"><code>php artisan config:clear
php artisan cache:clear
php artisan config:cache
php artisan route:clear
</code></pre>



<p>If you are using queues:</p>



<pre class="wp-block-code"><code>php artisan queue:restart
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Verifying Email or Domain in AWS SES</h2>



<p>AWS SES requires verification.</p>



<p>You must verify <strong>either</strong>:</p>



<ul class="wp-block-list">
<li>The sender email address<br><strong>OR</strong></li>



<li>The entire domain</li>
</ul>



<p>If not verified:</p>



<ul class="wp-block-list">
<li>Emails will fail later with different errors (not 535)</li>



<li>In sandbox mode, you can send emails <strong>only to verified addresses</strong></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Common Mistakes to Avoid</h2>



<ul class="wp-block-list">
<li>Using IAM keys instead of SMTP credentials</li>



<li>Forgetting to clear Laravel config cache</li>



<li>Using wrong SES region hostname</li>



<li>Leaving <code>APP_DEBUG=true</code> in production</li>



<li>Exposing SMTP credentials in public error pages</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Production Security Best Practice</h2>



<p>Always disable debug mode in production:</p>



<pre class="wp-block-code"><code>APP_ENV=production
APP_DEBUG=false
</code></pre>



<p>This prevents:</p>



<ul class="wp-block-list">
<li>Credential leaks</li>



<li>Stack trace exposure</li>



<li>Security risks</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Final Checklist</h2>



<p>Before testing again, confirm:</p>



<ul class="wp-block-list">
<li>SMTP credentials are generated from AWS SES</li>



<li>Correct region SMTP host is used</li>



<li><code>.env</code> password is quoted</li>



<li>Laravel cache is cleared</li>



<li>Sender email/domain is verified in SES</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Conclusion</h2>



<p>The <strong>SMTP 535 Authentication Error</strong> in Laravel is not a framework issue.<br>It’s a <strong>credential mismatch caused by incorrect AWS SES configuration</strong>.</p>



<p>Once you:</p>



<ul class="wp-block-list">
<li>Use proper SES SMTP credentials</li>



<li>Match the correct region</li>



<li>Clear Laravel cache</li>
</ul>



<p>the issue is resolved permanently.</p>
<p>The post <a href="https://www.aiuniverse.xyz/fixing-smtp-535-authentication-error-in-laravel-with-aws-ses-step-by-step-guide/">Fixing SMTP 535 Authentication Error in Laravel with AWS SES (Step-by-Step Guide)</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aiuniverse.xyz/fixing-smtp-535-authentication-error-in-laravel-with-aws-ses-step-by-step-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Step-by-Step Guide to Set Up Google Console API for “Sign in with Google”</title>
		<link>https://www.aiuniverse.xyz/google-console-api-sign-in-with-google-setup/</link>
					<comments>https://www.aiuniverse.xyz/google-console-api-sign-in-with-google-setup/#respond</comments>
		
		<dc:creator><![CDATA[Maruti Kr.]]></dc:creator>
		<pubDate>Tue, 20 Jan 2026 09:35:23 +0000</pubDate>
				<category><![CDATA[laravel]]></category>
		<category><![CDATA[Android Google Sign-In]]></category>
		<category><![CDATA[Flutter Google Sign-In setup]]></category>
		<category><![CDATA[Google API credentials setup]]></category>
		<category><![CDATA[Google authentication API]]></category>
		<category><![CDATA[Google Cloud Console OAuth]]></category>
		<category><![CDATA[Google Console API setup]]></category>
		<category><![CDATA[Google login for apps]]></category>
		<category><![CDATA[Google login integration]]></category>
		<category><![CDATA[Google OAuth 2.0 configuration]]></category>
		<category><![CDATA[Google OAuth client ID]]></category>
		<category><![CDATA[Google Sign-In setup]]></category>
		<category><![CDATA[OAuth consent screen Google]]></category>
		<category><![CDATA[Sign in with Google guide]]></category>
		<category><![CDATA[Web Google OAuth login]]></category>
		<guid isPermaLink="false">https://www.aiuniverse.xyz/?p=21735</guid>

					<description><![CDATA[<p>Google Sign-In is one of the most trusted and widely used authentication methods today. Whether you are building a mobile app, web application, or backend system, integrating <a class="read-more-link" href="https://www.aiuniverse.xyz/google-console-api-sign-in-with-google-setup/">Read More</a></p>
<p>The post <a href="https://www.aiuniverse.xyz/google-console-api-sign-in-with-google-setup/">Step-by-Step Guide to Set Up Google Console API for “Sign in with Google”</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://www.aiuniverse.xyz/wp-content/uploads/2026/01/ChatGPT-Image-Jan-20-2026-03_03_19-PM-1024x683.png" alt="" class="wp-image-21736" srcset="https://www.aiuniverse.xyz/wp-content/uploads/2026/01/ChatGPT-Image-Jan-20-2026-03_03_19-PM-1024x683.png 1024w, https://www.aiuniverse.xyz/wp-content/uploads/2026/01/ChatGPT-Image-Jan-20-2026-03_03_19-PM-300x200.png 300w, https://www.aiuniverse.xyz/wp-content/uploads/2026/01/ChatGPT-Image-Jan-20-2026-03_03_19-PM-768x512.png 768w, https://www.aiuniverse.xyz/wp-content/uploads/2026/01/ChatGPT-Image-Jan-20-2026-03_03_19-PM.png 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Google Sign-In is one of the most trusted and widely used authentication methods today. Whether you are building a <strong>mobile app, web application, or backend system</strong>, integrating Google Login improves user experience, security, and trust.</p>



<p>In this guide, you’ll learn <strong>how to configure Google Cloud Console step by step</strong> to enable <strong>“Sign in with Google” (OAuth 2.0)</strong> correctly, without common mistakes.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">What Is Google Sign-In (OAuth 2.0)?</h2>



<p>Google Sign-In uses <strong>OAuth 2.0</strong>, a secure authorization framework that allows users to authenticate using their Google account <strong>without sharing passwords</strong>.</p>



<p>With Google OAuth:</p>



<ul class="wp-block-list">
<li>Users log in faster</li>



<li>Developers avoid handling passwords</li>



<li>Security and trust are handled by Google</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Prerequisites Before You Start</h2>



<p>Before setting up Google Console, make sure you have:</p>



<ul class="wp-block-list">
<li>A <strong>Google account</strong></li>



<li>Your <strong>app details</strong> (package name / domain / bundle ID)</li>



<li>Backend callback URL (if applicable)</li>



<li>Android SHA-1 keys (for mobile apps)</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 1: Create or Select a Google Cloud Project</h2>



<ol class="wp-block-list">
<li>Visit <strong>Google Cloud Console</strong></li>



<li>Click <strong>Select a project</strong> (top bar)</li>



<li>Choose <strong>New Project</strong></li>



<li>Enter a project name (example: <code>MyApp Google Login</code>)</li>



<li>Click <strong>Create</strong></li>



<li>Ensure the project is selected</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 2: Configure OAuth Consent Screen (Mandatory)</h2>



<p>The OAuth consent screen defines <strong>how your app appears to users</strong> during login.</p>



<ol class="wp-block-list">
<li>Go to <strong>APIs &amp; Services → OAuth consent screen</strong></li>



<li>Select <strong>User Type</strong>
<ul class="wp-block-list">
<li><strong>External</strong> → Public apps</li>



<li><strong>Internal</strong> → Google Workspace only</li>
</ul>
</li>



<li>Fill required details:
<ul class="wp-block-list">
<li>App name</li>



<li>User support email</li>



<li>Developer contact email</li>
</ul>
</li>



<li>App domain (optional but recommended)</li>



<li>Add scopes:
<ul class="wp-block-list">
<li><code>openid</code></li>



<li><code>email</code></li>



<li><code>profile</code></li>
</ul>
</li>



<li>Add <strong>Test users</strong> if app is in testing</li>



<li>Save and continue</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 3: Enable Required APIs (Optional but Recommended)</h2>



<ol class="wp-block-list">
<li>Navigate to <strong>APIs &amp; Services → Library</strong></li>



<li>Search and enable:
<ul class="wp-block-list">
<li><strong>Google Identity Services</strong></li>



<li><strong>People API</strong> (only if profile data is needed)</li>
</ul>
</li>



<li>Click <strong>Enable</strong></li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 4: Create OAuth Client ID (Core Configuration)</h2>



<p>Go to <strong>APIs &amp; Services → Credentials → Create Credentials → OAuth Client ID</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">A) Android App Configuration</h3>



<ol class="wp-block-list">
<li>Choose <strong>Application Type: Android</strong></li>



<li>Enter:
<ul class="wp-block-list">
<li>App name</li>



<li><strong>Package name</strong> (must match exactly)</li>



<li><strong>SHA-1 fingerprint</strong></li>
</ul>
</li>



<li>Click <strong>Create</strong></li>
</ol>



<h4 class="wp-block-heading">How to Generate SHA-1</h4>



<ul class="wp-block-list">
<li><strong>Debug SHA-1</strong>:
<ul class="wp-block-list">
<li>Android Studio → Gradle → signingReport</li>
</ul>
</li>



<li><strong>Production SHA-1</strong>:
<ul class="wp-block-list">
<li>Google Play Console → App Integrity → App signing key</li>
</ul>
</li>
</ul>



<p>⚠️ Both <strong>debug and release SHA-1</strong> must be added.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">B) Web Application Configuration</h3>



<ol class="wp-block-list">
<li>Choose <strong>Application Type: Web Application</strong></li>



<li>Add:
<ul class="wp-block-list">
<li>Authorized JavaScript origins<br>Example: <code>https://yourdomain.com</code></li>



<li>Authorized redirect URIs<br>Example: <code>https://yourdomain.com/auth/google/callback</code></li>
</ul>
</li>



<li>Click <strong>Create</strong></li>



<li>Copy:
<ul class="wp-block-list">
<li>Client ID</li>



<li>Client Secret</li>
</ul>
</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">C) iOS Application Configuration</h3>



<ol class="wp-block-list">
<li>Choose <strong>Application Type: iOS</strong></li>



<li>Enter:
<ul class="wp-block-list">
<li>Bundle ID</li>
</ul>
</li>



<li>Create the credential</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 5: Configure Redirect URIs Correctly</h2>



<p>Redirect URIs must match <strong>exactly</strong>, including:</p>



<ul class="wp-block-list">
<li>HTTPS</li>



<li>Trailing slashes</li>



<li>Subdomains</li>
</ul>



<p>Incorrect redirect URI causes:</p>



<ul class="wp-block-list">
<li><code>redirect_uri_mismatch</code> error</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 6: Publish OAuth Consent Screen</h2>



<p>To allow public users:</p>



<ol class="wp-block-list">
<li>Go to <strong>OAuth consent screen</strong></li>



<li>Change status from <strong>Testing</strong> to <strong>In production</strong></li>



<li>Basic scopes (<code>email</code>, <code>profile</code>) usually <strong>do not require verification</strong></li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 7: Integrate Credentials into Your Application</h2>



<p>Depending on your setup:</p>



<ul class="wp-block-list">
<li>Android / Flutter → Package name + SHA-1</li>



<li>Web / Backend → Client ID &amp; Secret</li>



<li>Firebase Auth → Add SHA-1 + download <code>google-services.json</code></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Step 8: Common Issues &amp; Fixes Checklist</h2>



<p>✔ OAuth consent screen saved<br>✔ Correct Google Cloud project selected<br>✔ Correct package name / domain<br>✔ Debug &amp; release SHA-1 added<br>✔ Test users added (if testing)<br>✔ Redirect URI exactly matches<br>✔ App published for production use</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Best Practices for Google Sign-In</h2>



<ul class="wp-block-list">
<li>Use <strong>minimal scopes</strong></li>



<li>Never expose Client Secret in frontend code</li>



<li>Verify ID tokens on backend</li>



<li>Keep OAuth credentials environment-specific</li>



<li>Regularly audit credentials</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Setting up Google Sign-In through Google Cloud Console is straightforward <strong>when done correctly</strong>. Most failures happen due to <strong>SHA-1 mismatch, incorrect redirect URIs, or missing consent screen configuration</strong>.</p>



<p>Follow this guide step by step, and your Google Login integration will work smoothly across <strong>Android, iOS, Web, and backend systems</strong>.</p>
<p>The post <a href="https://www.aiuniverse.xyz/google-console-api-sign-in-with-google-setup/">Step-by-Step Guide to Set Up Google Console API for “Sign in with Google”</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aiuniverse.xyz/google-console-api-sign-in-with-google-setup/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Run an HTML Website Alongside a Laravel Project on the Same Server</title>
		<link>https://www.aiuniverse.xyz/how-to-run-an-html-website-alongside-a-laravel-project-on-the-same-server/</link>
					<comments>https://www.aiuniverse.xyz/how-to-run-an-html-website-alongside-a-laravel-project-on-the-same-server/#respond</comments>
		
		<dc:creator><![CDATA[Maruti Kr.]]></dc:creator>
		<pubDate>Mon, 12 Jan 2026 06:19:33 +0000</pubDate>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[laravel]]></category>
		<category><![CDATA[host HTML and Laravel together]]></category>
		<category><![CDATA[Laravel and HTML same domain]]></category>
		<category><![CDATA[Laravel HTML subfolder]]></category>
		<category><![CDATA[Laravel HTML website integration]]></category>
		<category><![CDATA[Laravel project with HTML pages]]></category>
		<category><![CDATA[Laravel public folder static HTML]]></category>
		<category><![CDATA[Laravel static site setup]]></category>
		<category><![CDATA[Laravel website structure]]></category>
		<category><![CDATA[Laravel with static website]]></category>
		<category><![CDATA[run HTML with Laravel]]></category>
		<category><![CDATA[serve HTML files in Laravel]]></category>
		<guid isPermaLink="false">https://www.aiuniverse.xyz/?p=21679</guid>

					<description><![CDATA[<p>Running a Laravel application is common for dynamic web platforms, dashboards, and APIs. However, many businesses and developers also want to run a simple HTML website on <a class="read-more-link" href="https://www.aiuniverse.xyz/how-to-run-an-html-website-alongside-a-laravel-project-on-the-same-server/">Read More</a></p>
<p>The post <a href="https://www.aiuniverse.xyz/how-to-run-an-html-website-alongside-a-laravel-project-on-the-same-server/">How to Run an HTML Website Alongside a Laravel Project on the Same Server</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://www.aiuniverse.xyz/wp-content/uploads/2026/01/ChatGPT-Image-Jan-12-2026-11_48_40-AM-1024x683.png" alt="" class="wp-image-21680" srcset="https://www.aiuniverse.xyz/wp-content/uploads/2026/01/ChatGPT-Image-Jan-12-2026-11_48_40-AM-1024x683.png 1024w, https://www.aiuniverse.xyz/wp-content/uploads/2026/01/ChatGPT-Image-Jan-12-2026-11_48_40-AM-300x200.png 300w, https://www.aiuniverse.xyz/wp-content/uploads/2026/01/ChatGPT-Image-Jan-12-2026-11_48_40-AM-768x512.png 768w, https://www.aiuniverse.xyz/wp-content/uploads/2026/01/ChatGPT-Image-Jan-12-2026-11_48_40-AM.png 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Running a Laravel application is common for dynamic web platforms, dashboards, and APIs. However, many businesses and developers also want to run a <strong>simple HTML website</strong> on the same server—often for landing pages, marketing content, or static informational pages.</p>



<p>The good news is that <strong>Laravel and a pure HTML website can run together smoothly on the same domain or server</strong>, if structured correctly.</p>



<p>In this blog, we’ll explain <strong>why this setup is useful</strong>, the <strong>best ways to implement it</strong>, and <strong>step-by-step methods</strong> you can follow safely in production.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Why Run an HTML Site Alongside Laravel?</h2>



<p>There are several practical reasons developers choose this approach:</p>



<ul class="wp-block-list">
<li>Marketing or SEO pages are easier to manage in HTML</li>



<li>Faster loading for static content</li>



<li>Reduced server overhead for simple pages</li>



<li>Clean separation between application logic and content</li>



<li>Ability to update the website without touching Laravel code</li>
</ul>



<p>This setup is especially useful when <strong>Laravel is already running</strong>, and you want to add a lightweight website without rebuilding everything inside Blade templates.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Understanding Laravel’s Public Folder (Very Important)</h2>



<p>Laravel serves all public web traffic from the <strong><code>public</code> directory</strong>.<br>This means:</p>



<ul class="wp-block-list">
<li>Any <strong>HTML, CSS, JS, or image file inside <code>public</code></strong> can be accessed directly</li>



<li>Laravel routes only handle requests <strong>not matching a physical file</strong></li>
</ul>



<p>This behavior allows us to safely place a static HTML site alongside Laravel.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Method 1: Run HTML Website Inside Laravel’s Public Folder (Recommended)</h2>



<p>This is the <strong>simplest and safest method</strong> when Laravel is already live.</p>



<h3 class="wp-block-heading">Folder Structure Example</h3>



<pre class="wp-block-code"><code>laravel-project/
├── app/
├── routes/
├── resources/
├── public/
│   ├── index.php        (Laravel entry point)
│   ├── assets/
│   └── html-site/
│       ├── index.html
│       ├── about.html
│       ├── css/
│       ├── js/
│       └── images/
</code></pre>



<h3 class="wp-block-heading">How It Works</h3>



<ul class="wp-block-list">
<li>Laravel continues running normally</li>



<li>Static HTML files are served directly</li>



<li>No route conflict with Laravel</li>



<li>No performance impact</li>
</ul>



<h3 class="wp-block-heading">Access URLs</h3>



<pre class="wp-block-code"><code>https:&#47;&#47;yourdomain.com/html-site/
https://yourdomain.com/html-site/about.html
</code></pre>



<h3 class="wp-block-heading">Important Notes</h3>



<ul class="wp-block-list">
<li>Do <strong>not</strong> create Laravel routes for this folder</li>



<li>Laravel automatically skips routing if a file exists</li>



<li>Keep HTML assets fully static (no PHP files)</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Method 2: HTML as Main Site, Laravel in a Subfolder</h2>



<p>Use this method when:</p>



<ul class="wp-block-list">
<li>HTML website is the <strong>main homepage</strong></li>



<li>Laravel is used as an <strong>application or admin panel</strong></li>
</ul>



<h3 class="wp-block-heading">Folder Structure</h3>



<pre class="wp-block-code"><code>public_html/
├── index.html          (Main website)
├── css/
├── js/
├── images/
└── app/
    └── laravel/
        └── public/
            └── index.php
</code></pre>



<h3 class="wp-block-heading">Access URLs</h3>



<pre class="wp-block-code"><code>https://yourdomain.com/        → HTML site
https://yourdomain.com/app/    → Laravel app
</code></pre>



<h3 class="wp-block-heading">When to Use This</h3>



<ul class="wp-block-list">
<li>Marketing website is primary</li>



<li>Laravel is secondary (dashboard, CRM, portal)</li>



<li>Shared hosting or cPanel setup</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Method 3: HTML on Main Domain, Laravel on Subdomain (Best for Production)</h2>



<p>This is the <strong>most professional and scalable approach</strong>.</p>



<h3 class="wp-block-heading">Example Setup</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>URL</th><th>Purpose</th></tr></thead><tbody><tr><td>yoursite.com</td><td>HTML website</td></tr><tr><td>app.yoursite.com</td><td>Laravel application</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Benefits</h3>



<ul class="wp-block-list">
<li>No routing conflicts</li>



<li>Better SEO separation</li>



<li>Easier scaling and maintenance</li>



<li>Clean architecture</li>
</ul>



<h3 class="wp-block-heading">Recommended For</h3>



<ul class="wp-block-list">
<li>Growing platforms</li>



<li>SaaS products</li>



<li>Business websites with dashboards</li>



<li>Long-term projects</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Common Mistakes to Avoid</h2>



<h3 class="wp-block-heading">1. Mixing Laravel Routes with HTML Files</h3>



<p>Never define Laravel routes for static HTML folders.</p>



<h3 class="wp-block-heading">2. Wrong Asset Paths</h3>



<p>Use <strong>absolute paths</strong> in HTML files:</p>



<pre class="wp-block-code"><code>&lt;link rel="stylesheet" href="/html-site/css/style.css"&gt;
</code></pre>



<h3 class="wp-block-heading">3. Exposing Sensitive Files</h3>



<p>Do not place:</p>



<ul class="wp-block-list">
<li><code>.env</code></li>



<li>PHP scripts</li>



<li>configuration files<br>inside the HTML folder.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Security Best Practices</h2>



<ul class="wp-block-list">
<li>Keep HTML folders <strong>static only</strong></li>



<li>Laravel <code>.htaccess</code> should remain untouched</li>



<li>Do not allow uploads inside HTML directories</li>



<li>Use correct file permissions</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Which Method Should You Choose?</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Use Case</th><th>Best Method</th></tr></thead><tbody><tr><td>Laravel already running</td><td>Method 1</td></tr><tr><td>HTML homepage + Laravel app</td><td>Method 2</td></tr><tr><td>Production-grade setup</td><td>Method 3</td></tr></tbody></table></figure>



<p>👉 <strong>If Laravel is already live</strong>, Method 1 is the fastest and safest solution.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Final Thoughts</h2>



<p>Running an HTML website alongside a Laravel project is <strong>not only possible but also a best practice</strong> in many real-world scenarios. The key is understanding how Laravel serves files and keeping a clean folder structure.</p>



<p>Whether you’re adding landing pages, marketing content, or a separate static site, the right setup ensures:</p>



<ul class="wp-block-list">
<li>Better performance</li>



<li>Cleaner codebase</li>



<li>Easier maintenance</li>



<li>No routing conflicts</li>
</ul>



<p>Choose the method that fits your project size and future plans—and keep Laravel and HTML working together smoothly.</p>
<p>The post <a href="https://www.aiuniverse.xyz/how-to-run-an-html-website-alongside-a-laravel-project-on-the-same-server/">How to Run an HTML Website Alongside a Laravel Project on the Same Server</a> appeared first on <a href="https://www.aiuniverse.xyz">Artificial Intelligence</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aiuniverse.xyz/how-to-run-an-html-website-alongside-a-laravel-project-on-the-same-server/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
