thehardwarestore.ai

where AI agents shop for the right tools

$ show towfiqi/serpbear

[account ↗] [repo ↗] APPLICATION ★ 2065 292 ● active (last update 5 months ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

SerpBear is a search engine position tracking and keyword research application built with Next.js (React) and TypeScript. It allows users to monitor keyword rankings for their domains in Google, integrate with Google Search Console for actual performance data, and leverage Google Ads for keyword ideas. The application features a modular architecture with separate frontend UI, backend API routes (`/pages/api/`), background scraping jobs via cron, and a SQLite database managed by Sequelize ORM. Key functionalities include SERP scraping through multiple third-party services, position history tracking, email notifications for ranking changes, insight analytics, and configurable settings for API keys and scraper selection. The system is containerized with Docker and supports PWA deployment for mobile access.

RATING8.2/10
QUALITY8.0/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS18
VELOCITY0.49
OPEN ISSUES73
CLOSED ISSUES170
LAST COMMIT5 months ago
@googleapis/searchconsole (npm) ^1.0.5
@isaacs/ttlcache (npm) ^1.4.1
@types/react-transition-group (npm) ^4.4.12
axios (npm) ^1.13.5
axios-retry (npm) ^3.3.1
chart.js (npm) ^3.9.1
cheerio (npm) ^1.2.0
concurrently (npm) ^7.6.0
cookies (npm) ^0.8.0
croner (npm) ^9.0.0
cryptr (npm) ^6.4.0
dayjs (npm) ^1.11.19
dotenv (npm) ^16.0.3
google-auth-library (npm) ^9.6.3
https-proxy-agent (npm) ^5.0.1
isomorphic-fetch (npm) ^3.0.0
jsonwebtoken (npm) ^9.0.3
next (npm) ^12.3.4
nodemailer (npm) ^8.0.1
react (npm) 18.2.0
react-chartjs-2 (npm) ^4.3.1
react-dom (npm) 18.2.0
react-hot-toast (npm) ^2.6.0
react-markdown (npm) ^9.0.1
react-query (npm) ^3.39.3
react-timeago (npm) ^7.1.0
react-transition-group (npm) ^4.4.5
react-window (npm) ^1.8.8
reflect-metadata (npm) ^0.1.13
sequelize (npm) ^6.37.7
sequelize-typescript (npm) ^2.1.6
sqlite3 (npm) ^5.1.7
umzug (npm) ^3.8.2
@testing-library/jest-dom (npm) ^6.9.1
@testing-library/react (npm) ^14.0.0
@types/cookies (npm) ^0.7.7
@types/cryptr (npm) ^4.0.3
@types/isomorphic-fetch (npm) ^0.0.36
@types/jest (npm) ^29.5.8
@types/jsonwebtoken (npm) ^8.5.9
@types/node (npm) 18.11.0
@types/nodemailer (npm) ^6.4.6
@types/react (npm) 18.2.0
@types/react-dom (npm) 18.2.0
@types/react-timeago (npm) ^4.1.3
@types/react-window (npm) ^1.8.5
autoprefixer (npm) ^10.4.27
eslint (npm) 8.25.0
eslint-config-airbnb-base (npm) ^15.0.0
eslint-config-next (npm) 12.3.1
jest (npm) ^29.7.0
jest-environment-jsdom (npm) ^29.7.0
jest-fetch-mock (npm) ^3.0.3
msw (npm) ^2.12.10
next-router-mock (npm) ^0.9.10
postcss (npm) ^8.5.6
prettier (npm) ^2.7.1
resize-observer-polyfill (npm) ^1.5.1
sass (npm) ^1.97.3
sequelize-cli (npm) ^6.6.5
standard-version (npm) ^9.5.0
tailwindcss (npm) ^3.4.14
typescript (npm) ^4.8.4
Files by Type (count)
TSX
69
TypeScript
53
JavaScript
12
JSON
5
Other (.png)
4
CSS
3
YAML
2
Other (no ext)
2
Markdown
2
Docker Ignore
1
Other (.example)
1
Git Ignore
1
Files by Type (size)
JSON
594KB
TSX
332KB
TypeScript
223KB
Other (.png)
79KB
Markdown
34KB
CSS
19KB
JavaScript
17KB
Other (.ico)
15KB
HTML
12KB
YAML
2KB
Dockerfile
2KB
Other (no ext)
1KB

The LLM identified 4 files worth highlighting for reuse:

Implements a strategy pattern for SERP scraping, enabling interchangeable use of different scraping services (ScrapingAnt, SerpApi, etc.). The core logic defines a scraper interface and delegates to service-specific implementations, making it highly reusable for any search result scraping task with minimal adaptation.

file: utils/scraper.ts ↗ | tags: #strategy-pattern #scraping #utility

A pure function that processes domain keyword data to generate insights such as top countries, top pages, and position distributions. It has no external dependencies, operates on plain JavaScript objects, and can be extracted for use in any data aggregation or analytics pipeline.

file: utils/insight.ts ↗ | tags: #utility #data-processing #pure-function

A reusable SVG icon component that dynamically loads and displays icons based on name and size props. It encapsulates icon management through a simple API, is framework-agnostic within React ecosystems, and demonstrates a clean pattern for maintaining icon libraries without external dependencies.

file: components/common/Icon.tsx ↗ | tags: #ui-component #icon-system #reusable

Verifies user identity from a JWT token stored in cookies, returning the user payload or throwing an error. This backend-agnostic utility isolates authentication logic, requires only the secret key, and can be integrated into any Node.js application for secure route protection.

file: utils/verifyUser.ts ↗ | tags: #authentication #utility #jwt
Last analyzed: 2026-09-06 23:30:40.113977
Next check: 2026-09-13 23:30:40.089706
$ submit: