<?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>Forem: Captain jay</title>
    <description>The latest articles on Forem by Captain jay (@captain0jay).</description>
    <link>https://forem.com/captain0jay</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%2F1358727%2F78c54cd1-744c-4613-ab84-014a4db05194.png</url>
      <title>Forem: Captain jay</title>
      <link>https://forem.com/captain0jay</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/captain0jay"/>
    <language>en</language>
    <item>
      <title>Hault - launch ai customer support with a click</title>
      <dc:creator>Captain jay</dc:creator>
      <pubDate>Mon, 24 Jun 2024 06:47:33 +0000</pubDate>
      <link>https://forem.com/captain0jay/hault-launch-ai-customer-support-with-a-click-3ba0</link>
      <guid>https://forem.com/captain0jay/hault-launch-ai-customer-support-with-a-click-3ba0</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/twilio"&gt;Twilio Challenge &lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Hault is an open-source software that helps connect database that contains information about your business and FAQs that help you automate customer support using AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The project is mainly a WhatsApp bot which you can scroll down and host via one click deploy on render by pressing &lt;code&gt;Deploy on render&lt;/code&gt; and the user can talk to the application via WhatsApp to whatever number you have configured on twilio.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In my case,  you can check the bot out right now by messaging me at (+13476958493)&lt;br&gt;
Since the number is blocked because of WhatsApp verification problem you can check the website out and try the project to do so you will need to log in via Google and you will need to ask the admin permission via email at &lt;code&gt;capja778@gmail.com&lt;/code&gt;&lt;br&gt;
then head over to &lt;a href="https://hault.vercel.app/login" rel="noopener noreferrer"&gt;https://hault.vercel.app/login&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I keep it as raw as possible so that the people using this project find it easy to host and edit the website too.&lt;br&gt;
Here are some of the screenshots of the application&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Ft0xttju45xarjo611ub5.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%2Ft0xttju45xarjo611ub5.png" alt="Screenshot 1" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&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%2Fbafl9zcf0aewv38jgyt7.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%2Fbafl9zcf0aewv38jgyt7.png" alt="Screenshot 2" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&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%2F34k6o41pondm9mebb4g3.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%2F34k6o41pondm9mebb4g3.png" alt="Screenshot 3" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to host the software for your business?
&lt;/h2&gt;

&lt;p&gt;:1. First get the following authentication token and api keys from the following services&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Gemini API key&lt;/li&gt;
&lt;li&gt;Airtable account Table id, base id, api key&lt;/li&gt;
&lt;li&gt;Twilio account sid , phone number and auth token&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;well actually i added 2 AI servuce that is gemini and workers ai which can be switched using LLM variable set to either GEMINIAI or WORKERAI.But for ease we will use gemini ai for now.&lt;/p&gt;

&lt;p&gt;Same for database plan was to in corporate Mongodb too but we are only gonna use Airtable for now so set UI as AIRTABLE&lt;/p&gt;

&lt;p&gt;For twilio you will need to create a whatsapp sender by purchasing a number, then create a service there you will choose the number, then in integration section choose webhook and add the call back url as &lt;/p&gt;

&lt;p&gt;&lt;code&gt;your_url+/api/v1/twilio/message&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;in status add &lt;/p&gt;

&lt;p&gt;&lt;code&gt;your_url+/api/v1/twilio/status&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;we will get the url after deployment&lt;/p&gt;

&lt;p&gt;So overall you will need these values&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LLM=GEMINIAI
UI=AIRTABLE
OWNER_EMAIL
OWNER_PHONE_NUMBER
TWILIO_PHONE_NUMBER
TWILIO_ACCOUNT_SID
TWILIO_AUTH_TOKEN
AIRTABLE_TABLE_ID
AIRTABLE_BASE_ID
AIRTABLE_API_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Let everything else stay empty or add "123" as a dummy value when inputting in the deployment.&lt;/p&gt;

