PageSourceSearch

https://www.quietforgesoftware.com/products/

html quietforgesoftware.com collected 2026-10-02 01:40:09 UTC 19,666 bytes, 152 lines download raw bytes

1<!DOCTYPE html><html lang="en" class="no-js"> <head><!-- Google tag (gtag.js) -->
vendor: 63 bytes, line 1
1<script async src="https://www.googletagmanager.com/gtag/js?id=
1G-L42YFKQQX1
vendor: 11 bytes, line 1
1"></script>
1<script>
2      
vendor: 163 bytes, lines 2-8
2window.dataLayer = window.dataLayer || [];
3      function gtag() {
4        dataLayer.push(arguments);
5      }
6      gtag("js", new Date());
7
8      gtag("config", "
8G-L42YFKQQX1
vendor: 8 bytes, lines 8-9
8");
9    
9</script>
9<meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>Quiet Forge Software | Products | Websites, Apps, &amp; Games</title><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, user-scalable=yes"><meta name="description" content="The products I have built or am building. This includes websites, apps, extensions, games, and anything else that I have built or am actively dabbling in."><meta name="author" content="Dru Harrison"><link rel="shortcut icon" href="/favicon.svg"><link rel="sitemap" href="/sitemap-index.xml"><link rel="canonical" href="https://www.quietforgesoftware.com/products/"><link rel="alternate" href="https://www.quietforgesoftware.com/products/" hreflang="en"><link rel="alternate" href="https://www.quietforgesoftware.com/ja/products/" hreflang="ja"><link rel="alternate" href="https://www.quietforgesoftware.com/products/" hreflang="x-default">
9<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://www.quietforgesoftware.com/#website","url":"https://www.quietforgesoftware.com/","name":"Quiet Forge Software","description":"Building and Encouraging Others","publisher":{"@type":"Organization","@id":"https://www.quietforgesoftware.com/#organization"},"inLanguage":"en"},{"@type":"Organization","@id":"https://www.quietforgesoftware.com/#organization","name":"Quiet Forge Software LLC","url":"https://www.quietforgesoftware.com/","logo":"https://www.quietforgesoftware.com/favicon.svg","founder":{"@id":"https://www.quietforgesoftware.com/#person"},"knowsAbout":["Software Development","DevOps","Infrastructure as Code","Kubernetes","Terraform","Docker","Linux","C#","SwiftUI","JavaScript","SQL"],"sameAs":["https://www.linkedin.com/in/dru-harrison-2372b658/","https://x.com/QuietFSoftware","https://www.tiktok.com/@quietforgesoftwar"]},{"@type":"Person","@id":"https://www.quietforgesoftware.com/#person","name":"Dru Harrison","url":"https://www.quietforgesoftware.com/about/","jobTitle":"DevOps Engineer","alumniOf":{"@type":"CollegeOrUniversity","name":"Colorado School of Mines"},"worksFor":{"@id":"https://www.quietforgesoftware.com/#organization"},"knowsAbout":["Software Development","DevOps","Infrastructure as Code","Kubernetes","Terraform","Docker","Linux","C#","SwiftUI","JavaScript","SQL"],"skills":["Kubernetes","Terraform","Docker","Linux","NGINX","HAProxy","Prometheus","GitHub Actions","Azure DevOps","SwiftUI","C#","JavaScript","SQL"],"sameAs":["https://www.linkedin.com/in/dru-harrison-2372b658/","https://x.com/QuietFSoftware","https://www.tiktok.com/@quietforgesoftwar"]}]}</script>
9<link rel="stylesheet" href="/css/normalize.css" type="text/css" media="print" onload="this.media='all'"><link rel="stylesheet" href="/css/bootstrap.min.css" type="text/css" media="print" onload="this.media='all'"><link rel="stylesheet" href="/css/owl.carousel.css" type="text/css" media="print" onload="this.media='all'"><link rel="stylesheet" href="/css/magnific-popup.css" type="text/css" media="print" onload="this.media='all'"><link rel="stylesheet" href="/css/fonts/linear-icons-font/style.css" type="text/css" media="print" onload="this.media='all'"><link rel="stylesheet" href="/css/fonts/fontawesome-free-5.12.1-web/css/all.min.css" type="text/css"><link rel="stylesheet" href="/css/fonts/linecons/lineicons-free.css" type="text/css">
9<script src="/js/modernizr.custom.js"></script>
9<link rel="stylesheet" href="/_astro/main.CvQAF2X6.css"></head> <body class="page"> <div class="lm-animated-bg"></div> <!-- Loading animation --> <div class="preloader"> <div class="preloader-animation"> <div class="preloader-spinner"></div> </div> </div> <!-- /Loading animation --> <!-- Scroll To Top Button --> <div class="lmpixels-scroll-to-top"><i class="lnr lnr-chevron-up"></i></div> <!-- /Scroll To Top Button --> <div class="page-scroll"> <div id="page_container" class="page-container bg-move-effect" data-animation="transition-flip-in-right"> <!-- Header --> <header id="site_header" class="header"> <div class="header-content clearfix"> <div class="row"> <div class="col"> <!-- Text Logo --> <div class="text-logo"> <a href="/"> <div class="logo-symbol">QFS</div> <div class="logo-text">Quiet Forge Software</div> </a> </div> <!-- /Text Logo --> </div> <!-- language picker start --> <!-- <div class="col-auto ms-auto">
10      <div class="language-picker">
11        <form>
12          <label
13            for="lang-select"
14            style="margin-right:0.5rem; margin-left:0.5rem;">Language:</label
15          >
16          <select
17            id="lang-select"
18            onchange="
19                    let path = window.location.pathname
20                    if (this.value === 'ja' && !window.location.pathname.startsWith('/ja')) {
21                      path = '/ja' + path
22                      window.location.pathname = path
23                    }
24                    if (this.value === 'en' && window.location.pathname.startsWith('/ja/')) {
25                      path = path.slice(3)
26                      window.location.pathname = path;
27                    }
28                  "
29          >
30            <option value="en" selected={currentLocale === "en"}>English</option
31            >
32            <option value="ja" selected={currentLocale === "ja"}>日本語</option>
33          </select>
34        </form>
35      </div>
36    </div> --> <!--language picker end--> </div> <!-- Navigation --> <div class="site-nav mobile-menu-hide"> <ul class="leven-classic-menu site-main-menu"> <li class="menu-item"> <a href="/">Home</a> </li> <li class="menu-item"> <a href="/about/">About Me</a> </li> <li class="menu-item"> <a href="/resume/">Resume</a> </li> <li class="menu-item"> <a href="/services/">Services</a> </li> <li class="menu-item current-menu-item"> <a href="/products/">Products</a> </li> <li class="menu-item"> <a href="/articles/"> Articles</a> </li> <li class="menu-item"> <a href="/resources/"> Resources</a> </li> <li class="menu-item"> <a href="/tools/"> Tools</a> </li> <li class="menu-item"> <a href="/contact/"> Contact Me</a> </li> </ul> </div> <!-- Mobile Menu Toggle --> <a class="menu-toggle mobile-visible"> <i class="fa fa-bars"></i> </a> <!-- Mobile Menu Toggle --> </div> </header> <!-- /Header -->  
36<script type="application/ld+json">{"@context":"https://schema.org","@type":"CollectionPage","name":"Products","description":"The products I have built or am building. This includes websites, apps, extensions, games, and anything else that I have built or am actively dabbling in.","url":"https://www.quietforgesoftware.com/products/","mainEntity":{"@type":"ItemList"}}</script>
36 <div id="main" class="site-main"> <div id="main-content" class="single-page-content"> <div id="primary" class="content-area"> <div class="page-title"> <h1>Products</h1> <div class="page-subtitle"> <h4>My Products</h4> </div> </div> <div id="content" class="page-content site-content single-post" role="main"> <div class="row"> <div class=" col-xs-12 col-sm-12 "> <!-- Portfolio Content --> <div id="portfolio_content_q" class="portfolio-content"> <ul class="portfolio-filters"> <li class="active"> <a class="filter btn btn-sm btn-link" data-group="category_all">All</a> </li> <li> <a class="filter btn btn-sm btn-link" data-group="category_website">Websites</a> </li> <li> <a class="filter btn btn-sm btn-link" data-group="category_web_extension">Web Extensions</a> </li> <li> <a class="filter btn btn-sm btn-link" data-group="category_mobile_app">Mobile Apps</a> </li> </ul> <!-- Portfolio Grid --> <div class="portfolio-grid three-columns shuffle"> <!-- Portfolio Item 1 --> <figure class="item standard" data-groups="[&quot;category_all&quot;,&quot;category_website&quot;]"> <div class="portfolio-item-img"> <picture> <source srcset="/_astro/wheatridgeappliancerepair-01.C-CEDrG6_ZMQXbz.avif 360w, /_astro/wheatridgeappliancerepair-01.C-CEDrG6_Z1K47bU.avif 540w, /_astro/wheatridgeappliancerepair-01.C-CEDrG6_2mURBF.avif 720w" type="image/avif" sizes="(max-width: 767px) 100vw, 50vw"><source srcset="/_astro/wheatridgeappliancerepair-01.C-CEDrG6_2vRGkN.webp 360w, /_astro/wheatridgeappliancerepair-01.C-CEDrG6_1yFxks.webp 540w, /_astro/wheatridgeappliancerepair-01.C-CEDrG6_Btok7.webp 720w" type="image/webp" sizes="(max-width: 767px) 100vw, 50vw">  <img src="/_astro/wheatridgeappliancerepair-01.C-CEDrG6_Z1axgPY.jpg" srcset="/_astro/wheatridgeappliancerepair-01.C-CEDrG6_ATaVI.jpg 360w, /_astro/wheatridgeappliancerepair-01.C-CEDrG6_ZlhX3C.jpg 540w, /_astro/wheatridgeappliancerepair-01.C-CEDrG6_Z1iu73X.jpg 720w" alt="Wheat Ridge Appliance Repair" title="Wheat Ridge Appliance Repair" sizes="(max-width: 767px) 100vw, 50vw" loading="eager" fetchpriority="high" decoding="async" width="2750" height="1518"> </picture> <a href="/Products/wheatridgeappliancerepair/" class="ajax-page-load" data-ajax-url="/Products/ajax/wheatridgeappliancerepair/"></a> </div>  <i class="far fa-file-alt"></i> <h4 class="name">WheatRidge Appliance Repair</h4> <span class="category">Websites</span>  </figure> <!-- /Portfolio Item 1 --> <figure class="item standard" data-groups="[&quot;category_all&quot;,&quot;category_web_extension&quot;]"> <div class="portfolio-item-img"> <picture> <source srcset="/_astro/social-balance-overlay-healthy.O7a9izrX_2v70he.avif 360w, /_astro/social-balance-overlay-healthy.O7a9izrX_tIl4p.avif 512w" type="image/avif" sizes="(max-width: 767px) 100vw, 50vw"><source srcset="/_astro/social-balance-overlay-healthy.O7a9izrX_JEvYF.webp 360w, /_astro/social-balance-overlay-healthy.O7a9izrX_Z1gI8d9.webp 512w" type="image/webp" sizes="(max-width: 767px) 100vw, 50vw">  <img src="/_astro/social-balance-overlay-healthy.O7a9izrX_qt5rf.png" srcset="/_astro/social-balance-overlay-healthy.O7a9izrX_2rQJE4.png 360w, /_astro/social-balance-overlay-healthy.O7a9izrX_qt5rf.png 512w" alt="Social Balance health bar at the bottom of x.com" title="Social Balance" sizes="(max-width: 767px) 100vw, 50vw" loading="eager" fetchpriority="high" decoding="async" width="512" height="308"> </picture> <a href="/Products/socialbalance/" class="ajax-page-load" data-ajax-url="/Products/ajax/socialbalance/"></a> </div>  <i class="far fa-file-alt"></i> <h4 class="name">Social Balance</h4> <span class="category">Web Extensions</span>  </figure> <figure class="item standard" data-groups="[&quot;category_all&quot;,&quot;category_mobile_app&quot;]"> <div class="portfolio-item-img"> <picture> <source srcset="/_astro/make-me-workout-icon.CEp_cZ2h_1BzErU.avif 360w, /_astro/make-me-workout-icon.CEp_cZ2h_1UNmcS.avif 512w" type="image/avif" sizes="(max-width: 767px) 100vw, 50vw"><source srcset="/_astro/make-me-workout-icon.CEp_cZ2h_Z2k10H4.webp 360w, /_astro/make-me-workout-icon.CEp_cZ2h_Z20MiW6.webp 512w" type="image/webp" sizes="(max-width: 767px) 100v
36w, 50vw">  <img src="/_astro/make-me-workout-icon.CEp_cZ2h_ZP8WCE.png" srcset="/_astro/make-me-workout-icon.CEp_cZ2h_Z19mEnC.png 360w, /_astro/make-me-workout-icon.CEp_cZ2h_ZP8WCE.png 512w" alt="Make Me Workout app interface" title="Make Me Workout" sizes="(max-width: 767px) 100vw, 50vw" loading="eager" fetchpriority="high" decoding="async" width="512" height="512"> </picture> <a href="/Products/makemeworkout/" class="ajax-page-load" data-ajax-url="/Products/ajax/makemeworkout/"></a> </div>  <i class="far fa-file-alt"></i> <h4 class="name">Make Me Workout</h4> <span class="category">Mobile Apps</span>  </figure> <!--                         
37                        <ProductCard
38                          groups={["category_all", "category_video", "category_youtube-video"]}
39                          imageSrc="./img/portfolio/2.jpg"
40                          imageAlt="YouTube Video 2"
41                          imageTitle=""
42                          isInternalLink={false}
43                          linkUrl="https://www.youtube.com/embed/F-1weFCiYBA"
44                          linkClassName="lightbox mfp-iframe"
45                          linkTitle="YouTube Video 2"
46                          figureClassName="item lbvideo"
47                        >
48                          <i class="fab fa-youtube"></i>
49                          <h4 class="name">YouTube Video 2</h4>
50                          <span class="category">Video, YouTube Video</span>
51                        </ProductCard>
52                        <ProductCard
53                          groups={["category_all", "category_image"]}
54                          imageSrc="./img/portfolio/3.jpg"
55                          imageAlt="Image 2"
56                          imageTitle=""
57                          isInternalLink={false}
58                          linkUrl="./img/portfolio/full/3.jpg"
59                          linkClassName="lightbox"
60                          linkTitle="Image 2"
61                          figureClassName="item lbimage"
62                        >
63                          <i class="fa fa-image"></i>
64                          <h4 class="name">Image 2</h4>
65                          <span class="category">Image</span>
66                        </ProductCard>
67                        <ProductCard
68                          groups={["category_all", "category_soundcloud"]}
69                          imageSrc="./img/portfolio/4.jpg"
70                          imageAlt="SoundCloud Audio 1"
71                          imageTitle=""
72                          isInternalLink={false}
73                          linkUrl="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/221650664&#038;color=%23ff5500&#038;auto_play=false&#038;hide_related=false&#038;show_comments=true&#038;show_user=true&#038;show_reposts=false&#038;show_teaser=true&#038;visual=true"
74                          linkClassName="lightbox mfp-iframe"
75                          linkTitle="SoundCloud Audio 1"
76                          figureClassName="item lbaudio"
77                        >
78                          <i class="fas fa-volume-up"></i>
79                          <h4 class="name">SoundCloud Audio 1</h4>
80                          <span class="category">SoundCloud</span>
81                        </ProductCard>
82                        <ProductCard
83                          groups={["category_all", "category_video", "category_vimeo-video"]}
84                          imageSrc="./img/portfolio/5.jpg"
85                          imageAlt="Vimeo Video"
86                          imageTitle=""
87                          isInternalLink={false}
88                          linkUrl="https://player.vimeo.com/video/158284739"
89                          linkClassName="lightbox mfp-iframe"
90                          linkTitle="Vimeo Video"
91                          figureClassName="item lbvideo"
92                        >
93                          <i class="fab fa-vimeo-v"></i>
94                          <h4 class="name">Vimeo Video</h4>
95                          <span class="category">Video, Vimeo Video</span>
96                        </ProductCard>
97                        <ProductCard
98                          groups={["category_all", "category_video", "category_youtube-video"]}
99                          imageSrc="./img/portfolio/6.jpg"
100                          imageAlt="YouTube Video 1"
101                          imageTitle=""
102                          isInternalLink={false}
103                          linkUrl="https://www.youtube.com/embed/ZK8REu-8pGw"
104                          linkClassName="lightbox mfp-iframe"
105                          linkTitle="YouTube Video 1"
106                          figureClassName="item lbvideo"
107                        >
108                          <i class="fab fa-youtube"></i>
109                          <h4 class="name">YouTube Video 1</h4>
110                          <span class="category">Video, YouTube Video</span>
111                        </ProductCard>
112                        <ProductCard
113                          groups={["category_all", "category_detailed"]}
114                          imageSrc="./img/portfolio/7.jpg"
115                          imageAlt="Full Project 1"
116                          imageTitle=""
117                          isInternalLink={true}
118                          linkUrl="portfolio-project-1.html"
119                          figureClassName="item standard"
120                        >
121                          <i class="far fa-file-alt"></i>
122                          <h4 class="name">Full Project 1</h4>
123                          <span class="category">Detailed</span>
124                        </ProductCard>
125                        <ProductCard
126                          groups={["category_all", "category_direct-url"]}
127                          imageSrc="./img/portfolio/8.jpg"
128                          imageAlt="Direct URL"
129                          imageTitle=""
130                          isInternalLink={false}
131                          linkUrl="https://themeforest.net/user/lmpixels/portfolio"
132                          figureClassName="item direct"
133                        >
134                          <i class="fa fa-link"></i>
135                          <h4 class="name">Direct URL</h4>
136                          <span class="category">Direct URL</span>
137                        </ProductCard>
138                        <ProductCard
139                          groups={["category_all", "category_image"]}
140                          imageSrc="./img/portfolio/9.jpg"
141                          imageAlt="Image 1"
142                          imageTitle=""
143                          isInternalLink={false}
144                          linkUrl="./img/portfolio/full/5.jpg"
145                          linkClassName="lightbox"
146                          linkTitle="Image 1"
147                          figureClassName="item lbimage"
148                        >
149                          <i class="fa fa-image"></i>
150                          <h4 class="name">Image 1</h4>
151                          <span class="category">Image</span>
152                        </ProductCard> --> </div> <!-- /Portfolio Content --> </div> </div> </div> </div> </div> </div> </div>  <!-- Footer --> <footer class="site-footer clearfix"> <div class="footer-social"> <ul class="footer-social-links"> <li> <a href="https://www.linkedin.com/in/dru-harrison-2372b658/" target="_blank" rel="noopener noreferrer nofollow">LinkedIn</a> </li> <li> <a href="https://x.com/QuietFSoftware" target="_blank" rel="noopener noreferrer nofollow">X</a> </li> <li> <a href="https://www.instagram.com/quietforgesoftware/" target="_blank" rel="noopener noreferrer nofollow">Instagram</a> </li> <li> <a href="https://www.tiktok.com/@quietforgesoftwar" target="_blank" rel="noopener noreferrer nofollow">TikTok</a> </li> </ul> </div> <div class="footer-copyrights"> <p>© 2026 All rights reserved.</p> </div> </footer> <!-- /Footer --> </div> </div> 
152<script src="/js/jquery-3.5.1.min.js" defer></script>
152 
152<script src="/js/imagesloaded.pkgd.min.js" defer></script>
152 
152<script src="/js/bootstrap.bundle.min.js" defer></script>
152 
152<script src="/js/jquery.shuffle.min.js" defer></script>
152 
152<script src="/js/masonry.pkgd.min.js" defer></script>
152 
152<script src="/js/owl.carousel.min.js" defer></script>
152 
152<script src="/js/jquery.magnific-popup.min.js" defer></script>
152 
152<script src="/js/validator.js" defer></script>
152 
152<script type="module" src="/_astro/BaseLayout.astro_astro_type_script_index_0_lang.Ch3MZQiG.js"></script>
152 </body> </html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.