Update to new format
This commit is contained in:
1
404.html
Normal file
1
404.html
Normal file
@@ -0,0 +1 @@
|
||||
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="icon" href="/acstech_favicon_angular_acs_v2.ico" sizes="any"><title>Oops! Not Found</title><link rel="stylesheet" href="/_astro/BaseLayout.CmXLcAZX.css"></head> <body class="bg-dark text-light d-flex flex-column min-vh-100"> <header id="site-header"> <nav class="navbar navbar-expand-md bg-body py-3" data-bs-theme="dark"> <div class="container"> <a class="navbar-brand d-flex align-items-center" href="/"> <span>ACSTechnology</span> </a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navcol-1" aria-controls="navcol-1" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navcol-1"> <ul class="navbar-nav ms-auto"> <li class="nav-item"><a class="nav-link" href="/about/">About</a></li> <li class="nav-item"><a class="nav-link" href="/blog/">The Lab</a></li> <li class="nav-item"><a class="nav-link" href="/projects/">Projects</a></li> <li class="nav-item"><a class="nav-link" href="/contact/">Contact</a></li> </ul> </div> </div> </nav> </header> <main> <section class="d-flex align-items-center justify-content-center" style="min-height: 60vh;"> <article class="bubble text-center" style="max-width: 700px; width: 100%;"> <h1>404</h1> <p><strong>Page not found</strong></p> <p>The page you requested could not be found. Let's get you back on track.</p> <p class="mb-0"> <a href="/" class="btn btn-primary">Go to the homepage</a> </p> </article> </section> </main> <footer id="site-footer" class="bg-body mt-auto" data-bs-theme="dark"> <div class="container py-4 py-lg-5"> <div class="row text-center text-md-start gy-4"> <!-- Column 1: Brand / Copyright --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start justify-content-center"> <p class="fw-semibold mb-1">ACSTechnology</p> <p class="text-body-secondary mb-0 small">Built with curiosity and caffeine</p> <p class="text-body-secondary mb-0 small">© 2026</p> </div> <!-- Column 2: Resources --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Resources</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/faq/">FAQ</a></li> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/privacy/">Privacy</a></li> <li><a class="link-body-emphasis text-decoration-none" href="/terms/">Terms</a></li> </ul> </div> <!-- Column 3: Development --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Development</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="text-decoration-none" href="https://git.acstech.dev">Gitea</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://github.com/ACSTechDev">GitHub</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://www.linkedin.com/company/acstechdev">LinkedIn (Company)</a></li> <li><a class="text-decoration-none" href="https://www.linkedin.com/in/andrew-chiang-so/">LinkedIn (Founder)</a></li> </ul> </div> </div> </div> </footer> <script type="module" src="/_astro/BaseLayout.astro_astro_type_script_index_0_lang.GtM1sxkV.js"></script> </body> </html>
|
||||
1
_astro/BaseLayout.CmXLcAZX.css
Normal file
1
_astro/BaseLayout.CmXLcAZX.css
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
9
_astro/client.Co8FFbOi.js
Normal file
9
_astro/client.Co8FFbOi.js
Normal file
File diff suppressed because one or more lines are too long
24
about/index.html
Normal file
24
about/index.html
Normal file
@@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="icon" href="/acstech_favicon_angular_acs_v2.ico" sizes="any"><title>About | ACSTechnology</title><link rel="stylesheet" href="/_astro/BaseLayout.CmXLcAZX.css"></head> <body class="bg-dark text-light d-flex flex-column min-vh-100"> <header id="site-header"> <nav class="navbar navbar-expand-md bg-body py-3" data-bs-theme="dark"> <div class="container"> <a class="navbar-brand d-flex align-items-center" href="/"> <span>ACSTechnology</span> </a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navcol-1" aria-controls="navcol-1" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navcol-1"> <ul class="navbar-nav ms-auto"> <li class="nav-item"><a class="nav-link" href="/about/">About</a></li> <li class="nav-item"><a class="nav-link" href="/blog/">The Lab</a></li> <li class="nav-item"><a class="nav-link" href="/projects/">Projects</a></li> <li class="nav-item"><a class="nav-link" href="/contact/">Contact</a></li> </ul> </div> </div> </nav> </header> <main> <article class="bubble bubble-left"> <h1>About ACSTechnology</h1> <p>
|
||||
ACSTechnology is a founder-led software business based in Southern California.
|
||||
I help small businesses and teams build custom software when off-the-shelf tools
|
||||
don’t quite fit — whether that’s internal tools, automations, or client-facing systems.
|
||||
</p> </article> <article class="bubble bubble-right"> <h2>What I Build</h2> <ul> <li>Custom web applications tailored to your workflow</li> <li>Backend APIs and system integrations</li> <li>Automation tools to reduce manual work</li> <li>AI-assisted tools for internal or client-facing use</li> </ul> </article> <article class="bubble bubble-left"> <h2>Who I Work With</h2> <ul> <li>Private organizations needing secure, domain-specific AI tools for internal workflows</li> <li>Small businesses outgrowing spreadsheets or manual processes</li> <li>Teams that need internal tools or automation</li> <li>Clients replacing or extending tools like Jotform, Airtable, or similar platforms</li> </ul> </article> <article class="bubble bubble-right"> <h2>What You Can Expect</h2> <ul> <li>Clear communication — no disappearing mid-project</li> <li>Practical solutions, not over-engineered systems</li> <li>Maintainable code you can work with after handoff</li> <li>A transparent and structured development process</li> </ul> </article> <article class="bubble bubble-left"> <h2>How I Work</h2> <p>
|
||||
I focus on building systems that solve real problems and remain maintainable long after launch.
|
||||
The goal isn’t just to ship software — it’s to build something you can rely on.
|
||||
</p> <p>
|
||||
Development happens in the open where it makes sense. Public work is mirrored on GitHub,
|
||||
while private projects are handled in a controlled, self-hosted environment to protect
|
||||
client data and maintain clear separation from public code.
|
||||
</p> </article> <article class="bubble bubble-right"> <h2>When I’m Not the Right Fit</h2> <p>
|
||||
If an off-the-shelf tool already solves your problem cleanly, I’ll usually recommend that instead.
|
||||
My work is best suited for cases where existing tools fall short, need to be extended,
|
||||
or don’t align well with your workflow.
|
||||
</p> </article> <article class="bubble bubble-left"> <h2>About Me</h2> <p>
|
||||
I'm Andrew, a developer focused on building practical, maintainable systems for real-world use.
|
||||
</p> <p>
|
||||
I started ACSTechnology to work directly with clients who need software that fits their workflow —
|
||||
not the other way around.
|
||||
</p> <p>
|
||||
I tend to work best with people who already understand their problem and want a reliable,
|
||||
long-term solution rather than a quick patch.
|
||||
</p> </article> </main> <footer id="site-footer" class="bg-body mt-auto" data-bs-theme="dark"> <div class="container py-4 py-lg-5"> <div class="row text-center text-md-start gy-4"> <!-- Column 1: Brand / Copyright --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start justify-content-center"> <p class="fw-semibold mb-1">ACSTechnology</p> <p class="text-body-secondary mb-0 small">Built with curiosity and caffeine</p> <p class="text-body-secondary mb-0 small">© 2026</p> </div> <!-- Column 2: Resources --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Resources</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/faq/">FAQ</a></li> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/privacy/">Privacy</a></li> <li><a class="link-body-emphasis text-decoration-none" href="/terms/">Terms</a></li> </ul> </div> <!-- Column 3: Development --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Development</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="text-decoration-none" href="https://git.acstech.dev">Gitea</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://github.com/ACSTechDev">GitHub</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://www.linkedin.com/company/acstechdev">LinkedIn (Company)</a></li> <li><a class="text-decoration-none" href="https://www.linkedin.com/in/andrew-chiang-so/">LinkedIn (Founder)</a></li> </ul> </div> </div> </div> </footer> <script type="module" src="/_astro/BaseLayout.astro_astro_type_script_index_0_lang.GtM1sxkV.js"></script> </body> </html>
|
||||
BIN
acstech_favicon_angular_acs_v2.ico
Normal file
BIN
acstech_favicon_angular_acs_v2.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 59 KiB |
11
blog/index.html
Normal file
11
blog/index.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="icon" href="/acstech_favicon_angular_acs_v2.ico" sizes="any"><title>ACS Technology Blog</title><link rel="stylesheet" href="/_astro/BaseLayout.CmXLcAZX.css">
|
||||
<style>.blog-hero{background:linear-gradient(135deg,#0d6efd,#6610f2);margin-bottom:2rem;padding-left:1rem;padding-right:1rem}.blog-meta{color:#ffffffc7}.blog-description{max-width:760px;color:#ffffffe6}.blog-article-wrap{max-width:900px;margin:0 auto;padding:0 1rem 3rem}.blog-article{background-color:#161b22;border:1px solid #30363d;border-radius:1.25rem;padding:2rem;color:#c9d1d9;line-height:1.75;box-shadow:0 8px 20px #00000059}.blog-article p{margin:1rem 0}.blog-article h2,.blog-article h3,.blog-article h4{margin-top:2rem;margin-bottom:1rem;color:#79c0ff}.blog-article a{color:#58a6ff}.blog-article pre{background:#0d1117;border:1px solid #30363d;border-radius:.75rem;padding:1rem;overflow-x:auto}.blog-article code{font-family:Consolas,Monaco,Courier New,monospace}.blog-article blockquote{margin:1.5rem 0;padding-left:1rem;border-left:3px solid #58a6ff;color:#e6edf3}.blog-article img{max-width:100%;height:auto;border-radius:.75rem}.blog-article ul,.blog-article ol{padding-left:1.5rem;margin:1rem 0}.blog-list-wrap{max-width:900px;margin:0 auto;padding:0 1rem 3rem}.blog-list-card{background-color:#161b22;border:1px solid #30363d;border-radius:1rem;padding:1.25rem 1.5rem;margin-bottom:1rem;box-shadow:0 6px 18px #00000040}.blog-list-card h2,.blog-list-card h3{margin-top:0;margin-bottom:.5rem}.blog-list-card p{margin-bottom:.5rem}.blog-list-meta{color:#8b949e;font-size:.95rem}@media(max-width:700px){.blog-article{padding:1.25rem}.blog-hero{padding-top:4rem;padding-bottom:3rem}}
|
||||
</style></head> <body class="bg-dark text-light d-flex flex-column min-vh-100"> <header id="site-header"> <nav class="navbar navbar-expand-md bg-body py-3" data-bs-theme="dark"> <div class="container"> <a class="navbar-brand d-flex align-items-center" href="/"> <span>ACSTechnology</span> </a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navcol-1" aria-controls="navcol-1" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navcol-1"> <ul class="navbar-nav ms-auto"> <li class="nav-item"><a class="nav-link" href="/about/">About</a></li> <li class="nav-item"><a class="nav-link" href="/blog/">The Lab</a></li> <li class="nav-item"><a class="nav-link" href="/projects/">Projects</a></li> <li class="nav-item"><a class="nav-link" href="/contact/">Contact</a></li> </ul> </div> </div> </nav> </header> <main> <header class="text-center py-5 bg-gradient rounded-bottom blog-hero"> <h1 class="display-4 fw-bold">Welcome to the Lab</h1> <p class="lead mx-auto" style="max-width: 750px;">
|
||||
ACSTechnology is just me - plus the occasional hand from family and friends.
|
||||
This blog isn't about marketing fluff or corporate updates. It's a running log
|
||||
of what I'm learning while building real software and a business from the ground up.
|
||||
Most posts will focus on software engineering, with a few exploring the business side.
|
||||
Expect a mix of deep-dive tutorials, brutally honest rants, and everything in between.
|
||||
</p> <p class="lead mx-auto" style="max-width: 750px;">
|
||||
Bookmark it or follow on YouTube, whichever you prefer.
|
||||
</p> </header> <section class="blog-list-wrap"> <h2 id="recent-posts" class="mb-4 border-bottom pb-2">Recent posts</h2> <article class="blog-list-card"> <h2 class="h4"> <a href="/blog/regex-extractor/" class="link-info text-decoration-none"> Regex Link Extractor </a> </h2> <p>A lightweight Chrome extension for extracting links, images, and videos from any page using regex filters. Built for manual browsing and bulk collection — with a handy side effect of feeding clean data into LLM workflows. This article walks through the why, the build, and what comes next.</p> <div class="blog-list-meta"> <time datetime="2026-04-27T00:00:00.000Z"> April 26, 2026 </time> <span> · Chrome Extension, 1.0.0, Regex, JavaScript, LLM, Json</span> </div> </article> </section> </main> <footer id="site-footer" class="bg-body mt-auto" data-bs-theme="dark"> <div class="container py-4 py-lg-5"> <div class="row text-center text-md-start gy-4"> <!-- Column 1: Brand / Copyright --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start justify-content-center"> <p class="fw-semibold mb-1">ACSTechnology</p> <p class="text-body-secondary mb-0 small">Built with curiosity and caffeine</p> <p class="text-body-secondary mb-0 small">© 2026</p> </div> <!-- Column 2: Resources --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Resources</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/faq/">FAQ</a></li> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/privacy/">Privacy</a></li> <li><a class="link-body-emphasis text-decoration-none" href="/terms/">Terms</a></li> </ul> </div> <!-- Column 3: Development --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Development</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="text-decoration-none" href="https://git.acstech.dev">Gitea</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://github.com/ACSTechDev">GitHub</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://www.linkedin.com/company/acstechdev">LinkedIn (Company)</a></li> <li><a class="text-decoration-none" href="https://www.linkedin.com/in/andrew-chiang-so/">LinkedIn (Founder)</a></li> </ul> </div> </div> </div> </footer> <script type="module" src="/_astro/BaseLayout.astro_astro_type_script_index_0_lang.GtM1sxkV.js"></script> </body> </html>
|
||||
85
blog/regex-extractor/index.html
Normal file
85
blog/regex-extractor/index.html
Normal file
@@ -0,0 +1,85 @@
|
||||
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="icon" href="/acstech_favicon_angular_acs_v2.ico" sizes="any"><title>Regex Link Extractor | ACSTechnology</title><link rel="stylesheet" href="/_astro/BaseLayout.CmXLcAZX.css">
|
||||
<style>.blog-hero{background:linear-gradient(135deg,#0d6efd,#6610f2);margin-bottom:2rem;padding-left:1rem;padding-right:1rem}.blog-meta{color:#ffffffc7}.blog-description{max-width:760px;color:#ffffffe6}.blog-article-wrap{max-width:900px;margin:0 auto;padding:0 1rem 3rem}.blog-article{background-color:#161b22;border:1px solid #30363d;border-radius:1.25rem;padding:2rem;color:#c9d1d9;line-height:1.75;box-shadow:0 8px 20px #00000059}.blog-article p{margin:1rem 0}.blog-article h2,.blog-article h3,.blog-article h4{margin-top:2rem;margin-bottom:1rem;color:#79c0ff}.blog-article a{color:#58a6ff}.blog-article pre{background:#0d1117;border:1px solid #30363d;border-radius:.75rem;padding:1rem;overflow-x:auto}.blog-article code{font-family:Consolas,Monaco,Courier New,monospace}.blog-article blockquote{margin:1.5rem 0;padding-left:1rem;border-left:3px solid #58a6ff;color:#e6edf3}.blog-article img{max-width:100%;height:auto;border-radius:.75rem}.blog-article ul,.blog-article ol{padding-left:1.5rem;margin:1rem 0}.blog-list-wrap{max-width:900px;margin:0 auto;padding:0 1rem 3rem}.blog-list-card{background-color:#161b22;border:1px solid #30363d;border-radius:1rem;padding:1.25rem 1.5rem;margin-bottom:1rem;box-shadow:0 6px 18px #00000040}.blog-list-card h2,.blog-list-card h3{margin-top:0;margin-bottom:.5rem}.blog-list-card p{margin-bottom:.5rem}.blog-list-meta{color:#8b949e;font-size:.95rem}@media(max-width:700px){.blog-article{padding:1.25rem}.blog-hero{padding-top:4rem;padding-bottom:3rem}}
|
||||
</style></head> <body class="bg-dark text-light d-flex flex-column min-vh-100"> <header id="site-header"> <nav class="navbar navbar-expand-md bg-body py-3" data-bs-theme="dark"> <div class="container"> <a class="navbar-brand d-flex align-items-center" href="/"> <span>ACSTechnology</span> </a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navcol-1" aria-controls="navcol-1" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navcol-1"> <ul class="navbar-nav ms-auto"> <li class="nav-item"><a class="nav-link" href="/about/">About</a></li> <li class="nav-item"><a class="nav-link" href="/blog/">The Lab</a></li> <li class="nav-item"><a class="nav-link" href="/projects/">Projects</a></li> <li class="nav-item"><a class="nav-link" href="/contact/">Contact</a></li> </ul> </div> </div> </nav> </header> <main> <header class="text-center py-5 bg-gradient rounded-bottom blog-hero"> <h1 class="display-4 fw-bold mb-2">Regex Link Extractor</h1> <p class="blog-meta mb-2"> <time datetime="2026-04-27T00:00:00.000Z">April 26, 2026</time> </p> <p class="blog-description mx-auto">A lightweight Chrome extension for extracting links, images, and videos from any page using regex filters. Built for manual browsing and bulk collection — with a handy side effect of feeding clean data into LLM workflows. This article walks through the why, the build, and what comes next.</p> <div class="blog-tags mt-3"> <span class="badge rounded-pill text-bg-dark me-2">Chrome Extension</span><span class="badge rounded-pill text-bg-dark me-2">1.0.0</span><span class="badge rounded-pill text-bg-dark me-2">Regex</span><span class="badge rounded-pill text-bg-dark me-2">JavaScript</span><span class="badge rounded-pill text-bg-dark me-2">LLM</span><span class="badge rounded-pill text-bg-dark me-2">Json</span> </div> </header> <section class="blog-article-wrap flex-grow-1"> <article class="blog-article"> <h2 id="introduction">Introduction</h2>
|
||||
<p>Sometimes you’re browsing a page and you want everything on it — every PDF link, every image
|
||||
from a specific domain, every video URL — without opening DevTools or writing a scraper.
|
||||
That’s what this extension is for.</p>
|
||||
<p>It started as a personal tool for manual browsing and bulk collection. Type a regex, hit
|
||||
extract, get a clean filtered list of links, images, or videos you can download or save.</p>
|
||||
<p>The LLM angle came later, almost by accident. The JSON export format turned out to be
|
||||
exactly what you’d want to paste into a model prompt — structured, typed, with page context
|
||||
included. That’s a nice bonus, but it’s not why the extension exists.</p>
|
||||
<h2 id="why-build-the-extension">Why build the extension</h2>
|
||||
<p>The idea came from a simple frustration. When I’m browsing I often want to bulk-collect
|
||||
something from a page — all the download links, all the images from a specific source, all
|
||||
the external URLs — and there’s no good lightweight tool for it. DevTools works but it’s
|
||||
overkill and verbose. Writing a one-off script works but takes time.</p>
|
||||
<p>What I wanted was a popup: type a pattern, see matching assets, grab what I need. No server,
|
||||
no authentication, no data leaving the browser.</p>
|
||||
<p>Building it as a Chrome extension was the obvious fit. It runs entirely client-side, has
|
||||
direct access to the page DOM, and stays out of the way until you need it.</p>
|
||||
<h2 id="initial-design">Initial Design</h2>
|
||||
<p>The extension has three files at its core: manifest.json, popup.html, and popup.js.
|
||||
Manifest (MV3)</p>
|
||||
<p>The extension uses Manifest V3, Chrome’s current extension standard. The only permissions
|
||||
required are activeTab — which grants temporary access to the current tab when the user
|
||||
opens the popup — and scripting, which allows injecting the extraction function into the
|
||||
page context. No broad host permissions, no background data collection.</p>
|
||||
<p><b>Extraction logic</b></p>
|
||||
<p>The core of the extension is a single function, extractPageAssets, that gets injected into
|
||||
the active tab via chrome.scripting.executeScript. It queries the DOM for three asset types:</p>
|
||||
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span><a href> — links, with their visible text trimmed to 50 characters</span></span>
|
||||
<span class="line"><span><img src> — images, with alt text carried through</span></span>
|
||||
<span class="line"><span><video> and child <source> elements — since most modern players put the real URL</span></span>
|
||||
<span class="line"><span>on a <source> tag rather than the <video> element itself</span></span></code></pre>
|
||||
<p>All three are filtered by the user’s regex pattern, deduplicated by URL, and returned as
|
||||
a structured payload with the page title, source URL, and a timestamp.</p>
|
||||
<p><b>Why regex?</b></p>
|
||||
<p>Regex gives you precision without a UI for every use case. Want all YouTube links? <code>youtube.com</code>.
|
||||
Want only PDFs? <code>\.pdf</code>. Want links from a specific subdomain? You write the pattern. It keeps
|
||||
the tool small and hands control to the user — which also makes it a natural pairing with an LLM,
|
||||
since you can ask the model to write the pattern for you if you’re unsure.</p>
|
||||
<p>If you’ve never written a regex before, <a href="https://www.regex101.com">regex101.com</a>
|
||||
is the best place to start — paste a pattern and some test URLs and it explains exactly what
|
||||
each part does. Make sure the flavor is set to JavaScript, which is what the extension uses.</p>
|
||||
<p><b>Export formats </b></p>
|
||||
<p>Results can be exported as JSON (structured, with full metadata) or Markdown (a clean linked
|
||||
list, useful for dropping straight into a document or LLM prompt). Both are generated entirely
|
||||
in the browser using a blob URL — no server involved, no upload.</p>
|
||||
<h2 id="usage-instructions">Usage Instructions</h2>
|
||||
<p><b>For everyday users</b></p>
|
||||
<ol>
|
||||
<li>Install the extension from the Chrome Web Store</li>
|
||||
<li>Navigate to any page you want to extract from</li>
|
||||
<li>Click the extension icon in your toolbar</li>
|
||||
<li>Type a pattern into the regex field — for example, youtube.com to find YouTube links, or leave it broad with . to match everything</li>
|
||||
<li>Click Find Links</li>
|
||||
<li>Check or uncheck individual results, use Select All / Deselect All as needed</li>
|
||||
<li>Choose your export format (JSON or Markdown) and which asset types to include</li>
|
||||
<li>Click Download</li>
|
||||
</ol>
|
||||
<p><b>For developers using it as an LLM feed</b></p>
|
||||
<p>The JSON export is designed to be pasted directly into a model prompt. It includes the source
|
||||
URL, page title, timestamp, and a typed array of items — each with a url, type, and either
|
||||
text (for links) or alt / poster (for images and videos). A prompt like:</p>
|
||||
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>Here is a JSON list of links extracted from a documentation page. </span></span>
|
||||
<span class="line"><span>Identify which ones are likely API reference pages versus guides.</span></span></code></pre>
|
||||
<p>…works well out of the box with the exported format. The Markdown export is better suited for
|
||||
summarisation tasks or when you want the model to reason about link text rather than raw URLs.</p>
|
||||
<h2 id="future-plans">Future plans</h2>
|
||||
<p>A few things on the roadmap:</p>
|
||||
<ul>
|
||||
<li><b>Right-click context menu</b> — right-clicking a link or image on any page will pre-fill
|
||||
the regex field with a pattern derived from that URL, so you can immediately find similar assets</li>
|
||||
<li><b>Regex history</b> — remember the last few patterns used, selectable from a dropdown</li>
|
||||
<li><b>CSV export</b> — a third format option for tabular workflows and spreadsheet tools</li>
|
||||
<li><b>Pattern library</b> — a small set of one-click presets for common cases (PDFs, images,
|
||||
YouTube, external links)</li>
|
||||
</ul>
|
||||
<h2 id="closing">Closing</h2>
|
||||
<p>The extension is small by design. It does one thing — gets assets off a page fast — and
|
||||
stays out of your way otherwise. If you regularly find yourself manually hunting down links
|
||||
or bulk-saving resources while browsing, it’s worth a try. And if you happen to use an LLM
|
||||
for content work, the export format will slot straight in.</p>
|
||||
<p>The full source is available on <a href="https://www.github.com/ACSTechDev/Regex-Link-Extractor">GitHub.com</a>. If you run into a bug or have a feature request,
|
||||
open an issue — I read them.</p> </article> </section> </main> <footer id="site-footer" class="bg-body mt-auto" data-bs-theme="dark"> <div class="container py-4 py-lg-5"> <div class="row text-center text-md-start gy-4"> <!-- Column 1: Brand / Copyright --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start justify-content-center"> <p class="fw-semibold mb-1">ACSTechnology</p> <p class="text-body-secondary mb-0 small">Built with curiosity and caffeine</p> <p class="text-body-secondary mb-0 small">© 2026</p> </div> <!-- Column 2: Resources --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Resources</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/faq/">FAQ</a></li> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/privacy/">Privacy</a></li> <li><a class="link-body-emphasis text-decoration-none" href="/terms/">Terms</a></li> </ul> </div> <!-- Column 3: Development --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Development</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="text-decoration-none" href="https://git.acstech.dev">Gitea</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://github.com/ACSTechDev">GitHub</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://www.linkedin.com/company/acstechdev">LinkedIn (Company)</a></li> <li><a class="text-decoration-none" href="https://www.linkedin.com/in/andrew-chiang-so/">LinkedIn (Founder)</a></li> </ul> </div> </div> </div> </footer> <script type="module" src="/_astro/BaseLayout.astro_astro_type_script_index_0_lang.GtM1sxkV.js"></script> </body> </html>
|
||||
6
contact/index.html
Normal file
6
contact/index.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="icon" href="/acstech_favicon_angular_acs_v2.ico" sizes="any"><title>Contact | ACSTechnology</title><link rel="stylesheet" href="/_astro/BaseLayout.CmXLcAZX.css"></head> <body class="bg-dark text-light d-flex flex-column min-vh-100"> <header id="site-header"> <nav class="navbar navbar-expand-md bg-body py-3" data-bs-theme="dark"> <div class="container"> <a class="navbar-brand d-flex align-items-center" href="/"> <span>ACSTechnology</span> </a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navcol-1" aria-controls="navcol-1" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navcol-1"> <ul class="navbar-nav ms-auto"> <li class="nav-item"><a class="nav-link" href="/about/">About</a></li> <li class="nav-item"><a class="nav-link" href="/blog/">The Lab</a></li> <li class="nav-item"><a class="nav-link" href="/projects/">Projects</a></li> <li class="nav-item"><a class="nav-link" href="/contact/">Contact</a></li> </ul> </div> </div> </nav> </header> <main> <article class="bubble bubble-left"> <h1>Contact</h1> <p>
|
||||
Have a project in mind or need help building something custom?
|
||||
Send a message and I’ll take a look.
|
||||
</p> <p>
|
||||
For questions or inquiries, please contact:
|
||||
<a href="mailto:contact@acstech.dev">contact@acstech.dev</a> </p> </article> <article class="bubble bubble-right"> <h2>Get in Touch</h2> <form class="contact-form" method="post" action="#"> <div class="mb-3"> <label class="form-label" for="name">Name</label> <input class="form-control" id="name" name="name" placeholder="John Doe" type="text"> </div> <div class="mb-3"> <label class="form-label" for="email">Email</label> <input class="form-control" id="email" name="email" placeholder="jdoe@example.com" type="email"> </div> <div class="mb-3"> <label class="form-label" for="message">Message</label> <textarea class="form-control" id="message" name="message" placeholder="Type your inquiry here..." rows="6"></textarea> </div> <button class="btn btn-primary" type="submit">Send</button> </form> </article> </main> <footer id="site-footer" class="bg-body mt-auto" data-bs-theme="dark"> <div class="container py-4 py-lg-5"> <div class="row text-center text-md-start gy-4"> <!-- Column 1: Brand / Copyright --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start justify-content-center"> <p class="fw-semibold mb-1">ACSTechnology</p> <p class="text-body-secondary mb-0 small">Built with curiosity and caffeine</p> <p class="text-body-secondary mb-0 small">© 2026</p> </div> <!-- Column 2: Resources --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Resources</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/faq/">FAQ</a></li> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/privacy/">Privacy</a></li> <li><a class="link-body-emphasis text-decoration-none" href="/terms/">Terms</a></li> </ul> </div> <!-- Column 3: Development --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Development</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="text-decoration-none" href="https://git.acstech.dev">Gitea</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://github.com/ACSTechDev">GitHub</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://www.linkedin.com/company/acstechdev">LinkedIn (Company)</a></li> <li><a class="text-decoration-none" href="https://www.linkedin.com/in/andrew-chiang-so/">LinkedIn (Founder)</a></li> </ul> </div> </div> </div> </footer> <script type="module" src="/_astro/BaseLayout.astro_astro_type_script_index_0_lang.GtM1sxkV.js"></script> </body> </html>
|
||||
16
index.html
Normal file
16
index.html
Normal file
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="icon" href="/acstech_favicon_angular_acs_v2.ico" sizes="any"><title>ACS Technology</title><link rel="stylesheet" href="/_astro/BaseLayout.CmXLcAZX.css"></head> <body class="bg-dark text-light d-flex flex-column min-vh-100"> <header id="site-header"> <nav class="navbar navbar-expand-md bg-body py-3" data-bs-theme="dark"> <div class="container"> <a class="navbar-brand d-flex align-items-center" href="/"> <span>ACSTechnology</span> </a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navcol-1" aria-controls="navcol-1" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navcol-1"> <ul class="navbar-nav ms-auto"> <li class="nav-item"><a class="nav-link" href="/about/">About</a></li> <li class="nav-item"><a class="nav-link" href="/blog/">The Lab</a></li> <li class="nav-item"><a class="nav-link" href="/projects/">Projects</a></li> <li class="nav-item"><a class="nav-link" href="/contact/">Contact</a></li> </ul> </div> </div> </nav> </header> <main> <article class="bubble bubble-left"> <h1>Introduction</h1> <p>
|
||||
ACSTechnology is a founder-led software business based in Southern California.
|
||||
I help small businesses, entrepreneurs, and growing teams turn ideas into working
|
||||
software - whether that means a custom web app, process automation, backend systems,
|
||||
or AI-powered tools. The focus is always the same: build something useful, dependable,
|
||||
and worth using long after launch.
|
||||
</p> </article> <article class="bubble bubble-right"> <h2>Mission Statement</h2> <p>
|
||||
At ACSTechnology, my mission is simple - to build software that actually solves
|
||||
problems. I work closely with each client to understand their goals and create
|
||||
custom solutions that fit their business, not the other way around. Every
|
||||
project gets my full attention, from the first idea to the final delivery,
|
||||
ensuring a smooth process and a result you'll be proud to launch.
|
||||
</p> </article> <article class="bubble bubble-left"> <h3>Areas of Focus</h3> <p>
|
||||
At ACSTechnology, we combine practical software engineering with the latest in
|
||||
AI to help small teams do more with less. Our core focus areas include:
|
||||
</p> <ul> <li><strong>Custom Software Development</strong> - Scalable web and desktop apps built around your workflow.</li> <li><strong>AI Integration & Automation</strong> - From chatbots to workflow automation, we help you bring intelligent features into your products or internal tools.</li> <li><strong> Backend Engineering</strong> - Fast, secure, and maintainable backend systems designed to handle real-world growth.</li> <li><strong> Web App Development</strong> - Modern, responsive interfaces that feel fast, clean, and intuitive for your users.</li> <li><strong> Tech Consulting & Prototyping</strong> - Need to validate an idea before building it? We'll help you design, test, and launch efficiently.</li> </ul> </article> <article class="bubble bubble-right"> <h2>Why Work With Us</h2> <ul> <li><strong>Founder-led attention.</strong> You'll work directly with me - no handoffs or endless layers of management.</li> <li><strong>Clear communication.</strong> You'll always know where things stand, what's next, and when to expect results.</li> <li><strong>Quality over quantity.</strong> I take on a limited number of projects to deliver real focus and care.</li> </ul> <blockquote><strong>Let's turn your idea into something real.</strong></blockquote> </article> </main> <footer id="site-footer" class="bg-body mt-auto" data-bs-theme="dark"> <div class="container py-4 py-lg-5"> <div class="row text-center text-md-start gy-4"> <!-- Column 1: Brand / Copyright --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start justify-content-center"> <p class="fw-semibold mb-1">ACSTechnology</p> <p class="text-body-secondary mb-0 small">Built with curiosity and caffeine</p> <p class="text-body-secondary mb-0 small">© 2026</p> </div> <!-- Column 2: Resources --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Resources</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/faq/">FAQ</a></li> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/privacy/">Privacy</a></li> <li><a class="link-body-emphasis text-decoration-none" href="/terms/">Terms</a></li> </ul> </div> <!-- Column 3: Development --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Development</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="text-decoration-none" href="https://git.acstech.dev">Gitea</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://github.com/ACSTechDev">GitHub</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://www.linkedin.com/company/acstechdev">LinkedIn (Company)</a></li> <li><a class="text-decoration-none" href="https://www.linkedin.com/in/andrew-chiang-so/">LinkedIn (Founder)</a></li> </ul> </div> </div> </div> </footer> <script type="module" src="/_astro/BaseLayout.astro_astro_type_script_index_0_lang.GtM1sxkV.js"></script> </body> </html>
|
||||
3
projects/index.html
Normal file
3
projects/index.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="icon" href="/acstech_favicon_angular_acs_v2.ico" sizes="any"><title>Projects | ACSTechnology</title><link rel="stylesheet" href="/_astro/BaseLayout.CmXLcAZX.css">
|
||||
<style>.projects-hero[data-astro-cid-2hwget37]{padding:3rem 0 2rem;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:3rem}.projects-hero[data-astro-cid-2hwget37] h1[data-astro-cid-2hwget37]{font-size:clamp(2rem,5vw,3.25rem);font-weight:700;letter-spacing:-.02em;line-height:1.1}.projects-hero[data-astro-cid-2hwget37] p[data-astro-cid-2hwget37]{max-width:520px;opacity:.65}.projects-grid[data-astro-cid-2hwget37]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;padding-bottom:4rem}.project-card[data-astro-cid-2hwget37]{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;animation:fadeUp .4s ease both}.project-card[data-astro-cid-2hwget37]:hover{transform:translateY(-4px);box-shadow:0 12px 40px #0006;border-color:#ffffff2e}.project-card__image[data-astro-cid-2hwget37]{width:100%;aspect-ratio:16 / 9;object-fit:cover;display:block;background:#ffffff0f}.project-card__body[data-astro-cid-2hwget37]{padding:1.25rem 1.25rem .75rem;flex:1;display:flex;flex-direction:column;gap:.5rem}.project-card__title[data-astro-cid-2hwget37]{font-size:1.1rem;font-weight:600;margin:0}.project-card__title[data-astro-cid-2hwget37] a[data-astro-cid-2hwget37]{color:#fff;text-decoration:none}.project-card__title[data-astro-cid-2hwget37] a[data-astro-cid-2hwget37]:hover{text-decoration:underline;text-underline-offset:3px}.project-card__desc[data-astro-cid-2hwget37]{font-size:.875rem;color:#fff9;margin:0;line-height:1.55;flex:1}.project-card__tags[data-astro-cid-2hwget37]{display:flex;flex-wrap:wrap;gap:.375rem;padding:.75rem 1.25rem}.tag[data-astro-cid-2hwget37]{font-size:.7rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:.2rem .55rem;border-radius:4px;background:#ffffff14;color:#ffffffb3;border:1px solid rgba(255,255,255,.1)}.project-card__links[data-astro-cid-2hwget37]{display:flex;gap:.75rem;align-items:center;padding:.75rem 1.25rem 1.25rem;border-top:1px solid rgba(255,255,255,.07)}.project-card__link[data-astro-cid-2hwget37]{font-size:.8rem;font-weight:500;text-decoration:none;display:inline-flex;align-items:center;gap:.3rem;color:#ffffff8c;transition:color .15s ease}.project-card__link[data-astro-cid-2hwget37]:hover{color:#fff}.project-card__link--primary[data-astro-cid-2hwget37]{color:#60a5fa}.project-card__link--primary[data-astro-cid-2hwget37]:hover{color:#93c5fd}.project-card__link--readmore[data-astro-cid-2hwget37]{margin-left:auto}.project-card[data-astro-cid-2hwget37]:nth-child(1){animation-delay:.05s}.project-card[data-astro-cid-2hwget37]:nth-child(2){animation-delay:.12s}.project-card[data-astro-cid-2hwget37]:nth-child(3){animation-delay:.19s}.project-card[data-astro-cid-2hwget37]:nth-child(4){animation-delay:.26s}.project-card[data-astro-cid-2hwget37]:nth-child(5){animation-delay:.33s}.project-card[data-astro-cid-2hwget37]:nth-child(6){animation-delay:.4s}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
|
||||
</style></head> <body class="bg-dark text-light d-flex flex-column min-vh-100"> <header id="site-header"> <nav class="navbar navbar-expand-md bg-body py-3" data-bs-theme="dark"> <div class="container"> <a class="navbar-brand d-flex align-items-center" href="/"> <span>ACSTechnology</span> </a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navcol-1" aria-controls="navcol-1" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navcol-1"> <ul class="navbar-nav ms-auto"> <li class="nav-item"><a class="nav-link" href="/about/">About</a></li> <li class="nav-item"><a class="nav-link" href="/blog/">The Lab</a></li> <li class="nav-item"><a class="nav-link" href="/projects/">Projects</a></li> <li class="nav-item"><a class="nav-link" href="/contact/">Contact</a></li> </ul> </div> </div> </nav> </header> <main> <div class="container" data-astro-cid-2hwget37> <div class="projects-hero" data-astro-cid-2hwget37> <h1 data-astro-cid-2hwget37>Projects</h1> <p class="mt-2 mb-0" data-astro-cid-2hwget37>A selection of things I've built — from side experiments to tools I actually use.</p> </div> <p class="text-secondary" data-astro-cid-2hwget37>No public projects yet.</p> </div> </main> <footer id="site-footer" class="bg-body mt-auto" data-bs-theme="dark"> <div class="container py-4 py-lg-5"> <div class="row text-center text-md-start gy-4"> <!-- Column 1: Brand / Copyright --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start justify-content-center"> <p class="fw-semibold mb-1">ACSTechnology</p> <p class="text-body-secondary mb-0 small">Built with curiosity and caffeine</p> <p class="text-body-secondary mb-0 small">© 2026</p> </div> <!-- Column 2: Resources --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Resources</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/faq/">FAQ</a></li> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/privacy/">Privacy</a></li> <li><a class="link-body-emphasis text-decoration-none" href="/terms/">Terms</a></li> </ul> </div> <!-- Column 3: Development --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Development</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="text-decoration-none" href="https://git.acstech.dev">Gitea</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://github.com/ACSTechDev">GitHub</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://www.linkedin.com/company/acstechdev">LinkedIn (Company)</a></li> <li><a class="text-decoration-none" href="https://www.linkedin.com/in/andrew-chiang-so/">LinkedIn (Founder)</a></li> </ul> </div> </div> </div> </footer> <script type="module" src="/_astro/BaseLayout.astro_astro_type_script_index_0_lang.GtM1sxkV.js"></script> </body> </html>
|
||||
15
regex-link-extractor/privacy/index.html
Normal file
15
regex-link-extractor/privacy/index.html
Normal file
@@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="icon" href="/acstech_favicon_angular_acs_v2.ico" sizes="any"><title>Regex Link Extractor - Privacy Policy</title><link rel="stylesheet" href="/_astro/BaseLayout.CmXLcAZX.css"></head> <body class="bg-dark text-light d-flex flex-column min-vh-100"> <header id="site-header"> <nav class="navbar navbar-expand-md bg-body py-3" data-bs-theme="dark"> <div class="container"> <a class="navbar-brand d-flex align-items-center" href="/"> <span>ACSTechnology</span> </a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navcol-1" aria-controls="navcol-1" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navcol-1"> <ul class="navbar-nav ms-auto"> <li class="nav-item"><a class="nav-link" href="/about/">About</a></li> <li class="nav-item"><a class="nav-link" href="/blog/">The Lab</a></li> <li class="nav-item"><a class="nav-link" href="/projects/">Projects</a></li> <li class="nav-item"><a class="nav-link" href="/contact/">Contact</a></li> </ul> </div> </div> </nav> </header> <main> <article class="bubble bubble-left"> <h1>Privacy Policy</h1> <p>Effective Date: April 27, 2026</p> <p> <b>Regex Link Extractor</b> is a client-side browser extension. It does not collect, store,
|
||||
or transmit any personal data. All processing happens locally in your browser.
|
||||
</p> </article> <article class="bubble bubble-left"> <h2>Permissions</h2> <p>The extension requests the following permissions:</p> <ul> <li><b>activeTab</b>: Accesses the content of the current tab only when you explicitly activate the extension.</li> <li><b>scripting</b>: Runs the extraction script within the active tab to identify links, images, and videos.</li> </ul> <p>No other permissions are requested or used.</p> </article> <article class="bubble bubble-left"> <h2>How It Works</h2> <p>
|
||||
When you click "Find Links", the extension injects a script into the active tab to scan
|
||||
its content using your regex pattern. Matching links, images, and videos are displayed
|
||||
in the popup. Nothing leaves your browser during this process.
|
||||
</p> <p>
|
||||
If you choose to export results, the file is generated entirely in your browser and saved
|
||||
directly to your device. No data is uploaded or transmitted to any server at any point.
|
||||
</p> </article> <article class="bubble bubble-left"> <h2>Data Handling</h2> <ul> <li><b>Collection</b>: No personal data, browsing history, or user activity is collected.</li> <li><b>Storage</b>: No data is stored locally or remotely by the extension.</li> <li><b>Transmission</b>: The extension makes no external network requests.</li> <li><b>Sharing</b>: No data is shared with third parties.</li> <li><b>Analytics</b>: No tracking, analytics, or telemetry of any kind is included.</li> </ul> </article> <article class="bubble bubble-left"> <h2>Changes to This Policy</h2> <p>
|
||||
This policy may be updated to reflect changes in functionality or legal requirements.
|
||||
Any updates will be reflected with a revised effective date at the top of this page.
|
||||
</p> </article> <article class="bubble bubble-left"> <h2>Contact</h2> <p>
|
||||
For questions or concerns about this privacy policy, please contact:
|
||||
<a href="mailto:support@acstech.dev">support@acstech.dev</a> </p> </article> </main> <footer id="site-footer" class="bg-body mt-auto" data-bs-theme="dark"> <div class="container py-4 py-lg-5"> <div class="row text-center text-md-start gy-4"> <!-- Column 1: Brand / Copyright --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start justify-content-center"> <p class="fw-semibold mb-1">ACSTechnology</p> <p class="text-body-secondary mb-0 small">Built with curiosity and caffeine</p> <p class="text-body-secondary mb-0 small">© 2026</p> </div> <!-- Column 2: Resources --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Resources</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/faq/">FAQ</a></li> <li class="mb-1"><a class="link-body-emphasis text-decoration-none" href="/privacy/">Privacy</a></li> <li><a class="link-body-emphasis text-decoration-none" href="/terms/">Terms</a></li> </ul> </div> <!-- Column 3: Development --> <div class="col-12 col-md-4 d-flex flex-column align-items-center align-items-md-start"> <small class="text-uppercase text-body-secondary mb-2">Development</small> <ul class="list-unstyled mb-0"> <li class="mb-1"><a class="text-decoration-none" href="https://git.acstech.dev">Gitea</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://github.com/ACSTechDev">GitHub</a></li> <li class="mb-1"><a class="text-decoration-none" href="https://www.linkedin.com/company/acstechdev">LinkedIn (Company)</a></li> <li><a class="text-decoration-none" href="https://www.linkedin.com/in/andrew-chiang-so/">LinkedIn (Founder)</a></li> </ul> </div> </div> </div> </footer> <script type="module" src="/_astro/BaseLayout.astro_astro_type_script_index_0_lang.GtM1sxkV.js"></script> </body> </html>
|
||||
Reference in New Issue
Block a user