khanhtc1202/boogeyman
51.7
Adequate · 21 September 2026
1.1k
lines of production code
Go
with JavaScript
4
measurements over time
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.