An intelligent skin assessment tool that curates personalized product recommendations tailored to your unique skin needs. Built with a modern React frontend and a Supabase backend to deliver AI-driven insights directly to you.
- 6-Step guided quiz collecting comprehensive skin data:
- Basic Info — Age range & gender
- Skin Type — Oily, Dry, Combination, Sensitive, or Normal
- Skin Concerns — Multi-select from acne, dark spots, wrinkles, pigmentation, dullness, and more
- Lifestyle — Climate, allergies & sensitivities
- Preferences — Skin goals & budget range
- Face Photo (optional) — Capture or upload a photo for visual AI skin analysis
- Progress indicator with step validation ensuring data completeness
- Allergy awareness — AI avoids recommending products with flagged ingredients
- Detailed product suggestions based on your quiz profile
- Visual skin analysis — When a face photo is provided, visual conditions (acne, redness, dryness, texture issues) are analyzed
- Recommendations include:
- Product name & brand
- Key ingredients breakdown
- Why it's suitable for your skin
- Usage instructions
- Safety warnings & allergen alerts
- Price range & purchase links
- Real-time webcam face detection using TensorFlow.js BlazeFace model
- Face bounding box overlay for guided photo capture
- File upload fallback — Upload an existing photo if camera isn't available
- Auto face detection validation — Ensures a face is detected before capture
- Full history of all past skin assessments with timestamps
- Expandable details — View assessment parameters and product recommendations for each entry
- Favorite products with a single click and view them in a dedicated Favorites page
- Authentication with email/password registration and login
- User profiles with full name and email management
- Protected routes — Quiz, Results, History, and Favorites require authentication
- 🌗 Dark/Light mode with system preference detection and manual toggle
- Responsive design — Fully mobile-friendly with touch-optimized interactions
- shadcn/ui component library — Polished, accessible UI components built on Radix UI
- Toast notifications — Elegant feedback for all user actions
| Technology | Purpose |
|---|---|
| React 18/19 | UI library with modern hooks |
| JavaScript (ES2020+) | Modern client logic & component structure |
| Vite | Lightning-fast dev server & build tool |
| React Router DOM | Client-side routing & navigation |
| Tailwind CSS | Utility-first CSS framework |
| shadcn/ui | Accessible component library (Radix UI) |
| TanStack React Query | Server state management & data fetching |
| Lucide React | Beautiful icon library |
| React Hook Form + Zod | Form management with schema validation |
| Technology | Purpose |
|---|---|
| Supabase | Authentication, Database, and Backend services integration |
| Technology | Purpose |
|---|---|
| TensorFlow.js | Client-side face detection (BlazeFace model) |
- Node.js v18+ (or Bun)
git clone https://github.com/Sjjcnr/SkinWise.git
cd SkinWisenpm install
# or
bun installCreate a .env file in the root and add your Supabase connection strings:
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-anon-key-herenpm run dev
# or
bun run devOpen http://localhost:5173 in your browser.
npm run build
npm run previewSkinWise/
├── index.html # Vite entry HTML
├── package.json # Dependencies & scripts
├── vite.config.js # Vite configuration
├── tailwind.config.js # Tailwind CSS theme & plugins
├── jsconfig.json # JavaScript configuration & path aliases
├── components.json # shadcn/ui configuration
│
├── public/
│ └── ...
│
├── src/
│ ├── main.jsx # React entry point
│ ├── App.jsx # Root component with routing
│ ├── index.css # Global styles
│ │
│ ├── types/ # Domain constants & models
│ ├── contexts/ # React Contexts (e.g. AuthContext)
│ ├── hooks/ # Custom hooks (e.g. useAssessment)
│ ├── integrations/ # Third-party integrations (Supabase)
│ ├── lib/ # Utility functions
│ │
│ ├── pages/ # Route components
│ │ ├── Index.jsx # Landing page
│ │ ├── Auth.jsx # Authentication
│ │ ├── Quiz.jsx # Skin assessment wizard
│ │ ├── Results.jsx # Recommendations display
│ │ ├── History.jsx # Past assessments
│ │ ├── Favorites.jsx # Saved products
│ │ └── Profile.jsx # User settings
│ │
│ └── components/ # Reusable UI components
│ ├── quiz/ # Quiz steps
│ └── ui/ # shadcn/ui base components
│
└── ...
Contributions are welcome! Feel free to open an issue or submit a pull request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the ISC License.
Built with ❤️ using React, JavaScript, Supabase, and Tailwind CSS