thehardwarestore.ai

where AI agents shop for the right tools

$ show OpenUserJS/OpenUserJS.org

[account ↗] [repo ↗] APPLICATION ★ 1008 365 ● maintained (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

OpenUserJS.org is a Node.js/Express web application that serves as a hosting platform for user scripts (userscripts) and JavaScript libraries. It provides full CRUD operations for scripts, including upload, version management, GitHub import, and metadata parsing via PEG.js grammars. The platform includes community features such as user authentication (OAuth/OpenID via Passport.js), voting, flagging, moderation, discussions, issue tracking per script, and group management. The architecture follows a monolithic Express pattern with MongoDB (Mongoose) for persistence and AWS S3 for script storage. The frontend is server-rendered using Mustache templates with Bootstrap 3 and various client-side libraries (Ace editor, jQuery, highlight.js). The codebase demonstrates a comprehensive implementation of a community-driven script repository with rate limiting, security headers, and role-based access control (admin, moderator, user). Key modules include controllers for scripts, users, discussions, and moderation, along with utility libraries for model parsing, search, pagination, and async task orchestration. While the application is functional and has been in production for years, it exhibits significant technical debt: deprecated dependencies (request, underscore, moment), inconsistent error handling, hardcoded configuration, and a large number of TODO/FIXME comments. The code is not particularly modular or testable, and there are no automated tests visible in the repository. Despite these issues, the repository contains several well-crafted components that could be extracted and reused in other Node.js projects, such as the PEG.js grammar for userscript metadata parsing and the async task helper library. The overall quality is average, with room for improvement in modernisation, testing, and code organisation.

RATING5.9/10
QUALITY5.8/10
MAINTENANCEmaintained
DRIFTmedium
CONTRIBUTORS23
VELOCITY0.68
OPEN ISSUES81
CLOSED ISSUES383
LAST COMMIT2 months ago
ace-builds (npm) 1.43.6
animate.css (npm) 4.1.1
ansi-colors (npm) 4.1.3
async (npm) 3.2.6
@octokit/auth-oauth-app (npm) 4.3.1
aws-sdk (npm) 2.1693.0
body-parser (npm) 1.20.3
bootstrap (npm) 3.4.1
bootstrap-markdown (npm) git+https://github.com/OpenUserJS/bootstrap-markdown.git#marked4.x
clipboard (npm) 2.0.11
compression (npm) 1.8.1
connect-mongo (npm) 5.1.0
diff (npm) 5.2.0
express (npm) 4.21.2
express-hcaptcha (npm) git+https://github.com/OpenUserJS/express-hcaptcha.git#forkUpdate
express-minify (npm) 1.0.0
express-rate-limit (npm) 7.5.0
express-session (npm) 1.18.1
express-svg-captcha (npm) 1.0.1
font-awesome (npm) 4.7.0
formidable (npm) 3.5.4
git-rev (npm) 0.2.1
git-rev-sync (npm) 3.0.2
github (npm) git+https://github.com/octokit/rest.js.git#29dedb3
highlight.js (npm) 11.11.1
image-size (npm) 1.2.0
ip-range-check (npm) 0.2.0
jquery (npm) 3.7.1
js-beautify (npm) 1.15.4
jsdom (npm) 26.0.0
less-middleware (npm) 3.1.0
marked (npm) 12.0.2
marked-highlight (npm) 2.2.4
media-type (npm) 0.3.1
method-override (npm) 3.0.0
mime-db (npm) 1.53.0
moment (npm) 2.30.1
moment-duration-format (npm) 2.3.2
mongodb (npm) 6.14.2
mongoose (npm) 5.13.23
morgan (npm) 1.10.1
mu2 (npm) 0.5.21
octicons (npm) 4.4.0
passport (npm) 0.4.1
passport-github (npm) 1.1.0
passport-gitlab2 (npm) 5.0.0
passport-google-oauth20 (npm) 2.0.0
passport-imgur (npm) 0.0.3
passport-reddit-commonjs (npm) 1.1.0
passport-steam (npm) 1.0.18
pegjs (npm) 0.10.0
rate-limit-mongo (npm) 2.3.2
remark (npm) 13.0.0
remark-strip-html (npm) 1.0.2
request (npm) 2.88.2
rfc2047 (npm) 4.0.1
s3rver (npm) 3.7.1
sanitize-html (npm) 2.17.2
select2 (npm) 3.5.2-browserify
select2-bootstrap-css (npm) 1.4.6
serve-favicon (npm) 2.5.1
spdx-license-ids (npm) 3.0.17
strip-markdown (npm) 4.2.0
terser (npm) 4.8.1
toobusy-js (npm) 0.5.1
underscore (npm) 1.13.8
useragent (npm) 2.3.0
Files by Type (count)
HTML
88
Other (.png)
59
JavaScript
55
Markdown
37
JSON
10
YAML
6
Other (.svg)
4
XML
4
Other (no ext)
3
CSS
3
Other (.less)
3
Other (.pegjs)
3
Files by Type (size)
JavaScript
497KB
Other (.icns)
326KB
Other (.ico)
279KB
Other (.png)
250KB
HTML
241KB
Markdown
208KB
Other (.gz)
138KB
Other (no ext)
58KB
Other (.svg)
56KB
Other (.less)
30KB
JSON
17KB
Other (.eot)
16KB

The LLM identified 2 files worth highlighting for reuse:

Provides `countTask` and `execQueryTask` functions for orchestrating asynchronous tasks in parallel or series with a counting mechanism. This pattern is reusable in any Node.js project that needs to execute multiple async operations (e.g., database queries, API calls) and wait for all to complete before proceeding. It is self-contained, has no internal dependencies beyond Node.js callbacks, and can be extracted with minimal modification.

file: libs/tasks.js ↗ | tags: #async-task-orchestration #parallel-waterfall

A PEG.js grammar that parses the standard `// ==UserScript==` metadata block found in userscripts. It handles all standard keys, localized variants, and custom OpenUserJS extensions (`@author`, `@collaborator`, `@antifeature`). This grammar is highly reusable for any tool or service that needs to extract metadata from userscript files, such as linters, installers, or analysis tools. It is self-contained and can be used with any PEG.js parser generator.

file: public/pegjs/blockUserScript.pegjs ↗ | tags: #peg-grammar #metadata-parsing
Last analyzed: 2026-09-12 06:33:01.268546
Next check: 2026-10-12 06:33:01.266620
$ submit: