Build MVP for “FitsWith” — Parts Compatibility Matrix (Next.js / TypeScript / Postgres)
Upwork

Remote
•3 hours ago
•No application
About
Need a senior full-stack dev to build the MVP for FitsWith — a scalable motorcycle-parts compatibility matrix. You’ll design a clean TypeScript / Next.js / Postgres schema, fast search UI, admin CRUD, CSV import/export, and an embeddable “Fits?” widget. Must plan for millions of records, crowd-verified data, confidence scoring, and future multi-part (n-way) compatibility. I'm building a web app called FitsWith — a searchable parts-compatibility matrix for adventure motorcycles. The goal: let users see which aftermarket parts fit each bike, which combinations conflict, and under what conditions (for example, "fits only with high fender", "interferes with X crash bars"). This is an MVP for a long-term product. It needs a clean, scalable schema, fast search/filter UI, admin CRUD, CSV import/export, and a small embeddable "Fits?" widget for product pages or forums. Scalability and Architecture Requirements: The platform must handle hundreds of brands, thousands of bikes, and tens of thousands of parts — growing into millions of records over time. You’re designing something expandable, not a throwaway demo. Schema must support: -Efficient indexing, pagination, and server-side filtering. -Future multi-part (n-way) compatibility: one bike plus five parts interacting together. -Extensible models for new brands, categories, and accessories without schema rewrites. -Proper migrations, normalization, and keys/constraints to prevent data rot. -Query performance target: under 300 ms P95 on hosted infrastructure (Vercel plus managed Postgres). -Data Integrity and Confidence System -We’ll crowdsource compatibility data, so we need a way to trust and score it. Core rules: -Each compatibility record (bike to part) has a confidence score (0–1) calculated from user verifications weighted by contributor credibility. -Each contributor has a credibility score that rises with accurate submissions and drops with flagged or reverted ones. -Multiple users can submit info to the same combo; confidence increases as more credible users agree. -Schema must include these fields in MVP even if the UI doesn’t show them yet. Entities: -Bikes: Make, Model, Generation, Year range, Region/Trim (normalized). Parts: -Brand, SKU, Category, Version/Revision, Status, Aliases/Variants. CompatibilityEdge: Part to Bike with fields: -status: Fits / Fits with Mod / Conflicts / Unknown -notes: text field (conditions, caveats) -confidence_score (float) -created_by, verified_by, timestamps -Verification: records of user votes or verifications. -ModificationDetail (for "Fits with Mod"): text, measurements, up to three photos, optional link. -Notes: per-combo comments for install tips or clarifications. -Audit: tracks who changed what and when. Core MVP Features: -Search and filter by bike, part brand/category, and fit status. -Bike shows compatible parts; Part shows compatible bikes. -Public read-only, contributors can suggest edits or verifications. -Admin CRUD with CSV import/export (I’ll provide initial CSVs). -Authentication (NextAuth or similar). -Embeddable JS widget showing compatibility snippet with caching (CDN-friendly). -CSV import validates and previews diffs before commit. -Postgres plus Prisma plus TypeScript; deploy to Vercel/Supabase; include error tracking/logging. -All IP and work belong to me. Milestones: -M0 – Architecture and Schema Brief (1–2 days) -Deliver ERD and short doc explaining schema, indexes, caching, and growth plan. -M1 – Data Model and Admin CRUD (1–2 weeks) -M2 – Public App and Search (1–2 weeks) -M3 – Embeddable Widget (about 1 week) -M4 – Hardening and Handoff (3–5 days)





