GlassVision is an interactive palette explorer for architectural and specialty glass. It showcases a curated dataset of glass tones together with optical performance metrics so designers can quickly compare candidates before committing to a build.
- 🔍 Powerful filtering – Search by name, hue family, or tags and refine by use category or light transmission band.
- 🎨 Visual palette – Browse rich cards with swatches, reflectance values, and quick optical stats.
- 🧪 Detailed profiles – Inspect each tone with material descriptions, dominant elements, and recommended applications.
- 📊 At-a-glance insights – View collection-wide metrics including average reflectance and top usage categories.
- 🔐 Firebase-secured workspace – Require an authenticated session before exploring the palette and manage accounts directly within the app.
-
Install dependencies:
npm install
-
Provide your Firebase credentials. Copy
.env.exampleto.env.local(or similar) and fill in the values from your Firebase project:cp .env.example .env.local
Variable Description VITE_FIREBASE_API_KEYWeb API key from the Firebase console. VITE_FIREBASE_AUTH_DOMAINAuth domain (usually <project>.firebaseapp.com).VITE_FIREBASE_PROJECT_IDFirebase project ID. VITE_FIREBASE_STORAGE_BUCKETStorage bucket name (optional for auth-only apps). VITE_FIREBASE_MESSAGING_SENDER_IDMessaging sender ID. VITE_FIREBASE_APP_IDWeb app ID. VITE_FIREBASE_AUTH_EMULATOR_URLOptional: URL to a local Auth emulator (e.g., http://localhost:9099). -
Run the development server:
npm run dev
-
Build for production (for Firebase hosting or any static host):
npm run build
-
Preview the production build locally:
npm run preview
The Vite build outputs static assets in dist/, ready to be deployed to Firebase Hosting. The project uses TypeScript and React 18.
Each glass entry implements the following interface:
interface GlassColor {
id: string;
name: string;
hueGroup: string;
hex: string;
lightTransmission: 'low' | 'medium' | 'high';
reflectance: number;
dominantElement: string;
category: 'Architectural' | 'Art' | 'Laboratory' | 'Automotive' | 'Decorative';
description: string;
applications: string[];
tags: string[];
}The sample dataset lives in src/data/glassPalette.ts. Add, remove, or edit entries to reflect your real catalog.
- Enable the Email/Password provider (or any other provider you plan to support) in Firebase Authentication. The in-app forms currently support email-based sign in, sign up, and password resets out of the box.
- Optional: start the Firebase Auth emulator (
firebase emulators:start --only auth) and setVITE_FIREBASE_AUTH_EMULATOR_URLfor local development without touching production users. - The authentication state is exposed through
AuthContext, making it easy to add role-based logic or connect Firestore/Realtime Database queries once your backend is ready.
This project is provided as-is for demonstration purposes.