Skip to content

flongstaff/lenovocompare-ch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

145 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

LenovoCompare CH

A local-first Swiss-market Lenovo laptop comparison tool covering 124 models across four lineups: ThinkPad, IdeaPad Pro, Legion, and Yoga (2018–2025).

Built with Next.js 14 and a dark IBM Carbon-inspired aesthetic. All specs are hardcoded from public PSREF data — no scraping, no external APIs, no tracking.

Home grid Model detail Compare view

Features

  • Browse & filter — Grid of 124 models filterable by lineup (ThinkPad / IdeaPad Pro / Legion / Yoga), series, and sort order
  • Model detail pages — Full specs, config selector, performance radar, benchmark charts, thermal/battery data, Linux compatibility, editorial analysis
  • Side-by-side compare — Compare up to 4 models with CPU, GPU, portability, and performance radar charts
  • Swiss pricing — User-contributed CHF prices stored in localStorage with import/export, seed prices for all models
  • Hardware guide — Curated CPU and GPU analysis with strengths, weaknesses, thermal notes, and alternatives
  • Scoring system — Absolute (cross-lineup) scoring across 6 dimensions: Performance, Display, Memory, Connectivity, Portability, Value
  • Upgrade simulator — RAM/storage upgrade simulation with memory score comparison
  • Gaming analysis — GPU benchmarks with FPS estimates and gaming tier classification
  • Linux compatibility — Per-model certification status, supported distros, kernel and driver notes
  • Mobile-friendly — Swipeable compare cards, responsive grid, touch-optimized filters

Tech Stack

Layer Technology
Framework Next.js 14 (App Router)
Language TypeScript 5
Styling Tailwind CSS 3 + IBM Carbon dark theme
Charts recharts
Animations framer-motion
Icons lucide-react
Testing Vitest
CI/CD GitHub Actions (lint, test, build, CodeQL, GitHub Pages deploy)

Getting Started

Prerequisites

  • Node.js 20+
  • npm

Install & Run

git clone https://github.com/flongstaff/lenovocompare-ch.git
cd lenovocompare-ch
npm install
npm run dev

Open http://localhost:3000.

Docker

docker compose up

Dev server runs on port 3000.

Commands

npm run dev       # Development server
npm run build     # Production build (includes data validation)
npm run lint      # ESLint
npm test          # Vitest unit tests

Project Structure

app/                    # Next.js App Router pages
  model/[id]/           #   Model detail page
  compare/              #   Side-by-side comparison
  pricing/              #   Price management
  hardware/             #   CPU/GPU hardware guide
components/
  charts/               # recharts: radar, bar, FPS, thermal, battery
  compare/              # Compare table, mobile cards
  filters/              # Lineup, series, sort filters
  pricing/              # Price input, import/export
  models/               # Model detail components
  ui/                   # Shared UI (ScoreBar, Toast, ErrorBoundary)
  layout/               # Header, Footer
data/
  laptops.ts            # 100 models with full PSREF specs
  cpu-benchmarks.ts     # 80+ CPUs with single/multi/composite scores
  gpu-benchmarks.ts     # 28+ GPUs with gaming tiers and FPS estimates
  model-benchmarks.ts   # Per-model chassis benchmarks (thermals, battery, SSD)
  linux-compat.ts       # Per-model Linux compatibility
  model-editorial.ts    # Curated editorial for all models
  hardware-guide.ts     # CPU/GPU analysis and recommendations
  seed-prices.ts        # ~212 curated Swiss prices in CHF
  price-baselines.ts    # MSRP, retail, and historical price baselines
lib/
  types.ts              # Core interfaces (Laptop, Lineup, SwissPrice, etc.)
  scoring.ts            # Scoring engine (CPU, GPU, display, memory, etc.)
  analysis.ts           # Auto-generated pros/cons, use cases, verdicts
  constants.ts          # App constants, retailers, colors
  hooks/                # Custom React hooks
  retailers.ts          # Swiss retailer URL builders
  formatters.ts         # CHF, weight, date, storage formatters
  filters.ts            # Filter logic
tests/                  # Vitest unit tests

Data Sources

All data comes from publicly available sources. We gratefully acknowledge the original creators:

All game titles, benchmark tools, and product names are trademarks of their respective owners. No retailer websites are scraped. Review links are outbound only.

Contributing

See CONTRIBUTING.md for setup instructions, coding conventions, and data contribution guidelines.

The most impactful contributions are data additions — new laptop models, benchmark updates, Linux compatibility notes, and Swiss price data.

Community

License

MIT

Releases

No releases published

Packages

 
 
 

Contributors