# InteriorScan **Turn apartment photos into navigable 3D walkthroughs.** InteriorScan is a self-hosted SaaS platform for interior photogrammetry targeting real estate. Upload 30-100 photos of a property, the system reconstructs a 3D mesh (COLMAP + OpenMVS), and visitors navigate the space in first-person — like a Doom map of a real home. ## Why? Physical property visits are time-consuming and often unnecessary. InteriorScan lets potential buyers walk through a reconstructed interior from their browser, filtering out properties that don't fit before scheduling a visit. ## Features - 📸 **Photo-first capture** — iPhone/Android photos as baseline, LiDAR optional - 🎮 **FPS navigation** — WASD + mouse (desktop), tap-to-walk (mobile) - 🔗 **Share & embed** — public links + oEmbed for listing pages - 📐 **Measurements** — room dimensions overlaid on walkthrough - 🗺️ **Floor plans** — DXF/PDF export from reconstructed geometry - 🔌 **API-first** — every feature has REST API before UI - 🏠 **Self-hosted** — PostgreSQL + Valkey + GPU worker, no vendor lock-in ## Stack | Layer | Technology | |-------|-----------| | Framework | Next.js 16 (App Router) | | Monorepo | Turborepo + pnpm | | Database | PostgreSQL + Drizzle ORM | | Cache/Queue | Valkey | | 3D Viewer | three.js | | Processing | COLMAP + OpenMVS | | Auth | better-auth | | Billing | Stripe | | Lint | Biome 2.x | | Testing | Vitest v4 + Playwright | ## Quick Start ```bash pnpm install pnpm dev ``` ## Project Structure ``` interiorscan/ ├── apps/web/ # Next.js 16 App Router ├── apps/processor/ # GPU processing worker ├── packages/auth/ # better-auth + RBAC ├── packages/db/ # Drizzle schema + migrations ├── packages/viewer/ # three.js FPS walkthrough viewer ├── packages/ui/ # shadcn/ui v4 + Tailwind tokens ├── packages/utils/ # Zod, neverthrow, error catalog └── .specify/ # Constitution, specs, plans ``` ## License Apache-2.0