Skip to content

Scaffold VaultLens MVP foundation with mock providers and docs - #1

Open
DanFashauer wants to merge 1 commit into
mainfrom
codex/create-github-repo-for-vaultlens-mvp
Open

Scaffold VaultLens MVP foundation with mock providers and docs#1
DanFashauer wants to merge 1 commit into
mainfrom
codex/create-github-repo-for-vaultlens-mvp

Conversation

@DanFashauer

Copy link
Copy Markdown
Owner

Motivation

  • Create a minimal, mobile-first web MVP scaffold for VaultLens so product workflows (scan → identify → value → save) can be iterated quickly.
  • Use a provider architecture so market/grading/identification logic can be mocked now and swapped to real APIs later.
  • Prepare Supabase-ready schema and developer docs to make on‑boarding and later integration straightforward.

Description

  • Added a Next.js + TypeScript + Tailwind app scaffold with global layout, styling, and navigation, and App Router pages for Home, Scan, Collection, and Card detail.
  • Implemented provider interfaces in src/lib/providers/interfaces.ts and mock implementations in src/lib/providers/mock-provider.ts with wiring helpers in src/lib/{card-identification,market-data,grading-data}.ts.
  • Added domain types in src/types/card.ts, a mock collection in src/lib/mock-collection.ts, simple confidence helper in src/lib/confidence.ts, and API route placeholders under src/app/api/{cards,scan,market}/route.ts.
  • Added product docs (docs/PRODUCT_BRIEF.md, docs/MVP_SCOPE.md, docs/DATA_PROVIDERS.md, docs/ROADMAP.md), Supabase schema at supabase/schema.sql, .env.example, and updated README.md with setup instructions.

Testing

  • Attempted to install dependencies with npm install, but the run failed due to registry access returning 403 Forbidden, so automated install/build/lint checks could not be executed in this environment.
  • No other automated tests or build steps were run after the scaffold due to the environment registry restriction.

Codex Task

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f13d852ca1

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/components/nav.tsx
return (
<nav className="mb-6 flex gap-4 rounded-lg border bg-white p-3 text-sm shadow-sm">
{links.map((link) => (
<Link key={link.href} className="font-medium text-slate-700 hover:text-slate-900" href={link.href}>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve typed route literals in nav links

With experimental.typedRoutes enabled in next.config.mjs, Next's generated <Link> type rejects arbitrary string hrefs. This mutable links array widens each href to string, so href={link.href} fails type checking during next build even though the literal values are valid routes; keep the array as const/satisfies a route type or cast before passing to <Link>.

Useful? React with 👍 / 👎.

import { mockCollection } from "@/lib/mock-collection";

export default function CardDetailPage({ params }: { params: { id: string } }) {
const result = mockCollection.find((item) => item.card.id === params.id) ?? mockCollection[0];

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Return a 404 for unknown card ids

When the requested params.id is not in the collection, this falls back to mockCollection[0], so /card/anything-else renders the Michael Jordan card as if it matched the URL. That can mislead users and later leak or misattribute collection data once these IDs come from persistence; use notFound() or an explicit missing-card state instead of showing another card's details.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant