What to build
End the drift between the local Express+SQLite server and the Vercel serverless functions. They were meant to be kept in sync by hand and have diverged: the local server is missing the public-calcs, consolidated export, and fish-data routes (so the community feed 404s and Export History is broken in local dev), upload validation differs materially, and the local schema lacks the OAuth columns — so OAuth flows can't be exercised locally at all.
Decision needed first: either (a) extract each route's logic into shared handler modules consumed by both the serverless functions and a thin Express adapter (run against local Postgres or a Neon dev branch), or (b) retire the Express server and standardize local dev on vercel dev. Then migrate route-by-route rather than big-bang, and update CLAUDE.md/README to remove the "keep two implementations in sync manually" rule.
Context: AUDIT_REPORT.md §3.6, theme 4, and task 2.1 (branch claude/repo-audit-improvement-ozhlau); Open Question #3.
Acceptance criteria
Blocked by
These fix the contract first so the consolidation ports correct behavior, not bugs.
What to build
End the drift between the local Express+SQLite server and the Vercel serverless functions. They were meant to be kept in sync by hand and have diverged: the local server is missing the public-calcs, consolidated export, and fish-data routes (so the community feed 404s and Export History is broken in local dev), upload validation differs materially, and the local schema lacks the OAuth columns — so OAuth flows can't be exercised locally at all.
Decision needed first: either (a) extract each route's logic into shared handler modules consumed by both the serverless functions and a thin Express adapter (run against local Postgres or a Neon dev branch), or (b) retire the Express server and standardize local dev on
vercel dev. Then migrate route-by-route rather than big-bang, and update CLAUDE.md/README to remove the "keep two implementations in sync manually" rule.Context: AUDIT_REPORT.md §3.6, theme 4, and task 2.1 (branch
claude/repo-audit-improvement-ozhlau); Open Question #3.Acceptance criteria
Blocked by
These fix the contract first so the consolidation ports correct behavior, not bugs.