<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://www.fkylewright.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.fkylewright.com/" rel="alternate" type="text/html" /><updated>2026-01-01T17:31:06-06:00</updated><id>https://www.fkylewright.com/feed.xml</id><title type="html">fkylewright.com</title><subtitle>A somewhat eclectic mix of technical posts and travel stuff from @fkylewright</subtitle><entry><title type="html">Search &amp;amp; Self-Service App</title><link href="https://www.fkylewright.com/search-and-self-service-app/" rel="alternate" type="text/html" title="Search &amp;amp; Self-Service App" /><published>2023-06-01T08:00:00-05:00</published><updated>2023-06-01T08:00:00-05:00</updated><id>https://www.fkylewright.com/search-and-self-service-app</id><content type="html" xml:base="https://www.fkylewright.com/search-and-self-service-app/"><![CDATA[<h2 id="description">Description</h2>

<p>An enterprise software search and self-service web application providing customized search, documentation, and automated end-user request tools. Included a conversational chatbot to better connect with customers via frequently asked question and quick reference knowledge bases.</p>

<div class="portfolio-tech-stack-wrap">
  <iconify-icon icon="akar-icons:react-fill" style="color: #61dbfb;" title="React"></iconify-icon>
  <iconify-icon icon="logos:bootstrap" title="Bootstrap"></iconify-icon>
  <iconify-icon icon="vscode-icons:file-type-elastic" title="Elasticsearch"></iconify-icon>
  <iconify-icon icon="logos:logstash" title="Logstash"></iconify-icon>
  <iconify-icon icon="vscode-icons:file-type-sql" title="SQL database"></iconify-icon>
  <iconify-icon icon="cib:dot-net" style="color:#512bd4;" title=".NET APIs"></iconify-icon>
  <iconify-icon icon="cib:azure-devops" style="color:#008ad7;" title="Azure DevOps"></iconify-icon>
  <iconify-icon icon="simple-icons:chatbot" title="Chatbot (Azure Cognitive Services)"></iconify-icon>
</div>

<h2 id="screenshots">Screenshots</h2>

<div class="portfolio-img-wrap">
  <div class="row">
    <div class="column">
      <figure class="image">
  <img id="ImgDs1" src="/assets/images/portfolio/ds-home.png" srcset="/assets/images/portfolio/ds-home.png 1253w, /assets/images/portfolio/ds-home@0,5x.png 627w" sizes="(max-width: 600px) 480px, 800px" alt="&quot;Discover Software&quot; intranet web app" class="portfolio-img hover-shadow" />
  <figcaption>&quot;Discover Software&quot; intranet web app</figcaption>
</figure>

<!-- A modal for this image -->
<div id="ModalImgDs1" class="modal">
  <!-- Close button -->
  <span class="close" id="CloseImgDs1">&times;</span>
  <!-- Modal Content (image) -->
  <img class="modal-content" id="ImgDs1" src="/assets/images/portfolio/ds-home.png" alt="&quot;Discover Software&quot; intranet web app" />
  <!-- Modal Caption (text) -->
  <div class="modal-caption">&quot;Discover Software&quot; intranet web app</div>
</div>

<script type="text/javascript">
  document.getElementById("ImgDs1").onclick = function(){
    document.getElementById("ModalImgDs1").style.display = "block";
  }

  // When the user clicks on <span> (x), close the modal:
  document.addEventListener('keydown', (event) => {
    if (event.key === 'Escape')
      document.getElementById("ModalImgDs1").style.display = "none";
  })

  // When the user presses escape key in modal, close the modal:
  document.getElementById("CloseImgDs1").onclick = function() {
    document.getElementById("ModalImgDs1").style.display = "none";
  }
</script>

    </div>
    <div class="column">
      <figure class="image">
  <img id="ImgDs2" src="/assets/images/portfolio/ds-home-quickstatus.png" srcset="/assets/images/portfolio/ds-home-quickstatus.png 1241w, /assets/images/portfolio/ds-home-quickstatus@0,5x.png 621w" sizes="(max-width: 600px) 480px, 800px" alt="A &quot;Quick Status&quot; self-service tool" class="portfolio-img hover-shadow" />
  <figcaption>A &quot;Quick Status&quot; self-service tool</figcaption>
</figure>

<!-- A modal for this image -->
<div id="ModalImgDs2" class="modal">
  <!-- Close button -->
  <span class="close" id="CloseImgDs2">&times;</span>
  <!-- Modal Content (image) -->
  <img class="modal-content" id="ImgDs2" src="/assets/images/portfolio/ds-home-quickstatus.png" alt="A &quot;Quick Status&quot; self-service tool" />
  <!-- Modal Caption (text) -->
  <div class="modal-caption">A &quot;Quick Status&quot; self-service tool</div>
</div>

<script type="text/javascript">
  document.getElementById("ImgDs2").onclick = function(){
    document.getElementById("ModalImgDs2").style.display = "block";
  }

  // When the user clicks on <span> (x), close the modal:
  document.addEventListener('keydown', (event) => {
    if (event.key === 'Escape')
      document.getElementById("ModalImgDs2").style.display = "none";
  })

  // When the user presses escape key in modal, close the modal:
  document.getElementById("CloseImgDs2").onclick = function() {
    document.getElementById("ModalImgDs2").style.display = "none";
  }
</script>

    </div>
    <div class="column">
      <figure class="image">
  <img id="ImgDs3" src="/assets/images/portfolio/ds-results.png" srcset="/assets/images/portfolio/ds-results.png 1252w, /assets/images/portfolio/ds-results@0,5x.png 626w" sizes="(max-width: 600px) 480px, 800px" alt="&quot;Discover Software&quot; - search results" class="portfolio-img hover-shadow" />
  <figcaption>&quot;Discover Software&quot; - search results</figcaption>
</figure>

<!-- A modal for this image -->
<div id="ModalImgDs3" class="modal">
  <!-- Close button -->
  <span class="close" id="CloseImgDs3">&times;</span>
  <!-- Modal Content (image) -->
  <img class="modal-content" id="ImgDs3" src="/assets/images/portfolio/ds-results.png" alt="&quot;Discover Software&quot; - search results" />
  <!-- Modal Caption (text) -->
  <div class="modal-caption">&quot;Discover Software&quot; - search results</div>
</div>

<script type="text/javascript">
  document.getElementById("ImgDs3").onclick = function(){
    document.getElementById("ModalImgDs3").style.display = "block";
  }

  // When the user clicks on <span> (x), close the modal:
  document.addEventListener('keydown', (event) => {
    if (event.key === 'Escape')
      document.getElementById("ModalImgDs3").style.display = "none";
  })

  // When the user presses escape key in modal, close the modal:
  document.getElementById("CloseImgDs3").onclick = function() {
    document.getElementById("ModalImgDs3").style.display = "none";
  }
</script>

    </div>
    <div class="column">
      <figure class="image">
  <img id="ImgDs4" src="/assets/images/portfolio/ds-result-expanded.png" srcset="/assets/images/portfolio/ds-result-expanded.png 1234w, /assets/images/portfolio/ds-result-expanded@0,5x.png 617w" sizes="(max-width: 600px) 480px, 800px" alt="&quot;Discover Software&quot; - expanded search result with self-service options" class="portfolio-img hover-shadow" />
  <figcaption>&quot;Discover Software&quot; - expanded search result with self-service options</figcaption>
</figure>

<!-- A modal for this image -->
<div id="ModalImgDs4" class="modal">
  <!-- Close button -->
  <span class="close" id="CloseImgDs4">&times;</span>
  <!-- Modal Content (image) -->
  <img class="modal-content" id="ImgDs4" src="/assets/images/portfolio/ds-result-expanded.png" alt="&quot;Discover Software&quot; - expanded search result with self-service options" />
  <!-- Modal Caption (text) -->
  <div class="modal-caption">&quot;Discover Software&quot; - expanded search result with self-service options</div>
</div>

<script type="text/javascript">
  document.getElementById("ImgDs4").onclick = function(){
    document.getElementById("ModalImgDs4").style.display = "block";
  }

  // When the user clicks on <span> (x), close the modal:
  document.addEventListener('keydown', (event) => {
    if (event.key === 'Escape')
      document.getElementById("ModalImgDs4").style.display = "none";
  })

  // When the user presses escape key in modal, close the modal:
  document.getElementById("CloseImgDs4").onclick = function() {
    document.getElementById("ModalImgDs4").style.display = "none";
  }
</script>

    </div>
  </div>
</div>

<p><i class="fa-regular fa-circle-left"></i> <a href="/portfolio">Return to Portfolio</a></p>]]></content><author><name>kyle</name></author><category term="project" /><category term="portfolio" /><summary type="html"><![CDATA[An enterprise software search and self-service web application.]]></summary></entry><entry><title type="html">Process Forms, Dashboards, &amp;amp; Automation</title><link href="https://www.fkylewright.com/bpm-automation/" rel="alternate" type="text/html" title="Process Forms, Dashboards, &amp;amp; Automation" /><published>2023-05-01T08:00:00-05:00</published><updated>2023-05-01T08:00:00-05:00</updated><id>https://www.fkylewright.com/bpm-automation</id><content type="html" xml:base="https://www.fkylewright.com/bpm-automation/"><![CDATA[<h2 id="description">Description</h2>

<p>An intranet web application providing process management and workflows for IT teams that focus primarily on managing enterprise software (using Nintex K2, PowerShell, and .NET microservices). Creation and maintenance of a growing software certification database. Integration of business systems and 3rd party services via PowerShell and .NET, and automation of file management across multiple data stores.</p>

<div class="portfolio-tech-stack-wrap">
  <iconify-icon icon="akar-icons:html-fill" title="HTML"></iconify-icon>
  <iconify-icon icon="bxs:file-css" title="CSS"></iconify-icon>
  <iconify-icon icon="akar-icons:javascript-fill" title="JavaScript"></iconify-icon>
  <iconify-icon icon="vscode-icons:file-type-sql" title="SQL"></iconify-icon>
  <iconify-icon icon="flat-color-icons:workflow" title="Workflows"></iconify-icon>
  <iconify-icon icon="ant-design:api-filled" title="REST APIs"></iconify-icon>
  <iconify-icon icon="vscode-icons:file-type-powershell2" title="PowerShell"></iconify-icon>
</div>

<h2 id="screenshots">Screenshots</h2>

<div class="portfolio-img-wrap">
  <div class="row">
    <div class="column">
      <figure class="image">
  <img id="ImgSc1" src="/assets/images/portfolio/request-dashboard.png" srcset="/assets/images/portfolio/request-dashboard.png 1368w, /assets/images/portfolio/request-dashboard@0,5x.png 684w" sizes="(max-width: 600px) 480px, 800px" alt="Multi-tab team dashboard for managing work items" class="portfolio-img hover-shadow" />
  <figcaption>Multi-tab team dashboard for managing work items</figcaption>
</figure>

<!-- A modal for this image -->
<div id="ModalImgSc1" class="modal">
  <!-- Close button -->
  <span class="close" id="CloseImgSc1">&times;</span>
  <!-- Modal Content (image) -->
  <img class="modal-content" id="ImgSc1" src="/assets/images/portfolio/request-dashboard.png" alt="Multi-tab team dashboard for managing work items" />
  <!-- Modal Caption (text) -->
  <div class="modal-caption">Multi-tab team dashboard for managing work items</div>
</div>

<script type="text/javascript">
  document.getElementById("ImgSc1").onclick = function(){
    document.getElementById("ModalImgSc1").style.display = "block";
  }

  // When the user clicks on <span> (x), close the modal:
  document.addEventListener('keydown', (event) => {
    if (event.key === 'Escape')
      document.getElementById("ModalImgSc1").style.display = "none";
  })

  // When the user presses escape key in modal, close the modal:
  document.getElementById("CloseImgSc1").onclick = function() {
    document.getElementById("ModalImgSc1").style.display = "none";
  }
</script>

      </div>
      <div class="column">
      <figure class="image">
  <img id="ImgSc2" src="/assets/images/portfolio/request-form.png" srcset="/assets/images/portfolio/request-form.png 1139w, /assets/images/portfolio/request-form@0,5x.png 570w" sizes="(max-width: 600px) 480px, 800px" alt="Multi-tab process form for editing work items" class="portfolio-img hover-shadow" />
  <figcaption>Multi-tab process form for editing work items</figcaption>
</figure>

<!-- A modal for this image -->
<div id="ModalImgSc2" class="modal">
  <!-- Close button -->
  <span class="close" id="CloseImgSc2">&times;</span>
  <!-- Modal Content (image) -->
  <img class="modal-content" id="ImgSc2" src="/assets/images/portfolio/request-form.png" alt="Multi-tab process form for editing work items" />
  <!-- Modal Caption (text) -->
  <div class="modal-caption">Multi-tab process form for editing work items</div>
</div>

<script type="text/javascript">
  document.getElementById("ImgSc2").onclick = function(){
    document.getElementById("ModalImgSc2").style.display = "block";
  }

  // When the user clicks on <span> (x), close the modal:
  document.addEventListener('keydown', (event) => {
    if (event.key === 'Escape')
      document.getElementById("ModalImgSc2").style.display = "none";
  })

  // When the user presses escape key in modal, close the modal:
  document.getElementById("CloseImgSc2").onclick = function() {
    document.getElementById("ModalImgSc2").style.display = "none";
  }
</script>

    </div>
  </div>
</div>

<p><i class="fa-regular fa-circle-left"></i> <a href="/portfolio">Return to Portfolio</a></p>]]></content><author><name>kyle</name></author><category term="project" /><category term="portfolio" /><summary type="html"><![CDATA[An intranet web application providing process management and workflows for IT teams.]]></summary></entry></feed>