<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abhishek Sinha</title>
    <description>The latest articles on DEV Community by Abhishek Sinha (@abhisheksinha).</description>
    <link>https://dev.to/abhisheksinha</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F991009%2F5cb25673-2e6d-4fef-b107-4ec48c87dd4d.jpeg</url>
      <title>DEV Community: Abhishek Sinha</title>
      <link>https://dev.to/abhisheksinha</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abhisheksinha"/>
    <language>en</language>
    <item>
      <title>Self Host Without Public IP</title>
      <dc:creator>Abhishek Sinha</dc:creator>
      <pubDate>Sat, 15 Feb 2025 02:17:28 +0000</pubDate>
      <link>https://dev.to/abhisheksinha/self-host-without-public-ip-42bg</link>
      <guid>https://dev.to/abhisheksinha/self-host-without-public-ip-42bg</guid>
      <description>&lt;h1&gt;
  
  
  &lt;a href="https://github.com/fatedier/frp/tree/master" rel="noopener noreferrer"&gt;FRP&lt;/a&gt; (Fast Reverse Proxy) Setup on Linux Machine to bypass CGNAT. [Self-Hosting] Updated Doc: Feb 2025
&lt;/h1&gt;

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

&lt;p&gt;This guide provides step-by-step instructions to download, configure, test, and set up FRP (&lt;code&gt;frps&lt;/code&gt; for the server and &lt;code&gt;frpc&lt;/code&gt; for the client) as a systemd service on Ubuntu/Debian systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Server&lt;/strong&gt;: A machine with a public IP address to host &lt;code&gt;frps&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client&lt;/strong&gt;: A machine (behind NAT or firewall) where &lt;code&gt;frpc&lt;/code&gt; will run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Both Machines&lt;/strong&gt;: Ubuntu/Debian operating system with &lt;code&gt;wget&lt;/code&gt; installed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. Download and Install FRP
&lt;/h2&gt;

&lt;h3&gt;
  
  
  On the Server (Public Machine)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Download latest FRP [Choose package according to machine architecture]&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Extract the Archive&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-zxvf&lt;/span&gt; frp_0.61.1_linux_amd64.tar.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Edit &lt;code&gt;frps&lt;/code&gt; Configuration File&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;cd &lt;/span&gt;frp_0.61.1_linux_amd64
   &lt;span class="nb"&gt;sudo &lt;/span&gt;nano frps.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update the following content if required:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;   &lt;span class="py"&gt;bind_port&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;7000&lt;/span&gt;
   &lt;span class="py"&gt;auth.token&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"mysecret"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  On the Client (Local Machine)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Download latest FRP [Choose package according to machine architecture]&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Extract the Archive&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-zxvf&lt;/span&gt; frp_0.61.1_linux_amd64.tar.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Edit &lt;code&gt;frpc&lt;/code&gt; Configuration File&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;cd &lt;/span&gt;frp_0.61.1_linux_amd64
   &lt;span class="nb"&gt;sudo &lt;/span&gt;nano frpc.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the following content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;   &lt;span class="py"&gt;server_addr&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"x.x.x.x"&lt;/span&gt;  &lt;span class="c"&gt;# Replace with your server's public IP&lt;/span&gt;
   &lt;span class="py"&gt;server_port&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;7000&lt;/span&gt;
   &lt;span class="py"&gt;auth.token&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"mysecret"&lt;/span&gt;
   &lt;span class="py"&gt;login_fail_exit&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;

   &lt;span class="nn"&gt;[[proxies]]&lt;/span&gt;
   &lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"example1"&lt;/span&gt;
   &lt;span class="py"&gt;type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"tcp"&lt;/span&gt;
   &lt;span class="py"&gt;local_port&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;81&lt;/span&gt;
   &lt;span class="py"&gt;remote_port&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;6000&lt;/span&gt;

   &lt;span class="nn"&gt;[[proxies]]&lt;/span&gt;
   &lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"example2"&lt;/span&gt;
   &lt;span class="py"&gt;type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"tcp"&lt;/span&gt;
   &lt;span class="py"&gt;local_port&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;83&lt;/span&gt;
   &lt;span class="py"&gt;remote_port&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;6001&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;NOTE: Need to allow these remote ports on frps [server with public ip] firewall.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2. Testing the Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  On the Server
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start &lt;code&gt;frps&lt;/code&gt; Manually&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   frps &lt;span class="nt"&gt;-c&lt;/span&gt; /etc/frp/frps.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  On the Client
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start &lt;code&gt;frpc&lt;/code&gt; Manually&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   frpc &lt;span class="nt"&gt;-c&lt;/span&gt; /etc/frp/frpc.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Test Connections&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Access the services exposed via the server's public IP on ports 6000 and 6001 to ensure they're correctly forwarded to the client's local services on ports 81 and 83, respectively.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  3. Setting Up as a Systemd Service
&lt;/h2&gt;

&lt;p&gt;To ensure that FRP starts on boot and can be managed easily, set up both &lt;code&gt;frps&lt;/code&gt; and &lt;code&gt;frpc&lt;/code&gt; as systemd services.&lt;/p&gt;

