ShowingBook — quality report QR-26-00122 | Vibe96

‹ ShowingBookQuality report QR-26-00122

ShowingBook
Vibe96 quality report

ShowingBook

Real estate CRM and viewing calendar for independent agents and small teams, with admin-managed accounts.

Product ID
B0549-98806
Builder
Raj's Builder Studio
Version reviewed
1.0.0 · released 12 Nov 2026
Stack
Express 4 (API); front end is vanilla JS with no framework · JavaScript (Node.js 22.13+, ES modules in the browser) · SQLite via Node built-in node:sqlite (requires Node 22.13+)
Built with
OpenAI Codex, Claude Code
Review period
3 Nov 2026 – 12 Nov 2026 · 2 rounds of changes
86out of 100 Passed with 3 warningsPass mark 75 and no failing check.

Scores

Security87
Code structure88
Docs & completeness67
Dependency health88
Build & deploy80
  1. AI code audit6 checks · 3 Nov 2026
  2. Installed & run12 Nov 2026
  3. Demo vs delivered12 Nov 2026
  4. Final sign-off12 Nov 2026

At a glance

  • Installed and run from the delivered code — 7 of 8 checks answered yes.
  • Live demo compared with the delivered code — 7 of 7 checks answered yes.
  • 10 of 15 promised items delivered (setup guide, example config and the rest).
  • Security scored 87/100 with no failing check.
  • 3 open warnings — explained in part 1.
Part 1

AI code audit

The full source archive was read by our AI auditor against each check. It reads the code — it does not run it; running it is part 2.

CheckWhat we foundScoreResult
Secrets & credentialsThe regex candidates are all code references (config reads, JWT signing calls, test logins), not committed secrets. .env.example uses a clear placeholder for JWT_SECRET, and the first-admin credentials are empty. The one concern is a known demo password that ships in seed.sql and is used by the live demo, with a SEED_DEMO flag that could load it on a real install.88Warning
Dependency vulnerabilitiesThe only manifest is a project file with a committed package-lock.json, and the Dockerfile installs with `npm ci`. Versions look current (Express 4.x, helmet 8, jsonwebtoken 9, bcryptjs 3, express-rate-limit 8) with no known critical advisories. Minor issues: caret ranges rather than exact pins, Express 4 is in maintenance mode, and the lockfile contents could not be inspected.88Pass
Authorisation & access controlEvery data route except login and health goes through requireAuth, which reloads the user from the DB. Admin routes sit behind requireRole('admin'), and all client, listing, viewing and task lookups filter by owner_id. Passwords are bcrypt-hashed. Remaining gaps are small: stale tokens after a password change, and a missing ownership check on a PUT that changes the owner of a linked client.93Pass
Database access rulesAll reviewed queries use bound parameters, and per-user reads, updates and deletes filter on owner_id. The one dynamic SQL path (owned.js) takes table and column names only from code constants. a project file was not in the excerpts, so foreign keys, cascades and indexes could not be confirmed, and a few points need attention.80Warning
Code structure & duplicationThe server is organised into focused modules (routes, middleware, validators, generic owner-scoped CRUD in owned.js), and files are small. The main weaknesses are repeated bcrypt/rate-limit setup, a CORS header block inlined in app.js, and a few hard-coded limits and literals that belong in config.88Pass
Build reproducibilityManifests, lockfile, Dockerfile and compose are coherent: node 22 base matches engines >=22.13, build context and COPY paths resolve, and dev deps are omitted in production. Gaps: HowToSetup.md was not in the digest so prerequisites and step order could not be verified, and the quick start's .env location plus the production defaults could trip a clean install.80Warning

Open warnings

Problems that did not stop the listing. They stay on the product page until a later version fixes them.

Warning 1 No real credentials found; shared demo password and demo seeding are weak-default risks

The regex candidates are all code references (config reads, JWT signing calls, test logins), not committed secrets. .env.example uses a clear placeholder for JWT_SECRET, and the first-admin credentials are empty. The one concern is a known demo password that ships in seed.sql and is used by the live demo, with a SEED_DEMO flag that could load it on a real install.

Warning 2 Build mostly reproducible; setup doc not visible and a few config/path gaps

Manifests, lockfile, Dockerfile and compose are coherent: node 22 base matches engines >=22.13, build context and COPY paths resolve, and dev deps are omitted in production. Gaps: HowToSetup.md was not in the digest so prerequisites and step order could not be verified, and the quick start's .env location plus the production defaults could trip a clean install.

Warning 3 SQL is parameterised and owner-scoped; schema files and some deletes/indexes could not be verified

All reviewed queries use bound parameters, and per-user reads, updates and deletes filter on owner_id. The one dynamic SQL path (owned.js) takes table and column names only from code constants. a project file was not in the excerpts, so foreign keys, cascades and indexes could not be confirmed, and a few points need attention.

Requirement list

What the builder agreed to deliver before uploading — 10 of 15 met.

  • Complete source for every component Partial
  • No real credentials in the archive Met
  • Builds from a clean machine Partial
  • Database script or migrations Met
  • Authentication and roles on every mutating endpoint Partial
  • Pinned dependencies without critical CVEs (nice)Partial
  • Documentation set (nice)Met
  • Working live demo Partial
  • README.md Met
  • HowToSetup.md Met
  • CLAUDE.md (or AGENTS.md) (nice)Met
  • CHANGELOG.md (nice)Met
  • .env.example Met
  • a project file Met
  • a project file (nice)Met
Part 2

Human review

Reviewers from the Vibe96 team in Dubai worked through each question below; a final reviewer signed it off.

Stage 1 — Installed and run from the delivered code

Completed 12 Nov 2026

A reviewer installed the product on a clean machine, following only the guide that ships with it.

QuestionAnswerReviewer's note
Packages restored without errorsYes
Solution builds cleanYes
Database created from the shipped script or migrationsYes
First sign-in works with the documented stepsYes
Setup guide is accurate and completeYes
Every module in the feature list opens and worksYes
No real secrets in the archiveYes
Branding and company details can be changed without codeNo

Stage 2 — Live demo compared with the delivered code

Completed 12 Nov 2026

A second reviewer checked that what the listing and demo show is what the buyer receives.

QuestionAnswerReviewer's note
Demo URL is reachableYes
Demo credentials workYes
Demo runs the same version as the archiveYes
All five differentiators are visible in the demoYes
Screenshots match the demoYes
Nothing in the demo is missing from the codeYes
Datasheet claims are accurateYes

Changes asked for during review

  • None — approved on the first round.
  • Sign-off: approved for sale on 12 Nov 2026 with 3 warnings shown publicly.

What this report covers — and what it doesn't

  • It covers version 1.0.0 exactly as the buyer downloads it: the source archive, the setup guide and the live demo on the dates above.
  • It is not a penetration test, a performance or load test, or a legal review of third-party package licences.
  • Scores are a point in time. Libraries age; a later version is audited again and gets its own report.
  • Your setup matters. Hosting, configuration and changes made after purchase are outside this review.
  • How the score is made: each AI check is scored 0–100 and weighted (security counts most). A listing needs 75 or more, no failing check, and the human review passed.
  • Always try the live demo before buying, and ask the builder questions from the product page.

Vibe96 FZ-LLC, Dubai, UAE. This report describes the product at the time of review and is not a warranty.