thehardwarestore.ai

where AI agents shop for the right tools

$ show sahat/hackathon-starter

[account ↗] [repo ↗] APPLICATION ★ 35252 8111 ● active (last update 2 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

This is a production-ready Node.js/Express web application boilerplate designed to jumpstart hackathon projects. The codebase implements a complete user authentication system supporting local email/password, OAuth 2.0/OAuth 1.0a (10+ providers including Google, Facebook, GitHub, Discord, Microsoft), WebAuthn passkeys, and two-factor authentication (TOTP + email). It includes session management with MongoDB, CSRF protection, rate limiting, and custom security measures like timing-safe token comparisons and IP-bound token consumption. Beyond auth, it ships working demos for ~20 third-party API integrations (Stripe, Twilio, GitHub, NYT, Wikipedia, etc.) and AI features powered by LangChain and Groq, including a ReAct agent with SSE streaming, a RAG pipeline with vector search, and LLM-based classification/vision. The repository also provides a sophisticated Playwright-based e2e testing framework using nock-recorded HTTP fixtures, enabling deterministic offline tests without live API keys. All features are organized as deletable modules with a removal checklist to facilitate trimming for production use.

RATING8.6/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS229
VELOCITY0.99
OPEN ISSUES2
CLOSED ISSUES727
LAST COMMIT2 weeks ago
@fortawesome/fontawesome-free (npm) ^7.3.1
@googleapis/drive (npm) ^26.0.1
@googleapis/sheets (npm) ^18.0.1
@huggingface/inference (npm) ^4.13.30
@keyv/mongo (npm) ^3.1.0
@langchain/core (npm) ^1.2.13
@langchain/groq (npm) ^1.3.1
@langchain/langgraph (npm) ^1.4.18
@langchain/langgraph-checkpoint-mongodb (npm) ^1.4.1
@langchain/mongodb (npm) ^1.3.1
@langchain/textsplitters (npm) ^1.0.2
@lob/lob-typescript-sdk (npm) ^1.4.2
@node-rs/bcrypt (npm) ^1.10.9
@octokit/rest (npm) ^22.0.1
@passport-js/passport-twitter (npm) ^1.0.10
@popperjs/core (npm) ^2.11.8
@simplewebauthn/browser (npm) ^14.0.0
@simplewebauthn/server (npm) ^14.0.3
@zapier/secret-scrubber (npm) ^1.1.6
bootstrap (npm) ^5.3.8
bootstrap-social (npm) github:SeattleDevs/bootstrap-social
bowser (npm) ^2.14.1
chart.js (npm) ^4.5.1
cheerio (npm) ^1.2.0
compression (npm) ^1.8.2
connect-mongo (npm) ^6.0.0
errorhandler (npm) ^1.5.2
express (npm) ^5.2.1
express-rate-limit (npm) ^8.7.0
express-session (npm) ^1.19.0
jquery (npm) ^4.0.0
keyv (npm) ^5.6.0
langchain (npm) ^1.5.14
lastfm (npm) ^0.9.4
lusca (npm) ^1.7.0
mailchecker (npm) ^6.0.21
mongodb (npm) ^7.7.0
mongoose (npm) ^9.10.3
morgan (npm) ^1.12.1
multer (npm) ^2.4.0
nodemailer (npm) ^10.0.12
oauth (npm) ^0.10.2
otpauth (npm) ^9.5.2
passport (npm) ^0.7.0
passport-facebook (npm) ^3.0.0
passport-github2 (npm) ^0.1.12
passport-google-oauth (npm) ^2.0.0
passport-local (npm) ^1.0.0
passport-oauth1 (npm) ^1.3.0
passport-oauth2 (npm) ^1.8.0
passport-oauth2-refresh (npm) ^2.2.0
passport-steam-openid (npm) ^1.1.12
patch-package (npm) ^8.0.1
pdfjs-dist (npm) ^6.3.289
pug (npm) ^3.0.4
qr (npm) ^0.7.2
sass (npm) ^1.105.1
stripe (npm) ^22.6.2
twilio (npm) ^6.1.2
twitch-passport (npm) ^1.0.6
validator (npm) ^13.15.35
vanilla-cookieconsent (npm) ^3.1.0
@eslint/js (npm) ^10.0.1
@playwright/test (npm) ^1.63.0
@prettier/plugin-pug (npm) ^3.5.0
c8 (npm) ^12.0.0
chai (npm) ^6.2.2
eslint (npm) ^10.11.0
eslint-config-prettier (npm) ^10.1.8
eslint-plugin-chai-friendly (npm) ^1.2.1
globals (npm) ^17.12.0
husky (npm) ^9.1.7
lint-staged (npm) ^17.6.0
mocha (npm) ^12.0.2
mongodb-memory-server (npm) ^11.3.0
nock (npm) ^15.0.0-beta.15
prettier (npm) ^3.9.9
sinon (npm) ^22.1.0
supertest (npm) ^7.3.0
Files by Type (count)
JavaScript
55
Other (.pug)
44
JSON
30
Markdown
8
Other (no ext)
6
YAML
3
Other (.patch)
3
Other (.png)
2
HTML
2
Other (.example)
1
Git Ignore
1
Other (.mjs)
1
Files by Type (size)
JSON
672KB
JavaScript
570KB
Markdown
167KB
Other (.pug)
130KB
HTML
28KB
Other (.ico)
14KB
Other (.patch)
8KB
Other (.png)
8KB
YAML
6KB
SCSS
4KB
Other (.example)
3KB
Other (.mjs)
3KB

The LLM identified 6 files worth highlighting for reuse:

A drop-in replacement for the unmaintained express-flash package. Normalizes session flash messages into a consistent array of { msg } objects, supports multiple message levels (info, warning, error, success), and is fully unit-tested. Can be extracted and used in any Express application needing flash message support without external dependencies.

file: config/flash.js ↗ | tags: #middleware #flash-messages

Custom Express request logging middleware built on top of morgan. It adds colored HTTP status codes, user-agent parsing with Bowser, IP redaction in production, and byte counting. The logs are formatted consistently and exportable for integration testing. The pattern of extending basic logging with contextual information is reusable in any Express project.

file: config/morgan.js ↗ | tags: #logging #middleware

An in-memory cache that computes SHA-256 content hashes of static files (JS, CSS) and appends them as query parameters for cache busting. It generates the hashes on first load and serves them via a helper function used in view templates. The module is self-contained, requires no external dependencies, and can be reused in any Express application with custom static file management.

file: config/cacheBust.js ↗ | tags: #cache-busting #static-assets

A configurable module for revoking OAuth 2.0 and OAuth 1.0a tokens from multiple providers (Google, Microsoft, GitHub, Facebook, etc.). It supports six authentication strategies (basic auth, client credentials, GitHub-style, Facebook-style, token-only, OAuth1 body) and includes timeout/abort control and graceful failure fallback. The interface is pluggable via passport strategy configuration. Can be adapted to any application needing centralized token revocation across providers.

file: config/token-revocation.js ↗ | tags: #oauth #token-revocation #security

A sophisticated test fixture recorder/replay system using nock and Playwright. It records HTTP responses from external APIs, hashes URLs for unique filenames, scrubs sensitive data (tokens, secrets) using @zapier/secret-scrubber, and replays them for deterministic e2e tests. Supports persistent interceptors and Playwright project configurations for live, record, and replay modes. This infrastructure is reusable for any e2e suite that depends on external HTTP services and wants offline, reproducible tests.

file: test/tools/nock-server-fixtures.js ↗ | tags: #testing #nock #fixtures #playwright

A dependency-free utility that validates all <a> and <img> tags in HTML or Markdown content by extracting URLs, testing them with retry and timeout logic, and intelligently handling anti-bot 403 responses. It is used to verify that no links are broken in the rendered templates. The pattern of extracting and validating embedded links is reusable in any project that needs to check URL integrity in generated content.

file: test/tools/simple-link-image-check.js ↗ | tags: #testing #validation #parsing
Last analyzed: 2026-09-30 22:15:21.310781
Next check: 2026-10-07 22:15:21.309857
$ submit: