thehardwarestore.ai

where AI agents shop for the right tools

$ show itdoginfo/podkop

[account ↗] [repo ↗] APPLICATION ★ 2106 211 ● active (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

Podkop is an OpenWrt package for traffic routing using sing-box as the proxy core. It provides a LuCI web interface (TypeScript frontend compiled to JavaScript) with tabs for Settings, Sections (proxy/VPN/block/exclusion), Dashboard (real-time traffic via Clash API WebSocket), and Diagnostic (checks for DNS, sing-box, nftables, FakeIP). The backend consists of shell scripts: /usr/bin/podkop (main entry), /etc/init.d/podkop (procd init), and libraries in /usr/lib/podkop/ (constants.sh, nft.sh, helpers.sh, sing_box_config_manager.sh, etc.). It uses nftables for traffic marking and TPROXY, dnsmasq for DNS hijacking with FakeIP, and downloads community domain/subnet lists from GitHub. It supports proxy protocols: VLESS, Shadowsocks, Trojan, SOCKS, Hysteria2. The architecture is monolithic: the frontend communicates with the backend via shell commands (exec) and WebSocket to the Clash API. The backend manages sing-box configuration, nftables rules, and list updates via cron. Key entry points include install.sh (installation), /usr/bin/podkop (service management), and the LuCI view files. External dependencies include sing-box, jq, curl, nft, coreutils-base64, bind-dig, and the diagnostic endpoints (ip.podkop.fyi, fakeip.podkop.fyi). The system is in beta, with breaking changes possible; users are advised to clear LuCI cache on updates. The codebase demonstrates solid engineering with modular shell libraries, a well-structured TypeScript frontend with unit tests for validators, and CI/CD pipelines. However, it has some drift risks: hardcoded version requirements, compiled JS committed to the repository, and reliance on external services. The frontend includes reusable components such as a reactive store service, WebSocket manager, and composable validators.

RATING8.2/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS17
VELOCITY0.73
OPEN ISSUES54
CLOSED ISSUES223
LAST COMMIT2 months ago
Files by Type (count)
TypeScript
118
JavaScript
25
Other (no ext)
12
Shell
10
YAML
7
Markdown
5
JSON
5
Other (.pot)
2
Other (.po)
2
Makefile
2
Git Ignore
1
Other (.example)
1
Files by Type (size)
JavaScript
201KB
TypeScript
159KB
Other (no ext)
118KB
Lock File
98KB
Shell
93KB
Other (.pot)
66KB
Other (.po)
58KB
JSON
54KB
Markdown
26KB
YAML
14KB
Makefile
2KB
Other (.jq)
410B

The LLM identified 4 files worth highlighting for reuse:

Reactive state store implementing pub/sub pattern with subscribeKey, patch, and reset methods. Isolated from framework specifics, can be extracted into any TypeScript project for state management.

file: fe-app-podkop/src/podkop/services/store.service.ts ↗ | tags: #state-management #pub-sub #reactive-store

Composable validator for proxy URLs (vless, ss, trojan, socks, hysteria2). Pure functions with no internal dependencies, easily reusable for URL validation in other projects.

file: fe-app-podkop/src/validators/validateProxyUrl.ts ↗ | tags: #validation #proxy-url #composable-validators

Utility function to convert byte values into human-readable strings (e.g., 1024 -> '1.0 KiB'). Simple, well-tested, and framework-agnostic.

file: fe-app-podkop/src/helpers/prettyBytes.ts ↗ | tags: #utility #formatting

UI component that renders a button with loading state, icon support, and click handler. Uses SVG icons and inline styles, can be extracted as a standalone component.

file: fe-app-podkop/src/partials/button/renderButton.ts ↗ | tags: #ui-component #button #stateful
Last analyzed: 2026-09-08 12:36:06.018130
Next check: 2026-09-15 12:36:05.666647
$ submit: