<?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: John Revis </title>
    <description>The latest articles on Forem by John Revis  (@revis047).</description>
    <link>https://forem.com/revis047</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%2F1418678%2F7ce27046-6e8b-451f-8e1f-c99d4c52cb5d.png</url>
      <title>Forem: John Revis </title>
      <link>https://forem.com/revis047</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/revis047"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>John Revis </dc:creator>
      <pubDate>Sun, 19 Oct 2025 23:32:59 +0000</pubDate>
      <link>https://forem.com/revis047/-341c</link>
      <guid>https://forem.com/revis047/-341c</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/revis047" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F1418678%2F7ce27046-6e8b-451f-8e1f-c99d4c52cb5d.png" alt="revis047"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/revis047/visit-rwanda-a-beautiful-travel-companion-app-built-with-react-native-428b" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Visit Rwanda — A Beautiful Travel Companion App Built with React Native&lt;/h2&gt;
      &lt;h3&gt;John Revis  ・ Oct 19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#reactnative&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#software&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#android&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>reactnative</category>
      <category>software</category>
      <category>android</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Visit Rwanda — A Beautiful Travel Companion App Built with React Native</title>
      <dc:creator>John Revis </dc:creator>
      <pubDate>Sun, 19 Oct 2025 23:26:10 +0000</pubDate>
      <link>https://forem.com/revis047/visit-rwanda-a-beautiful-travel-companion-app-built-with-react-native-428b</link>
      <guid>https://forem.com/revis047/visit-rwanda-a-beautiful-travel-companion-app-built-with-react-native-428b</guid>
      <description>&lt;p&gt;Visit Rwanda is a mobile travel app built using React Native that helps users explore Rwanda’s most iconic destinations — from the majestic volcanoes and national parks to cultural treasures and vibrant city life.&lt;/p&gt;

&lt;p&gt;Whether you're planning your first trip to Rwanda or exploring hidden gems locally, this app makes discovering attractions, reading descriptions, and planning adventures seamless and visually appealing.&lt;/p&gt;

&lt;p&gt;🧭 Features&lt;/p&gt;

&lt;p&gt;🗺️ Browse categories like Mountains, Parks, Tradition, and City Life&lt;/p&gt;

&lt;p&gt;📍 Discover destinations with beautiful photos and detailed information&lt;/p&gt;

&lt;p&gt;🌤️ View details such as distance, duration, weather, and price&lt;/p&gt;

&lt;p&gt;🎨 Elegant, responsive UI built with Tailwind (NativeWind)&lt;/p&gt;

&lt;p&gt;⚙️ Fully cross-platform using React Native and Expo&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%2F3kte2ingi9i6ullklfg0.jpeg" 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%2F3kte2ingi9i6ullklfg0.jpeg" alt=" " width="486" height="1080"&gt;&lt;/a&gt;&lt;br&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%2Fiwph21lbeily8bj7ws2m.jpeg" 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%2Fiwph21lbeily8bj7ws2m.jpeg" alt=" " width="486" height="1080"&gt;&lt;/a&gt;&lt;br&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%2Fk6upzke4wshg8v1ibw30.jpeg" 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%2Fk6upzke4wshg8v1ibw30.jpeg" alt=" " width="486" height="1080"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🧑‍💻 Tech Stack&lt;/p&gt;

&lt;p&gt;React Native (Expo Framework)&lt;/p&gt;

&lt;p&gt;NativeWind (TailwindCSS for React Native)&lt;/p&gt;

&lt;p&gt;React Navigation&lt;/p&gt;

&lt;p&gt;Responsive Screen (react-native-responsive-screen)&lt;/p&gt;

&lt;p&gt;Linear Gradient from Expo&lt;/p&gt;

&lt;p&gt;🚀 Installation&lt;/p&gt;

&lt;p&gt;To run the project locally:&lt;/p&gt;

&lt;h1&gt;
  
  
  Clone the repository
&lt;/h1&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/Revis047/VisitRwanda-mobileApp.git" rel="noopener noreferrer"&gt;https://github.com/Revis047/VisitRwanda-mobileApp.git&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Navigate into the project
&lt;/h1&gt;

&lt;p&gt;cd VisitRwanda-mobileApp&lt;/p&gt;

&lt;h1&gt;
  
  
  Install dependencies
&lt;/h1&gt;

&lt;p&gt;npm install&lt;/p&gt;