&lt;h3&gt;
  
  
  On the Server
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Copy binary and config file to required places&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo cp &lt;/span&gt;frp_0.61.1_linux_amd64/frps /usr/local/bin/
&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /etc/frp
&lt;span class="nb"&gt;sudo cp &lt;/span&gt;frp_0.61.1_linux_amd64/frps.toml /etc/frp/
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create Systemd Service File for &lt;code&gt;frps&lt;/code&gt;&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/systemd/system/frps.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the following content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;   &lt;span class="nn"&gt;[Unit]&lt;/span&gt;
   &lt;span class="py"&gt;Description&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;FRP Server Service&lt;/span&gt;
   &lt;span class="py"&gt;After&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;network.target&lt;/span&gt;

   &lt;span class="nn"&gt;[Service]&lt;/span&gt;
   &lt;span class="py"&gt;Type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;simple&lt;/span&gt;
   &lt;span class="py"&gt;ExecStart&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/usr/local/bin/frps -c /etc/frp/frps.toml&lt;/span&gt;
   &lt;span class="py"&gt;Restart&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;on-failure&lt;/span&gt;
   &lt;span class="py"&gt;RestartSec&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;5s&lt;/span&gt;

   &lt;span class="nn"&gt;[Install]&lt;/span&gt;
   &lt;span class="py"&gt;WantedBy&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;multi-user.target&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Reload Systemd and Start &lt;code&gt;frps&lt;/code&gt; Service&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl daemon-reload
   &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;frps
   &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start frps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Check Service Status&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status frps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  On the Client
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Copy binary and config file to required places&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo cp &lt;/span&gt;frp_0.61.1_linux_amd64/frpc /usr/local/bin/
&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /etc/frp
&lt;span class="nb"&gt;sudo cp &lt;/span&gt;frp_0.61.1_linux_amd64/frpc.toml /etc/frp/
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create Systemd Service File for &lt;code&gt;frpc&lt;/code&gt;&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/systemd/system/frpc.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the following content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;   &lt;span class="nn"&gt;[Unit]&lt;/span&gt;
   &lt;span class="py"&gt;Description&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;FRP Client Service&lt;/span&gt;
   &lt;span class="py"&gt;After&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;network.target&lt;/span&gt;

   &lt;span class="nn"&gt;[Service]&lt;/span&gt;
   &lt;span class="py"&gt;Type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;simple&lt;/span&gt;
   &lt;span class="py"&gt;ExecStart&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/usr/local/bin/frpc -c /etc/frp/frpc.toml&lt;/span&gt;
   &lt;span class="py"&gt;Restart&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;on-failure&lt;/span&gt;
   &lt;span class="py"&gt;RestartSec&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;5s&lt;/span&gt;

   &lt;span class="nn"&gt;[Install]&lt;/span&gt;
   &lt;span class="py"&gt;WantedBy&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;multi-user.target&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Reload Systemd and Start &lt;code&gt;frpc&lt;/code&gt; Service&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl daemon-reload
   &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;frpc
   &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start frpc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Check Service Status&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status frpc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By following these steps, you will have successfully set up FRP on both your server and client machines, allowing seamless access to services behind NAT or firewalls. &lt;/p&gt;

&lt;p&gt;Also after testing or setup up full you can then use Nginx proxy manager or any other reverse proxy on the server with public ip to add reverse proxy to the remote ports with the required domain etc. Note the hostname for a proxy should be entered as the server's internal ip or if not available then public ip because localhost/127.0.0.1 will not work.&lt;/p&gt;

</description>
      <category>networking</category>
      <category>network</category>
      <category>linux</category>
    </item>
    <item>
      <title>Learnt Next.JS in 1 week!! and here is GenAI Chat</title>
      <dc:creator>Abhishek Sinha</dc:creator>
      <pubDate>Wed, 06 Mar 2024 21:19:18 +0000</pubDate>
      <link>https://dev.to/abhisheksinha/learnt-nextjs-in-1-week-and-here-is-genai-chat-3gle</link>
      <guid>https://dev.to/abhisheksinha/learnt-nextjs-in-1-week-and-here-is-genai-chat-3gle</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/SP4RKiOP/genai-chatbot"&gt;GenAi Chat Repo Link&lt;/a&gt;&lt;br&gt;
Hello, fellow developers! I'm excited to introduce GenAI Chat, a cutting-edge AI chatbot that's been designed to surpass the functionality of ChatGPT, offering a seamless conversational experience. But what sets GenAI Chat apart? Let's dive in!&lt;/p&gt;

&lt;p&gt;🌟 Features&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI-Powered Chatbot: Utilizes advanced AI models for generating contextually relevant responses.&lt;/li&gt;
&lt;li&gt;Semantic Services: Enhances understanding and context in conversations.&lt;/li&gt;
&lt;li&gt;Kernel Memory Implementation: A key feature under development to improve chatbot memory and context retention.&lt;/li&gt;
&lt;li&gt;Localhost LLM Support: Planned enhancement to work with locally hosted language models.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🛠️ Technologies Used&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: .NET ASP Core Web API, LLM, Semantic Kernel, SignalR, WebSocket, MySQL, Azure OpenAI Models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: Next.js, TypeScript, Tailwind CSS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📚 Why GenAI Chat?&lt;/p&gt;

&lt;p&gt;While the project strives to be a perfect open-source clone of ChatGPT, it acknowledges the challenge of replicating the UI design and user experience perfectly. The project is driven by the desire to explore and understand the capabilities of AI chatbots, with a particular focus on semantic services and kernel memory implementation.&lt;/p&gt;

&lt;p&gt;📣 Share the Love&lt;/p&gt;

&lt;p&gt;If you find GenAI Chat useful, please give it a star on GitHub and share it with your network! Your support helps us continue to improve and expand the project.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>openai</category>
    </item>
  </channel>
</rss>
