A web-based platform for immersive, interactive 360° campus tours with an admin panel. Built with React + Vite, featuring Three.js-based panorama viewing, Firebase backend, and Cloudinary media hosting.
- 360° Panoramic Campus Tours: Explore campus spaces virtually.
- Experimental 3DGS Mode: Next-gen neural rendering (Gaussian Splatting).
- Admin Panel: Secure, password-protected editing of rooms, hotspots, and media.
- Accessibility: Designed for remote and mobility-impaired users.
- Modern UI: VisionOS-inspired glassmorphism, responsive design.
- React 19, Vite 7, Three.js (custom renderer)
- Firebase (Firestore, Auth, Hosting)
- Cloudinary (media CDN, uploads)
- Tailwind CSS v4, GSAP, React Router v7
- Install dependencies
npm install - Run development server
npm run dev - Build for production
npm run build
For initial setup and media upload:
npm run seed:install # Install scripts/ deps (first time only)
npm run seed # Upload images & write Firestore metadata
npm run seed:dry # Dry-run (no writes)
src/— App source codecomponents/— UI, layout, admin, and viewer componentsconfig/— Firebase & Cloudinary configconstants/— Shared design tokens (glassTokens.js)hooks/— Custom React hookspages/— Route-level pages (UserTourPage, AdminPanel, etc.)services/— Firestore and Cloudinary service logic
scripts/— Firestore/Cloudinary seed utilities (standalone npm workspace)public/— Static assetsdocs/— Architecture, API, and design documentation
Firestore:
departments/{deptId}/rooms/{roomId}/hotspots/{hotspotId}
- Rooms:
name,imageURL,imagePublicId,sortOrder - Hotspots:
type,pitch,yaw,text,description,targetRoomId,targetDeptId
- Functional React components only
- Use hooks for state/data logic
- Import shared tokens from
src/constants/glassTokens.js - All Firestore ops via
src/services/firestoreService.js - Lint before commit:
npm run lint
- See
docs/architecture.mdfor system design - See
docs/api.mdfor API details - See
docs/PRD.mdfor product requirements
Internal hackathon project — not for production use.