&lt;p&gt;:2. Go to my repo &lt;a href="https://github.com/captain0jay/Hault" rel="noopener noreferrer"&gt;https://github.com/captain0jay/Hault&lt;/a&gt;&lt;br&gt;
and click the deploy on render button&lt;/p&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%2Fm5xj8oopm7vimp6yzilu.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%2Fm5xj8oopm7vimp6yzilu.png" alt="Image description" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;:3. Then you will be redirected to render website where the values we got will be inputted &lt;/p&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%2Fj6d4n937rxgkv7zophq0.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%2Fj6d4n937rxgkv7zophq0.png" alt="Image description" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;:4. Then just press launch button and your application will be live and your customers can start messaging and take the benefit of AI customer support&lt;/p&gt;

&lt;p&gt;:5. One last step as we discussed earlier that in console.twilio.com -&amp;gt; messaging -&amp;gt; service -&amp;gt; your_created_service -&amp;gt; integration &lt;/p&gt;

&lt;p&gt;the call back url as &lt;/p&gt;

&lt;p&gt;&lt;code&gt;your_url+/api/v1/twilio/message&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;in status add &lt;/p&gt;

&lt;p&gt;&lt;code&gt;your_url+/api/v1/twilio/status&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;here add your_url as the one that you got in hosted application see below image as reference&lt;/li&gt;
&lt;/ul&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%2Fw5x7qfgktyex2j620kln.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%2Fw5x7qfgktyex2j620kln.png" alt="Image description" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;So you can check the bot out right now by messaging at (+13476958493) and ask about Hault that is the project itself.&lt;br&gt;
Since the number is blocked because of whatsapp verification problem you can check the website out and try the project to do so you will need to login via Google and you will need to ask the admin permission via email at &lt;code&gt;capja778@gmail.com&lt;/code&gt;&lt;br&gt;
then head over to &lt;a href="https://hault.vercel.app/login" rel="noopener noreferrer"&gt;https://hault.vercel.app/login&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Below is the repo&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/captain0jay" rel="noopener noreferrer"&gt;
        captain0jay
      &lt;/a&gt; / &lt;a href="https://github.com/captain0jay/Hault" rel="noopener noreferrer"&gt;
        Hault
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Hault is an AI-powered platform designed for businesses and professionals to easily showcase their products and services using AI. With intuitive database management and seamless WhatsApp integration, Hault enhances customer engagement and automates support using advanced AI technologies like Gemini and Workers AI.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;br&gt;
&lt;div&gt;
  &lt;a href="https://github.com/captain0jay/Hault" rel="noopener noreferrer"&gt;
    &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fcaptain0jay%2FHault%2Fmain%2Fproject%2Flogo%2Fanimated%2Fbreathe%2FHault_logo.gif" alt="Logo" width="80" height="80"&gt;
  &lt;/a&gt;
  &lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Hault&lt;/h3&gt;
&lt;/div&gt;


&lt;p&gt;&lt;br&gt;
    AI Customer support and buisness launch software&lt;br&gt;
    &lt;br&gt;&lt;br&gt;
    &lt;a href="https://github.com/captain0jay/Hault" rel="noopener noreferrer"&gt;&lt;strong&gt;Host it online&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
    &lt;br&gt;&lt;br&gt;
    &lt;br&gt;&lt;br&gt;
    &lt;a href="https://github.com/captain0jay/Hault/Tutorials/Installation.md" rel="noopener noreferrer"&gt;Install locally&lt;/a&gt;&lt;br&gt;
    ·&lt;br&gt;
    &lt;a href="https://github.com/captain0jay/Hault/issues/new?labels=enhancement&amp;amp;template=feature-request---.md" rel="noopener noreferrer"&gt;Request Feature&lt;/a&gt;&lt;br&gt;
  &lt;/p&gt;
&lt;br&gt;
  &lt;div&gt;
&lt;br&gt;
  &lt;a href="https://github.com/captain0jay/Hault/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/bfdb50123e77997a67d12c81e014cd402bbd2cb8f9bbdf5730c589568c735dd4/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6361707461696e306a61792f4861756c74" alt="Stars Badge"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/captain0jay/Hault/network/members" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/33e01b4fbe3ea3ece01b7e25f1c353517878faf4f860000fa3a739afbfdf3b29/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f6361707461696e306a61792f4861756c74" alt="Forks Badge"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/captain0jay/Hault/pulls" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6e17d501d4ebd687e9528bd7b979bca3ba5e650b2fdd295951c99bd203d22def/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732d70722f6361707461696e306a61792f4861756c74" alt="Pull Requests Badge"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/captain0jay/Hault/issues" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/74a610b0316f705bc580278a0a9be3c752caa8c6b71941851a9901bb296bbb8f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f6361707461696e306a61792f4861756c74" alt="Issues Badge"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/captain0jay/Hault/graphs/contributors" rel="noopener noreferrer"&gt;&lt;img alt="GitHub contributors" src="https://camo.githubusercontent.com/5cb4ca966f54a597aaa3d7b89caf58214c42a2efef284afb5f4f2231aaf59de0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f6361707461696e306a61792f4861756c743f636f6c6f723d326239333438"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/captain0jay/Hault/blob/master/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/446df987f3e6bdcd2634003fb19aa0aa88bfd734c2904d12e2560ff91fbb22e7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6361707461696e306a61792f4861756c743f636f6c6f723d326239333438" alt="License Badge"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/div&gt;

&lt;div&gt;
&lt;/div&gt;


&lt;/div&gt;


  Table of Contents
  &lt;ol&gt;
    &lt;li&gt;&lt;a href="https://github.com/captain0jay/Hault#introduction" rel="noopener noreferrer"&gt;Introduction&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;
      &lt;a href="https://github.com/captain0jay/Hault#about-the-project" rel="noopener noreferrer"&gt;About The Project&lt;/a&gt;

    &lt;/li&gt;
    &lt;li&gt;
      &lt;a href="https://github.com/captain0jay/Hault#getting-started" rel="noopener noreferrer"&gt;Getting Started&lt;/a&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href="https://github.com/captain0jay/Hault#what-are-the-env-variables-we-need%0A" rel="noopener noreferrer"&gt;What are the env variables we need&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="https://github.com/captain0jay/Hault#options" rel="noopener noreferrer"&gt;Options&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
     &lt;li&gt;&lt;a href="https://github.com/captain0jay/Hault#demo" rel="noopener noreferrer"&gt;Demo&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;
&lt;a href="https://github.com/captain0jay/Hault#installation" rel="noopener noreferrer"&gt;Installation&lt;/a&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href="https://github.com/captain0jay/Hault#guide-to-direct-hosting-on-the-internet" rel="noopener noreferrer"&gt;Guide to Direct hosting on the internet&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="https://github.com/captain0jay/Hault#local-installation" rel="noopener noreferrer"&gt;Local Installation&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://github.com/captain0jay/Hault#usage" rel="noopener noreferrer"&gt;Usage&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://github.com/captain0jay/Hault#roadmap" rel="noopener noreferrer"&gt;Roadmap&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://github.com/captain0jay/Hault#contributing" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://github.com/captain0jay/Hault#license" rel="noopener noreferrer"&gt;License&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://github.com/captain0jay/Hault#contact" rel="noopener noreferrer"&gt;Contact&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;


&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Introduction&lt;/h2&gt;

&lt;/div&gt;


&lt;ul&gt;

&lt;li&gt;

&lt;p&gt;The project is mainly a WhatsApp bot which you can scroll down and host via one click deploy on render by pressing &lt;code&gt;Deploy on render&lt;/code&gt; and the user can talk to the application via WhatsApp to whatever number you have configured on twilio.&lt;/p&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;In my case,  you can check the bot out right now by messaging me at (+13476958493)
Since the number is blocked because of WhatsApp verification problem you can check the website out and try the project to do so you will need to log in via Google and you will need to ask the admin permission via…&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/captain0jay/Hault" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Tech stack
&lt;/h2&gt;

&lt;p&gt;For backend - Nodejs&lt;br&gt;
For frontend - Nextjs, Shadcn&lt;br&gt;
Main services - Twilio&lt;br&gt;
AI - Gemini&lt;br&gt;
Database - Airtable&lt;/p&gt;
&lt;h2&gt;
  
  
  Twilio and AI
&lt;/h2&gt;



&lt;p&gt;Twilios whatsapp and SMS functionalities were very helpful in making the software as the code required is very minimal &lt;/p&gt;

