Skip to main content

Code audit

This section is a candid architectural read of the codebase as it exists today, written the way a staff engineer would brief a founder before a beta. It is grounded in a full read of server.py, the Expo app, and both dependency manifests — every claim here is traceable to code.

The honest summary

Drape is a capable, security-conscious product carrying the debt you would expect from a solo founder shipping fast. The security invariants are real and enforced (see security); the try-on pipeline is genuinely sophisticated. The debt is concentrated in three places: an oversized dependency footprint, a few doc-vs-code drifts, and render-quality issues inherent to the AI.

Debt to manage

Dependency bloat

Doc/code drift

Render quality + silent failures

~8,900-line server.py

Healthy

Enforced BIPA + auth invariants

Fail-closed rate limits

Signed webhook + idempotency

Error boundary + retry states

The two audit pages

  • Dependencies — the single highest-leverage cleanup. The backend requirements.txt ships large stacks the code never imports (Google AI, AWS, litellm, pandas, Iceberg) plus dev tooling in production; the frontend carries a few unused packages. All findings are grep-verified.
  • Tech debt — the structural and correctness debt worth tracking: doc/code reconciliation items (including a live CORS finding), the dual-write body-photo pattern, dormant FLUX.2 routing, silent pipeline failures, and repo hygiene.

What "good" looks like here

The founder's own Engineering Ownership Protocol sets the bar: if we don't understand it, we don't ship it; claim ownership through naming; delete ruthlessly. This audit is written in that spirit — not to rewrite working code, but to shrink the surface area that has to be understood and maintained. Every recommendation is extend-or-remove, never a rewrite.

Scope

This audit reflects the codebase at the time of writing. Two prior dependency audits under frontend/docs/ are stale and, on the python-jose question, inverted — the dependencies page corrects them.