&lt;h1&gt;
  
  
  Run on Expo
&lt;/h1&gt;

&lt;p&gt;npm start&lt;/p&gt;

&lt;p&gt;Then, scan the QR code using the Expo Go app on your phone to preview the app instantly.&lt;/p&gt;

&lt;p&gt;🏞️ About the App&lt;/p&gt;

&lt;p&gt;Rwanda, known as the Land of a Thousand Hills, is home to breathtaking landscapes, cultural heritage, and rich wildlife.&lt;br&gt;
The Visit Rwanda App was built to celebrate these experiences and make exploration easier for travelers — both locals and visitors alike.&lt;/p&gt;

&lt;p&gt;🧠 Lessons Learned&lt;/p&gt;

&lt;p&gt;While building this app, I improved my understanding of:&lt;/p&gt;

&lt;p&gt;Structuring a React Native app with reusable components&lt;/p&gt;

&lt;p&gt;Designing responsive layouts for mobile devices&lt;/p&gt;

&lt;p&gt;Using Expo LinearGradient and NativeWind for UI polish&lt;/p&gt;

&lt;p&gt;Managing image assets and navigation between screens&lt;/p&gt;

&lt;p&gt;🔗 Repository&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Revis047/VisitRwanda-mobileApp" rel="noopener noreferrer"&gt;👉 Visit Rwanda on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you like it, don’t forget to ⭐ star the repo and share your feedback!&lt;/p&gt;

&lt;p&gt;💬 Final Thoughts&lt;/p&gt;

&lt;p&gt;Building Visit Rwanda has been an amazing learning experience. I wanted to create something that reflects the beauty, culture, and adventure that Rwanda offers.&lt;/p&gt;

&lt;p&gt;Stay tuned for upcoming updates — including Google Maps integration, user favorites, and offline mode for travelers on the go!&lt;/p&gt;

&lt;p&gt;✉️ Let’s Connect&lt;/p&gt;

&lt;p&gt;🐙 GitHub: &lt;a class="mentioned-user" href="https://dev.to/revis047"&gt;@revis047&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💼 Email: &lt;a href="mailto:johnrevis5@gmail.com"&gt;johnrevis5@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📝 Dev.to: &lt;a class="mentioned-user" href="https://dev.to/revis047"&gt;@revis047&lt;/a&gt; &lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>software</category>
      <category>android</category>
      <category>showdev</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>John Revis </dc:creator>
      <pubDate>Thu, 11 Sep 2025 08:37:34 +0000</pubDate>
      <link>https://forem.com/revis047/-17am</link>
      <guid>https://forem.com/revis047/-17am</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/revis047/zkvote-the-invisible-ballot-that-could-unite-the-world-3p5m" class="crayons-story__hidden-navigation-link"&gt;ZKVote: The Invisible Ballot That Could Unite the World.&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/revis047/zkvote-the-invisible-ballot-that-could-unite-the-world-3p5m" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Midnight Network Challenge: Protect That Data&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/revis047" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F1418678%2F7ce27046-6e8b-451f-8e1f-c99d4c52cb5d.png" alt="revis047 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/revis047" class="crayons-story__secondary fw-medium m:hidden"&gt;
              John Revis 
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                John Revis 
                
              
              &lt;div id="story-author-preview-content-2816903" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/revis047" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F1418678%2F7ce27046-6e8b-451f-8e1f-c99d4c52cb5d.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;John Revis &lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/revis047/zkvote-the-invisible-ballot-that-could-unite-the-world-3p5m" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 3 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/revis047/zkvote-the-invisible-ballot-that-could-unite-the-world-3p5m" id="article-link-2816903"&gt;
          ZKVote: The Invisible Ballot That Could Unite the World.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/midnightchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;midnightchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/web3"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;web3&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/blockchain"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;blockchain&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/revis047/zkvote-the-invisible-ballot-that-could-unite-the-world-3p5m" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;29&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/revis047/zkvote-the-invisible-ballot-that-could-unite-the-world-3p5m#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              3&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

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

&lt;/div&gt;


</description>
      <category>devchallenge</category>
      <category>midnightchallenge</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Cracking the Midnight Code: Simplifying Wallets &amp; Supercharging ZK Development</title>
      <dc:creator>John Revis </dc:creator>
      <pubDate>Thu, 04 Sep 2025 18:37:18 +0000</pubDate>
      <link>https://forem.com/revis047/cracking-the-midnight-code-one-dashboard-to-build-test-deploy-zk-apps-46nk</link>
      <guid>https://forem.com/revis047/cracking-the-midnight-code-one-dashboard-to-build-test-deploy-zk-apps-46nk</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/midnight-2025-08-20"&gt;Midnight Network "Privacy First" Challenge&lt;/a&gt; - Enhance the Ecosystem prompt&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built the Midnight DevX Dashboard, an open-source developer productivity suite designed to make it easier and faster for developers to build on the Midnight blockchain.&lt;/p&gt;

&lt;p&gt;It combines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A React + Tailwind dashboard with a block explorer, wallet connector, and ZK playground.&lt;/li&gt;
&lt;li&gt;A Node.js CLI tool (midnight-cli) for scaffolding, deploying, and testing dApps.&lt;/li&gt;
&lt;li&gt;Comprehensive documentation with tutorials and code snippets.
Example starter projects (e.g., ZK Hello World, ZK Voting dApp).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This all-in-one toolkit solves the problem of fragmented developer workflows by providing everything in one place, boosting adoption and productivity for builders on Midnight.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/Revis047/Midnight-Devx-Dashboard" rel="noopener noreferrer"&gt;Midnight Devx Github repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://midnight-devx-dashboard.netlify.app/" rel="noopener noreferrer"&gt;Live Demo 🌐&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%2Fxbtltd5936ebitwbmvtj.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%2Fxbtltd5936ebitwbmvtj.PNG" alt=" " width="800" height="400"&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%2F72a0v2xxkooipoa4x8ff.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%2F72a0v2xxkooipoa4x8ff.PNG" alt=" " width="800" height="399"&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%2Fwga5y2h9350r99x01svg.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%2Fwga5y2h9350r99x01svg.PNG" alt=" " width="800" height="398"&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%2Fs8cdhy5qq4mvmk8uv1lk.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%2Fs8cdhy5qq4mvmk8uv1lk.PNG" alt=" " width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Midnight's Technology
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Integrated the Midnight SDK to connect the dashboard and CLI with the network.&lt;/li&gt;
&lt;li&gt;Used Midnight’s zero-knowledge primitives in the Playground editor to allow developers to write and test ZK circuits directly in the browser.&lt;/li&gt;
&lt;li&gt;Leveraged wallet APIs to enable a Connect Wallet feature for dApps.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Developer Experience Improvements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;One-stop developer hub → explorer, wallet, playground, and docs in a single UI.&lt;/li&gt;
&lt;li&gt;Fast onboarding → midnight init my-dapp scaffolds a project in seconds.&lt;/li&gt;
&lt;li&gt;Better debugging → Block Explorer Lite provides readable transaction and proof data.&lt;/li&gt;
&lt;li&gt;Learning by doing → Example ZK projects and tutorials included.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This dramatically reduces friction and makes building on Midnight as smooth as building on mainstream blockchain platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set Up Instructions / Tutorial
&lt;/h2&gt;

&lt;p&gt;Prerequisites:&lt;/p&gt;

&lt;p&gt;Node.js 20+&lt;br&gt;
pnpm (recommended)&lt;br&gt;
Install and run:&lt;/p&gt;

&lt;p&gt;pnpm install&lt;br&gt;
pnpm dev&lt;br&gt;
Open &lt;a href="http://localhost:8080" rel="noopener noreferrer"&gt;http://localhost:8080&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Useful scripts:&lt;/p&gt;

&lt;p&gt;pnpm build       # Build client and server&lt;br&gt;
pnpm start       # Run built server&lt;br&gt;
pnpm typecheck   # TS check&lt;br&gt;
pnpm test        # Vitest&lt;br&gt;
pnpm midnight    # Run CLI (see below)&lt;br&gt;
Environment variables (optional):&lt;/p&gt;

&lt;p&gt;VITE_MIDNIGHT_RPC – future real RPC endpoint if you switch Explorer/Wallet to live chain calls.&lt;br&gt;
CLI: midnight&lt;br&gt;
pnpm midnight init my-dapp    # scaffold a starter dApp (vite react template)&lt;br&gt;
pnpm midnight deploy          # demo deploy (placeholder)&lt;br&gt;
pnpm midnight test            # demo unit tests (placeholder)&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>midnightchallenge</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>John Revis </dc:creator>
      <pubDate>Wed, 03 Sep 2025 12:31:05 +0000</pubDate>
      <link>https://forem.com/revis047/-349p</link>
      <guid>https://forem.com/revis047/-349p</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/revis047" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F1418678%2F7ce27046-6e8b-451f-8e1f-c99d4c52cb5d.png" alt="revis047"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/revis047/zkvote-the-invisible-ballot-that-could-unite-the-world-3p5m" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;ZKVote: The Invisible Ballot That Could Unite the World.&lt;/h2&gt;
      &lt;h3&gt;John Revis  ・ Sep 3&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#devchallenge&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#midnightchallenge&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#web3&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#blockchain&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>devchallenge</category>
      <category>midnightchallenge</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>ZKVote: The Invisible Ballot That Could Unite the World.</title>
      <dc:creator>John Revis </dc:creator>
      <pubDate>Wed, 03 Sep 2025 12:18:43 +0000</pubDate>
      <link>https://forem.com/revis047/zkvote-the-invisible-ballot-that-could-unite-the-world-3p5m</link>
      <guid>https://forem.com/revis047/zkvote-the-invisible-ballot-that-could-unite-the-world-3p5m</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/midnight-2025-08-20"&gt;Midnight Network "Privacy First" Challenge&lt;/a&gt; - Protect That Data prompt&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;ZKVote is a decentralized voting DApp that empowers global citizens to anonymously vote on humanity’s next big innovation priority — from climate tech to ethical AI. Built on the Midnight Network, it uses zero-knowledge proofs to verify voter eligibility without revealing identity, ensuring privacy and trust in every vote.&lt;/p&gt;

&lt;p&gt;The app solves a critical problem: how can we enable global participation in decision-making without compromising personal data or exposing individuals to surveillance, bias, or retaliation?&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/Revis047/ZKVOTE" rel="noopener noreferrer"&gt;ZKVote Repo 👉&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%2Fughmq9ahjprt5vfgin63.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%2Fughmq9ahjprt5vfgin63.PNG" alt=" " width="800" height="400"&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%2F2i8dagipuche0p4c9eod.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%2F2i8dagipuche0p4c9eod.PNG" alt=" " width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Voting dashboard with animated innovation cards&lt;/li&gt;
&lt;li&gt;ZK proof submission interface&lt;/li&gt;
&lt;li&gt;Real-time global results heatmap
“Your vote has been encrypted” confirmation modal&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I Used Midnight's Technology
&lt;/h2&gt;

&lt;p&gt;ZKVote is built using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MidnightJS for smart contract logic and blockchain interactions&lt;/li&gt;
&lt;li&gt;Compact language to define zero-knowledge circuits for voter eligibility&lt;/li&gt;
&lt;li&gt;Mocked tokens to simulate unique voter credentials&lt;/li&gt;
&lt;li&gt;Privacy-preserving smart contracts that store encrypted votes and prevent double voting using nullifiers&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Data Protection as a Core Feature
&lt;/h2&gt;

&lt;p&gt;Privacy isn’t a layer — it’s the foundation. ZKVote ensures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No personal data is ever stored or exposed&lt;/li&gt;
&lt;li&gt;Voter identity is never linked to vote content&lt;/li&gt;
&lt;li&gt;One vote per user is enforced using ZK nullifiers&lt;/li&gt;
&lt;li&gt;All votes are encrypted and stored on-chain in a format that’s publicly auditable but completely anonymous
This design allows people to vote freely, especially on sensitive global topics, without fear of surveillance or profiling.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Set Up Instructions / Tutorial
&lt;/h2&gt;

&lt;p&gt;🧪 Prerequisites&lt;br&gt;
Node.js v18+&lt;/p&gt;

&lt;p&gt;MidnightJS SDK installed&lt;/p&gt;

&lt;p&gt;Compact compiler configured &lt;br&gt;
⚙️ Installation&lt;br&gt;
git clone &lt;a href="https://github.com/Revis047/ZKVOTE" rel="noopener noreferrer"&gt;https://github.com/Revis047/ZKVOTE&lt;/a&gt;&lt;br&gt;
cd ZKVOTE&lt;br&gt;
npm install&lt;br&gt;
npm run dev&lt;/p&gt;

&lt;p&gt;Quick tutorial:&lt;/p&gt;

&lt;p&gt;Click “Generate ZK Credential” → button switches to “Credential Ready”.&lt;br&gt;
Tap a card to cast your encrypted vote → success dialog → “View Live Results”.&lt;br&gt;
If you try again, you’ll see “Already voted”; use Results for tallies and regional breakdown.&lt;/p&gt;

&lt;p&gt;Solo submission by &lt;a class="mentioned-user" href="https://dev.to/revis047"&gt;@revis047&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>midnightchallenge</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>game changer</title>
      <dc:creator>John Revis </dc:creator>
      <pubDate>Sun, 31 Aug 2025 18:42:09 +0000</pubDate>
      <link>https://forem.com/revis047/game-changer-2ad7</link>
      <guid>https://forem.com/revis047/game-changer-2ad7</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/revis047/stop-scrolling-this-ai-agent-delivers-the-news-whats-next-2ea6" class="crayons-story__hidden-navigation-link"&gt;The Future of Decision-Making: AI Agent That Predicts Trends &amp;amp; Profits&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/revis047/stop-scrolling-this-ai-agent-delivers-the-news-whats-next-2ea6" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;n8n and Bright Challenge: Unstoppable Workflow&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/revis047" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F1418678%2F7ce27046-6e8b-451f-8e1f-c99d4c52cb5d.png" alt="revis047 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/revis047" class="crayons-story__secondary fw-medium m:hidden"&gt;
              John Revis 
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                John Revis 
                
              
              &lt;div id="story-author-preview-content-2811185" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/revis047" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F1418678%2F7ce27046-6e8b-451f-8e1f-c99d4c52cb5d.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;John Revis &lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/revis047/stop-scrolling-this-ai-agent-delivers-the-news-whats-next-2ea6" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 31 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/revis047/stop-scrolling-this-ai-agent-delivers-the-news-whats-next-2ea6" id="article-link-2811185"&gt;
          The Future of Decision-Making: AI Agent That Predicts Trends &amp;amp; Profits
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/n8nbrightdatachallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;n8nbrightdatachallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/revis047/stop-scrolling-this-ai-agent-delivers-the-news-whats-next-2ea6" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;23&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/revis047/stop-scrolling-this-ai-agent-delivers-the-news-whats-next-2ea6#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              6&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

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

&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>n8nbrightdatachallenge</category>
      <category>devchallenge</category>
      <category>ai</category>
    </item>
    <item>
      <title>The Future of Decision-Making: AI Agent That Predicts Trends &amp; Profits</title>
      <dc:creator>John Revis </dc:creator>
      <pubDate>Sun, 31 Aug 2025 18:04:24 +0000</pubDate>
      <link>https://forem.com/revis047/stop-scrolling-this-ai-agent-delivers-the-news-whats-next-2ea6</link>
      <guid>https://forem.com/revis047/stop-scrolling-this-ai-agent-delivers-the-news-whats-next-2ea6</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/brightdata-n8n-2025-08-13"&gt;AI Agents Challenge powered by n8n and Bright Data&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built an AI-powered Intelligence Agent using n8n that transforms raw news into executive-ready reports.&lt;/p&gt;

&lt;p&gt;The agent automatically:&lt;/p&gt;

&lt;p&gt;Collects breaking news data&lt;/p&gt;

&lt;p&gt;Extracts facts, trends, and predictions&lt;/p&gt;

&lt;p&gt;Analyzes tone and sentiment&lt;/p&gt;

&lt;p&gt;Generates business suggestions (clients, income potential, global expansion strategy)&lt;/p&gt;

&lt;p&gt;Highlights convincing points for decision-makers&lt;/p&gt;

&lt;p&gt;This helps entrepreneurs, analysts, and executives save time by getting instant insights from complex information.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="http://localhost:5678/webhook/4028275b-92d8-4df2-9a19-940ca4bb3937/chat" rel="noopener noreferrer"&gt;SantomaAi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📊 Example Intel Report Output:&lt;/p&gt;

&lt;p&gt;📊 Intel Report&lt;br&gt;
━━━━━━━━━━━━━━━━━━━━━━━&lt;/p&gt;

&lt;p&gt;📝 Facts&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;New Mexico lawmakers propose legalizing medicinal 'magic mushrooms'.&lt;/li&gt;
&lt;li&gt;Colorado issues licenses to psychedelic mushroom therapy facilitators.&lt;/li&gt;
&lt;li&gt;Experts warn of mental health risks due to rising use.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;📈 Trend&lt;br&gt;
Legalization of psilocybin across the US and globally.&lt;/p&gt;

&lt;p&gt;🔮 Prediction&lt;br&gt;
Mainstream integration of psilocybin therapy in medicine.&lt;/p&gt;

&lt;p&gt;🎙️ Tone&lt;br&gt;
Executive briefing.&lt;/p&gt;

&lt;p&gt;💡 Business Suggestions&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Psilocybin Therapy Center&lt;/li&gt;
&lt;li&gt;Psychedelic Education Services&lt;/li&gt;
&lt;li&gt;Mushroom-Based Packaging Production&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;💡 Convincing Points&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Early entry advantage in a booming industry
&lt;/li&gt;
&lt;li&gt;Growing consumer demand for natural products
&lt;/li&gt;
&lt;li&gt;Educational opportunities in mental health &amp;amp; wellness
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  n8n Workflow
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/Revis047/Santoma-Intelligence-Platform" rel="noopener noreferrer"&gt;👉 Santoma Intelligence n8n Workflow &lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Implementation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Platform: n8n (self-hosted via Docker)&lt;/li&gt;
&lt;li&gt;Trigger: Webhook node (chat-style interface)&lt;/li&gt;
&lt;li&gt;Data: News / content input&lt;/li&gt;
&lt;li&gt;Processing:&lt;/li&gt;
&lt;li&gt;AI Model (OpenAI GPT) → extracts facts, trends, predictions&lt;/li&gt;
&lt;li&gt;Sentiment analysis → executive tone adjustment&lt;/li&gt;
&lt;li&gt;Structured response formatting with emojis + sections&lt;/li&gt;
&lt;li&gt;Output: Instant Intel Report in Markdown/Chat format&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Bright Data Verified Node
&lt;/h3&gt;

&lt;p&gt;Bright Data was used to collect fresh, verified data sources to feed into the AI agent.&lt;br&gt;
This ensures reports are fact-based and up-to-date, not just static prompts.&lt;/p&gt;

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

&lt;p&gt;Building this agent was both exciting and challenging:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🚧 Challenge: Formatting AI output into consistent sections.&lt;/li&gt;
&lt;li&gt;💡 Solution: I structured the prompts and applied clear headers (Facts, Trend, Prediction, Tone, Suggestions).&lt;/li&gt;
&lt;li&gt;🚧 Challenge: Webhook was only accessible locally.&lt;/li&gt;
&lt;li&gt;💡 Solution: Planning to expose with ngrok for testing, and later deploy permanently on a VPS.&lt;/li&gt;
&lt;li&gt;🚧 Challenge: Making reports business-actionable, not just text.&lt;/li&gt;
&lt;li&gt;💡 Solution: Added income models, client targets, and expansion strategies in the output.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I learned how powerful n8n + Bright Data + AI can be for building custom intelligence systems without writing full apps.&lt;/p&gt;

&lt;p&gt;✨ This project shows how automation + AI can turn scattered data into insightful, ready-to-use intelligence for entrepreneurs and decision-makers.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>n8nbrightdatachallenge</category>
      <category>devchallenge</category>
      <category>ai</category>
    </item>
    <item>
      <title>MERN APP</title>
      <dc:creator>John Revis </dc:creator>
      <pubDate>Fri, 04 Jul 2025 15:31:06 +0000</pubDate>
      <link>https://forem.com/revis047/mern-app-17ae</link>
      <guid>https://forem.com/revis047/mern-app-17ae</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/revis047" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F1418678%2F7ce27046-6e8b-451f-8e1f-c99d4c52cb5d.png" alt="revis047"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/revis047/from-zero-to-chat-my-journey-building-a-mern-app-and-yours-can-be-too-38ia" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;From Zero to Chat: My Journey Building a MERN App (and Yours Can Be Too!)&lt;/h2&gt;
      &lt;h3&gt;John Revis  ・ Jul 4&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#opensource&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>javascript</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>From Zero to Chat: My Journey Building a MERN App (and Yours Can Be Too!)</title>
      <dc:creator>John Revis </dc:creator>
      <pubDate>Fri, 04 Jul 2025 15:28:42 +0000</pubDate>
      <link>https://forem.com/revis047/from-zero-to-chat-my-journey-building-a-mern-app-and-yours-can-be-too-38ia</link>
      <guid>https://forem.com/revis047/from-zero-to-chat-my-journey-building-a-mern-app-and-yours-can-be-too-38ia</guid>
      <description>&lt;h2&gt;
  
  
  Hey developers! 👋
&lt;/h2&gt;

&lt;p&gt;I'm excited to share a project I just finished — a &lt;strong&gt;real-time chat application&lt;/strong&gt; built using the &lt;strong&gt;MERN stack&lt;/strong&gt;, complete with messaging, image sharing, theme switching, emoji support, and more!&lt;/p&gt;

&lt;p&gt;Whether you're into full-stack development or just looking to explore a real-world example of React + Node + Socket.IO, I hope this inspires you.&lt;/p&gt;




&lt;h3&gt;
  
  
  🚀 Source Code
&lt;/h3&gt;

&lt;h2&gt;
  
  
  📦 &lt;strong&gt;GitHub Repo&lt;/strong&gt;: &lt;a href="https://github.com/Revis047/Chat-App.git" rel="noopener noreferrer"&gt;see the repository&lt;/a&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  🔧 Tech Stack
&lt;/h2&gt;

&lt;p&gt;Here’s what powers the app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React.js, Tailwind CSS, DaisyUI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State Management&lt;/strong&gt;: Zustand (super clean global state)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Node.js, Express.js, MongoDB (Mongoose)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentication&lt;/strong&gt;: JWT + bcrypt&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-Time Messaging&lt;/strong&gt;: Socket.IO&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image Uploads&lt;/strong&gt;: Cloudinary&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Requests&lt;/strong&gt;: Axios&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✨ Features
&lt;/h2&gt;

&lt;p&gt;✅ &lt;strong&gt;JWT Auth &amp;amp; Protected Routes&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Send, Edit, and Delete Messages&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Image Upload &amp;amp; Display&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Emoji Support&lt;/strong&gt; via emoji picker&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Light/Dark Mode&lt;/strong&gt; toggle&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;User Profile Update&lt;/strong&gt; (name, avatar)&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Clean UI&lt;/strong&gt; using TailwindCSS + DaisyUI.&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 Why I Built This ?
&lt;/h2&gt;

&lt;p&gt;I wanted to level up my MERN stack skills and build something real-time, full-featured, and user-friendly. Chat apps are perfect for learning:&lt;/p&gt;

&lt;p&gt;WebSocket events (with Socket.IO)&lt;/p&gt;

&lt;p&gt;File uploads and handling via Cloudinary&lt;/p&gt;

&lt;p&gt;Global state (with Zustand, instead of Redux)&lt;/p&gt;

&lt;p&gt;Tailwind UI design + theming&lt;/p&gt;

&lt;p&gt;Handling JWT securely on frontend + backend&lt;/p&gt;

&lt;p&gt;It also helped me learn how to make my code more modular and scalable.&lt;/p&gt;

&lt;h2&gt;
  
  
  **
&lt;/h2&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%2Fjmnak9pk01jr6ltzt85c.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%2Fjmnak9pk01jr6ltzt85c.PNG" alt=" " width="800" height="400"&gt;&lt;/a&gt;**&lt;/p&gt;

&lt;p&gt;chat-app/&lt;br&gt;
├── backend/   # Express, MongoDB, Auth, Socket.IO&lt;br&gt;
└── frontend/  # React, Zustand, Tailwind, DaisyUI&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 What I Learned
&lt;/h2&gt;

&lt;p&gt;**&lt;br&gt;
Managing socket connections for multiple users&lt;/p&gt;

&lt;p&gt;JWT token storage &amp;amp; protection on the client&lt;/p&gt;

&lt;p&gt;Zustand’s simplicity over Redux for global state&lt;/p&gt;

&lt;p&gt;Theming UI with Tailwind + DaisyUI&lt;/p&gt;

&lt;p&gt;Uploading images securely and displaying them in chat.&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  💬 Want to Collaborate or Feedback?
&lt;/h2&gt;

&lt;p&gt;**&lt;br&gt;
I’m open to feedback, feature requests, or even PRs if you’d like to contribute! Just drop a comment or message me.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Revis047/Chat-App" rel="noopener noreferrer"&gt;👉 GitHub Repo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>From Zero to Chat: My Journey Building a MERN App (and Yours Can Be Too!)</title>
      <dc:creator>John Revis </dc:creator>
      <pubDate>Fri, 04 Jul 2025 15:21:59 +0000</pubDate>
      <link>https://forem.com/revis047/from-zero-to-chat-my-journey-building-a-mern-app-and-yours-can-be-too-44jo</link>
      <guid>https://forem.com/revis047/from-zero-to-chat-my-journey-building-a-mern-app-and-yours-can-be-too-44jo</guid>
      <description>&lt;h2&gt;
  
  
  Hey developers! 👋
&lt;/h2&gt;

&lt;p&gt;I'm excited to share a project I just finished — a &lt;strong&gt;real-time chat application&lt;/strong&gt; built using the &lt;strong&gt;MERN stack&lt;/strong&gt;, complete with messaging, image sharing, theme switching, emoji support, and more!&lt;/p&gt;

&lt;p&gt;Whether you're into full-stack development or just looking to explore a real-world example of React + Node + Socket.IO, I hope this inspires you.&lt;/p&gt;




&lt;h3&gt;
  
  
  🚀 Source Code
&lt;/h3&gt;

&lt;h2&gt;
  
  
  📦 &lt;strong&gt;GitHub Repo&lt;/strong&gt;: &lt;a href="https://github.com/Revis047/Chat-App.git" rel="noopener noreferrer"&gt;see the repository&lt;/a&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  🔧 Tech Stack
&lt;/h2&gt;

&lt;p&gt;Here’s what powers the app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React.js, Tailwind CSS, DaisyUI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State Management&lt;/strong&gt;: Zustand (super clean global state)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Node.js, Express.js, MongoDB (Mongoose)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentication&lt;/strong&gt;: JWT + bcrypt&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-Time Messaging&lt;/strong&gt;: Socket.IO&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image Uploads&lt;/strong&gt;: Cloudinary&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Requests&lt;/strong&gt;: Axios&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✨ Features
&lt;/h2&gt;

&lt;p&gt;✅ &lt;strong&gt;JWT Auth &amp;amp; Protected Routes&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Send, Edit, and Delete Messages&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Image Upload &amp;amp; Display&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Emoji Support&lt;/strong&gt; via emoji picker&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Light/Dark Mode&lt;/strong&gt; toggle&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;User Profile Update&lt;/strong&gt; (name, avatar)&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Clean UI&lt;/strong&gt; using TailwindCSS + DaisyUI.&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 Why I Built This ?
&lt;/h2&gt;

&lt;p&gt;I wanted to level up my MERN stack skills and build something real-time, full-featured, and user-friendly. Chat apps are perfect for learning:&lt;/p&gt;

&lt;p&gt;WebSocket events (with Socket.IO)&lt;/p&gt;

&lt;p&gt;File uploads and handling via Cloudinary&lt;/p&gt;

&lt;p&gt;Global state (with Zustand, instead of Redux)&lt;/p&gt;

&lt;p&gt;Tailwind UI design + theming&lt;/p&gt;

&lt;p&gt;Handling JWT securely on frontend + backend&lt;/p&gt;

&lt;p&gt;It also helped me learn how to make my code more modular and scalable.&lt;/p&gt;

&lt;h2&gt;
  
  
  **
&lt;/h2&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%2Fjmnak9pk01jr6ltzt85c.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%2Fjmnak9pk01jr6ltzt85c.PNG" alt=" " width="800" height="400"&gt;&lt;/a&gt;**&lt;/p&gt;

&lt;p&gt;chat-app/&lt;br&gt;
├── backend/   # Express, MongoDB, Auth, Socket.IO&lt;br&gt;
└── frontend/  # React, Zustand, Tailwind, DaisyUI&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 What I Learned
&lt;/h2&gt;

&lt;p&gt;**&lt;br&gt;
Managing socket connections for multiple users&lt;/p&gt;

&lt;p&gt;JWT token storage &amp;amp; protection on the client&lt;/p&gt;

&lt;p&gt;Zustand’s simplicity over Redux for global state&lt;/p&gt;

&lt;p&gt;Theming UI with Tailwind + DaisyUI&lt;/p&gt;

&lt;p&gt;Uploading images securely and displaying them in chat.&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  💬 Want to Collaborate or Feedback?
&lt;/h2&gt;

&lt;p&gt;**&lt;br&gt;
I’m open to feedback, feature requests, or even PRs if you’d like to contribute! Just drop a comment or message me.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Revis047/Chat-App" rel="noopener noreferrer"&gt;👉 GitHub Repo&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%2Feo31zwcfucl0rjt7yik8.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%2Feo31zwcfucl0rjt7yik8.PNG" alt=" " width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
