Skip to content
CAI
Software that uses CAICheck a score

khanhtc1202/boogeyman

51.7

Adequate · 21 September 2026

1.1k

lines of production code

Go

with JavaScript

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Boogeyman is a multi-engine search aggregation tool that queries Google, Bing, Yahoo, and Ask to retrieve and consolidate results. It provides both a command-line interface and a REST API, supporting configurable strategies to merge, filter, or cross-reference results from different sources. The system includes a React-based web frontend for interactive searching and is designed for containerized deployment with Nginx.

Features

Add Nginx configuration for web deployment

A new Nginx configuration file has been added to serve the web application. It configures the server to listen on port 80, enables gzip compression for various content types, and sets up proxying for the /search endpoint to localhost:3000 while serving static files from the /app directory for all other routes.

deployments · high confidence

Add search engine spider implementations for Google, Bing, Yahoo, and Ask

New spider implementations have been added to the infrastructure layer to support querying Google, Bing, Yahoo, and Ask search engines. Each spider fetches search results using the goquery library, parses the HTML response to extract titles, URLs, and descriptions, and maps the data to the internal domain model. Corresponding unit tests have been added to verify that each spider correctly identifies its search engine type and returns query results.

internal/infrastructure · high confidence

Add structured console I/O and version metadata support

The package introduces a new console I/O subsystem that provides colored, structured logging for users. It includes a \Console\ type backed by \go-colorable\ for cross-platform color support, a \UI\ interface, and convenience functions (\Infof\, \Warnf\, \Errorf\) that automatically prefix messages with colored labels (Cyan for INFO, Yellow for WARN, Red for ERROR). Additionally, a \MetaInfo\ struct is added to encapsulate and display build details such as version, revision, build date, Go version, and mode.

pkg · high confidence

Boogeyman search tool release 1.2.7 with multi-engine support and Docker deployment

The Boogeyman application is updated to version 1.2.7, enabling users to retrieve search results from multiple engines (Ask, Bing, Google, Yahoo) using strategies like Top, Cross Matching, and All. The release introduces a REST API alongside the CLI, configurable via TOML files (e.g., MaxReturnItems), and supports containerized deployment through Docker images for both the REST service and the web view. Build artifacts are now generated for Linux and Darwin (amd64) via the Makefile, and the project includes a Travis CI configuration for automated testing and building.

(repo-wide) · high confidence

Initial React-based search interface with build tooling

This change introduces the initial frontend for the 'Boogeyman' application, adding a React-based search interface that allows users to filter results by search engine (Google, Bing, Ask, Yahoo) and strategy (cross, all, top). The UI leverages Semantic UI for styling and toastr for notifications, communicating with the backend via the /api/search endpoint. To support this, the project now includes a Webpack build configuration and Babel presets to bundle the JSX source into a distributable bundle.

web/static · high confidence

Initial implementation of search engine gateway and controller

This change introduces the core components for the search functionality within the gateway layer. It adds the \InfoSearch\ controller to handle search requests by adapting input strings to domain types and invoking the interactor. The gateway repository layer is implemented with \SearchEngines\ to concurrently fetch data from various collectors (Google, Bing, Yahoo, Ask) and \SearchStrategies\ to apply result filtering logic (Merge, Top, CrossMatch) based on configuration. Supporting service interfaces for collectors and their lists are also added to facilitate this data aggregation.

internal/gateway · high confidence

Introduction of TOML-based configuration system

The application now uses a new configuration system that loads settings from TOML files, distinguishing between development and production environments via build tags. Users can now have environment-specific settings loaded at runtime, with the configuration structure supporting ranker-specific options such as the maximum number of return items.

config · high confidence

New REST API endpoint for search queries

A new web application entry point has been added to the Boogeyman service, exposing a REST API on port 3000. This includes a CORS-enabled configuration allowing GET requests from https://search.khanhtc.me, a health-check endpoint at /ping, and a /search endpoint that accepts query parameters (q, e, s) to perform searches and return structured JSON results containing titles, URLs, and descriptions.

web/boogeyman · high confidence

New command-line entry point for the Boogeyman search tool

A new main entry point has been added at cmd/boogeyman/main.go, establishing the executable interface for the application. This entry point parses command-line flags to configure the search engine (Google, Bing, Ask, Yahoo, or all), the display strategy (top, cross, or all), and the search query string. It initializes the core controller, repository, and service layers, and uses a colorful text presenter to output search results (title, URL, description, and creation date) to the console, while also supporting a version display flag.

cmd · high confidence

New domain models for search results and filtering strategies

The internal domain layer now includes core data structures for handling search operations: \Keyword\ for URL-safe string handling, \QueryResults\ for managing lists of search items with deduplication and limiting capabilities, and \UrlBaseResultItem\ as the base entity for search results. A new \SearchEngine\ model represents individual search engine results, grouped in a \SearchEnginePool\. Crucially, the system introduces a strategy pattern for result aggregation via \FilterStrategyType\, supporting three distinct behaviors: \Merge\ (combines all results, removes duplicates, and applies a limit), \Top\ (selects only the top result from each engine), and \Cross\ (finds items appearing across multiple engines). Tests verify the correct behavior of these aggregation strategies.

internal/domain · high confidence

Behavioural changes

Introduce structured use-case layer for search operations

The internal use-case layer now defines a dedicated interactor for search functionality, coordinating between repository interfaces for search engines and strategies, and a text presenter for output. This change establishes the core orchestration logic for executing keyword searches, applying filter strategies, and displaying results, replacing the previous ad-hoc structure with a more modular, dependency-injected design.

internal/usecase · high confidence

Dependencies

Initial frontend dependency setup for Boogeyman view

Added a new \package.json\ and \yarn.lock\ file to the \web/static\ directory to manage frontend dependencies. This introduces React 16.3.1, ReactDOM, Semantic UI React 0.87.1, and Toastr 2.1.4 as production dependencies, along with Babel 6, Webpack 4, and related tooling as development dependencies, establishing the build environment for the Boogeyman search front page.

(dependencies) · high confidence

Housekeeping

Added placeholder for bin directory

A .gitkeep file was added to the bin directory to ensure the directory is tracked by version control, allowing the build output location to be preserved in the repository structure.

bin · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 52.

Lenses

  • Code Health 99
  • Architecture 69
  • Maturity 47
  • Readiness 43
  • Security 66

Changes since last survey

  • 193 commits — 188 feature/other, 5 fixes

By area

  • (root) — 76 commits
  • (repo) — 32 commits
  • infrastructure/service — 13 commits
  • web/static — 12 commits
  • domain/search_engine — 7 commits
  • adapter/persistent — 6 commits
  • internal/domain — 6 commits
  • public/boogeyman-darwin-64 — 6 commits
  • adapter/controller — 5 commits
  • adapter/presenter — 3 commits
  • domain/ranker.go — 3 commits
  • internal/gateway — 3 commits
  • usecase/interactor — 3 commits
  • bin/boogeyman-darwin-64 — 2 commits
  • cross_cutting/common — 2 commits
  • bin/boogeyman-rest-darwin-64 — 1 commit
  • cross_cutting/io — 1 commit
  • domain/query_result.go — 1 commit
  • domain/query_result_pool.go — 1 commit
  • domain/result_item.go — 1 commit

Notable commits

  • fix: Merge pull request #19 from khanhtc1202/hotfix/rename-core
  • fix: Merge pull request #21 from khanhtc1202/fix/parse-version-params
  • fix: Merge pull request #22 from khanhtc1202/fix/default-params-value
  • fix: fix error build dev-test
  • fix: ver 1.0 | new sipder: ask | not yet fix ducduckgo
  • change: Merge branch 'master' of https://github.com/khanhtc1202/boogeyman
  • change: Merge branch 'master' of https://github.com/khanhtc1202/boogeyman
  • change: Merge pull request #1 from khanhtc1202/develop
  • change: Merge pull request #10 from khanhtc1202/develop
  • change: Merge pull request #11 from khanhtc1202/test
  • change: Merge pull request #12 from khanhtc1202/doc
  • change: Merge pull request #13 from khanhtc1202/develop
  • change: Merge pull request #14 from khanhtc1202/feature/yandex-se
  • change: Merge pull request #15 from khanhtc1202/doc
  • change: Merge pull request #16 from khanhtc1202/develop
  • change: Merge pull request #17 from khanhtc1202/staging/1.1.1
  • change: Merge pull request #18 from khanhtc1202/staging/1.2
  • change: Merge pull request #2 from khanhtc1202/develop
  • change: Merge pull request #20 from khanhtc1202/feature/version_control
  • change: Merge pull request #23 from khanhtc1202/staging/1.2.2
  • …and 173 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

khanhtc1202/boogeyman was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit a6a173c08fd3543a74affcc3d2a86726c76f182d — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.