&lt;p&gt;I connected airatble database and fetched the details from the database feeding it to Gemini AI and then final step was to give response back to twilio after webhook is called and all it took for twilio to connect is 5 lines of code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;router.post('/message', async (req, res) =&amp;gt; {

    const userMessage = req.body.Body || "hi";
    const twiml = new MessagingResponse();

    let response = await getChat(userMessage);


    twiml.message(response);
    res.type('text/xml').send(twiml.toString());
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Additional Prize Categories
&lt;/h2&gt;

&lt;p&gt;My submission qualifies for Twilio Times Two, Impactful Innovators&lt;/p&gt;

&lt;p&gt;Thanks for reading till the end :)&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>twiliochallenge</category>
      <category>ai</category>
      <category>twilio</category>
    </item>
    <item>
      <title>CF-assist - Visual smart assistant for visually impaired</title>
      <dc:creator>Captain jay</dc:creator>
      <pubDate>Mon, 15 Apr 2024 05:41:02 +0000</pubDate>
      <link>https://forem.com/captain0jay/cfassist-visual-smart-assistant-for-visually-impaired-1fm4</link>
      <guid>https://forem.com/captain0jay/cfassist-visual-smart-assistant-for-visually-impaired-1fm4</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/devteam/join-us-for-the-cloudflare-ai-challenge-3000-in-prizes-5f99"&gt;Cloudflare AI Challenge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;CF-assist is a visual assistant that helps visually impaired individuals get visual insights via the application with just a click and hold action. Users can hold and talk to the assistant, and it will help them understand what the image is. The image can be from their camera, constantly running when the app is open, or users can talk to the LLM via the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use
&lt;/h2&gt;

&lt;p&gt;There are 2 modes which can be toggled from the navbar:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Text mode&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Type and send to talk to LLM normally.&lt;/li&gt;
&lt;li&gt;Click an image by clicking the photo button, and the very next text you send can be about the image.&lt;/li&gt;
&lt;li&gt;Drag and drop or choose a file, then send the next text about the image to get insight.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CF-assist mode&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hold and speak, then leave after a short interval; the assistant will give you the result via audio. (Important: hold the line at the bottom or a few cm outside the area; that's the area where the application picks up a hold movement. The same goes for a click; click the line; it can detect a few cm off clicks too. A detailed video will be uploaded tonight.)&lt;/li&gt;
&lt;li&gt;Click and hold when the user wants to know what's happening in their background and get visual assist. First click the line, then hold the line, speak, and leave after a short time; the assistant will respond via audio.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  My Code
&lt;/h2&gt;

&lt;p&gt;Here is the GitHub code: &lt;a href="https://github.com/captain0jay/cfassisttesttwo" rel="noopener noreferrer"&gt;cfassisttesttwo&lt;/a&gt;&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Clone the repository:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &amp;lt;repository_url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Navigate to the project directory:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;cfassist
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install dependencies:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Navigate to the server directory:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;server
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install server dependencies:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Return to the project directory:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ..
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Start the development server:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Environment Variables
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Server:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create a &lt;code&gt;.env&lt;/code&gt; file in the &lt;code&gt;server&lt;/code&gt; directory.&lt;/li&gt;
&lt;li&gt;Obtain &lt;code&gt;CLOUDFLARE_API_TOKEN&lt;/code&gt; and &lt;code&gt;CLOUDFLARE_APP_ID&lt;/code&gt; from your Cloudflare account.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the following lines to the &lt;code&gt;.env&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;CLOUDFLARE_API_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;your_cloudflare_api_token&amp;gt;
&lt;span class="nv"&gt;CLOUDFLARE_APP_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;your_cloudflare_app_id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Client:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create a &lt;code&gt;.env&lt;/code&gt; file in the &lt;code&gt;cfassist&lt;/code&gt; directory.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Define &lt;code&gt;NEXT_PUBLIC_SERVER_URL&lt;/code&gt; with the server URL. For local development, use:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;NEXT_PUBLIC_SERVER_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:4000
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Ensure that all environment variables are correctly set before running the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;You can check the website right now&lt;br&gt;
&lt;a href="https://cfassisttesttwo.pages.dev/" rel="noopener noreferrer"&gt;cfassisttesttwo.pages.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(Disclaimer: While testing it on other devices and browser the permission of using sound doesn't seem to work well on mobile devices, for optimal experience of using cfassist mode on full potential I recommend using the website on only desktop devices or devices which gives more option on audio and camera permission without explicitly changing it)&lt;/p&gt;

&lt;p&gt;Meanwhile, you can look at the images of the running application:&lt;/p&gt;

&lt;ul&gt;
&lt;li&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%2Fvtkvkosetyel44uz2nfa.png" alt="Screenshot 1" width="800" height="432"&gt;&lt;/li&gt;
&lt;li&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%2Fvtkvkosetyel44uz2nfa.png" alt="Screenshot 2" width="800" height="432"&gt;&lt;/li&gt;
&lt;li&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%2Fnbfju60ib9l9kfkx47je.png" alt="Screenshot 3" width="800" height="432"&gt;&lt;/li&gt;
&lt;li&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%2Fb08oa4oub5ne7tfrfj3n.png" alt="Screenshot 4" width="800" height="432"&gt;&lt;/li&gt;
&lt;li&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%2Fc51i9facuoilya4ppcsz.png" alt="Screenshot 5" width="800" height="432"&gt;&lt;/li&gt;
&lt;li&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%2Fdt2qxhgozo37fcmlfliu.png" alt="Screenshot 6" width="800" height="432"&gt;&lt;/li&gt;
&lt;li&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%2Fcmcnavqyv298f43lyib5.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%2Fcmcnavqyv298f43lyib5.png" alt="Screenshot 7" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&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%2Fmrafsj5pmsat5t83tq02.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%2Fmrafsj5pmsat5t83tq02.png" alt="Screenshot 8" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;p&gt;I started this application using the Next.js framework as the base and TypeScript as the language of choice for both frontend and backend. The models I was particularly interested in for making my application are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Automatic speech recognition &lt;/li&gt;
&lt;li&gt;Image to text&lt;/li&gt;
&lt;li&gt;Text generation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For immediate speech-to-text service, I used browser transcribing service, which is faster as it runs on the user's device, but it is not as accurate as Cloudflare AI model. So, I used both, browser one for immediate transcribing and Cloudflare AI for final transcription. &lt;/p&gt;

&lt;p&gt;As of now, no login method is implemented, and it's free to use; everything is stored in local storage, ensuring the lowest latency.&lt;/p&gt;

&lt;p&gt;I made this application in such a way that it's easy for visually impaired individuals or people without any application knowledge to easily access the application; it's just click, hold, speak, and get visual assistance for anyone in need.&lt;/p&gt;

</description>
      <category>cloudflarechallenge</category>
      <category>devchallenge</category>
      <category>ai</category>
    </item>
    <item>
      <title>Glam up my markup challenge - Camp activities, how good could I possibly make it using just plain HTML, CSS, JS???</title>
      <dc:creator>Captain jay</dc:creator>
      <pubDate>Sun, 31 Mar 2024 18:15:38 +0000</pubDate>
      <link>https://forem.com/captain0jay/glam-up-my-markup-challenge-camp-activities-how-good-could-i-possibly-make-it-using-just-plain-html-css-js-pef</link>
      <guid>https://forem.com/captain0jay/glam-up-my-markup-challenge-camp-activities-how-good-could-i-possibly-make-it-using-just-plain-html-css-js-pef</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for DEV Challenge v24.03.20, Glam Up My Markup: Camp Activities&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built absolutely nothing and didn't even bother adding elements. Needless to say, I took the plain HTML template and challenged myself as to how good-looking can I possibly make the form.&lt;/p&gt;

&lt;p&gt;So I landed on the idea of making the form multipage using javascript without actually changing the HTML, which was completed made a changing image and colour background that together blends and transitions perfectly to make this amazing form...    &lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/captain0jay/embed/QWPOyoX?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;p&gt;Well it all started when I was little .... jk XD&lt;br&gt;
I learned how to manage my timing and do a project fast as I only had less than a day or so due to my examinations going on. &lt;/p&gt;

&lt;p&gt;Also I learnt a new way to make slides without touching the HTML itself so that was something.&lt;/p&gt;

&lt;p&gt;Building the animation on transition was also fun you can see it sliding when you press next or back really small detail but worth adding for my inner peace.&lt;/p&gt;

</description>
      <category>frontendchallenge</category>
      <category>devchallenge</category>
      <category>css</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
