LegoApp — LEGO Set Collection Tracker
Full-stack LEGO set tracker built with Laravel 11 API and React SPA. Search any LEGO set, track which parts you own, find missing pieces, and buy them directly via BrickLink.

LegoApp is a full-stack LEGO collection tracker built as a decoupled architecture — a Laravel 11 REST API backend and a React SPA frontend communicating over HTTPS. The app integrates with the Rebrickable API to fetch live LEGO set and parts data, caching results in PostgreSQL to reduce external API calls. Users can search across LEGO sets, browse by theme, add sets to their personal collection, and track exactly which parts they own. The app calculates missing parts per set and generates direct BrickLink deep-links so users can purchase what they need in one click. On the backend, Laravel handles token-based authentication via Sanctum, email verification through Resend, password reset flows, and a global parts inventory model where owned bricks are tracked across all sets simultaneously. On the frontend, TanStack Router manages URL-driven state for search and theme browsing, while TanStack Query handles all data fetching, caching, and optimistic updates. The project is self-hosted on a personal VPS behind Nginx with PHP-FPM, SSL via Let's Encrypt, and a custom deploy script for one-command deployments. Register with your email to try the full experience — verification email will be sent instantly. test account: testadmin@gmail.com password: password123
- Set search with debounce, pagination, and theme filtering
- Browse by theme with featured theme cards and dropdown navigation
- Set detail page with full parts list, color indicators, and part images
- Per-part owned quantity tracking saved on blur — no save button needed
- Global parts inventory — owned bricks count across all sets simultaneously
- Missing parts finder with quantity gaps and direct BrickLink buy links
- Collection page with per-set progress bars showing completion percentage
- Full auth flow — register, email verification, login, forgot/reset password
- Profile settings with name change (7-day cooldown) and password change
- Rebrickable API integration with PostgreSQL cache-aside pattern
- Skeleton loaders, error boundaries, and 404 page
- Mobile responsive with hamburger menu
- Self-hosted on VPS with Nginx, PHP-FPM, SSL, and automated deploy script