
Build precise search queries with exact phrases, site filters, exclusions, date ranges, filetypes, and one-click links across search engines and vertical search targets.
This is not a search engine, metasearch aggregator, scraper, or API proxy. It is a local static query builder that opens the search engine you choose.
The app has five surfaces:
index.html.advanced.html for Google dorks, filetype searches, site/path filters, title/URL/body operators, date ranges, presets, and raw operator lines.shodan.html for banner terms, org/net scopes, ports, TLS certificate filters, HTTP metadata, screenshots, and defensive exposure review.crtsh.html for certificate transparency searches, wildcard domains, expired certificate cleanup, deduped results, JSON exports, and certificate ID pivots.wayback.html for CDX API URLs, match types, date ranges, status codes, MIME filters, collapsed captures, and archive research.Web:
udm=14 to skip the AI Overview)Technical and forums:
Research and archives:
before: date, with quick presets for 2022, 2020, 2016, and 2010.filetype:pdf.-site: filters and recurring junk terms.npm install
npm run dev
The dev command builds the static app once and serves dist at http://127.0.0.1:4173.
There is no HMR. Re-run npm run dev (or npm run build && npm run preview) after changes.
The build compiles the TypeScript app, copies static assets, and emits sitemap/robots files.
npm run build
Output goes to dist/. The app can also be opened directly from dist/index.html.
Set PUBLIC_SITE_URL at build time for correct canonical URLs and sitemap entries. The default is https://goodoldsearch.com.
PUBLIC_SITE_URL=https://goodoldsearch.com npm run build
The included Dockerfile builds the app, then serves dist with the existing Node static server.
Coolify settings:
3000.PUBLIC_SITE_URL=https://goodoldsearch.com.PORT; otherwise the image defaults to 3000.npm test
npm run smoke
npm run smoke:live
npm run smoke:live:strict
npm test builds the app, runs the single-process assertion suite, and runs query-type smoke checks.npm run smoke verifies every supported engine URL builder, host, engine-specific query syntax, key recipe behavior, and share URL round trip.npm run smoke:live also tries live reachability for every target and reports external warnings without failing the structural smoke.npm run smoke:live:strict fails on external reachability warnings too. Some engines may rate-limit, redirect, or bot-block automated requests even when browser links work.src/
main.ts
styles.css
lib/
queryModel.ts
queryBuilder.ts
recipes.ts
shareUrl.ts
blocklist.ts
bookmarklet.ts
engines/
index.ts
google.ts
googleVerbatim.ts
bing.ts
brave.ts
duckduckgo.ts
kagi.ts
hn.ts
redditGoogle.ts
stackoverflow.ts
githubIssues.ts
githubCode.ts
arxiv.ts
utils.ts
tests/
query.test.mjs
scripts/
build-seo-files.mjs
clean-dist.mjs
copy-static.mjs
serve-dist.mjs
smoke-engines.mjs
MIT. See LICENSE.