SkinSync is a privacy-first, AI-powered skincare scanner that analyzes product ingredients and provides personalized insights based on your skin type, sensitivities, and history.
Built with a local-first architecture, the app minimizes backend dependency while delivering fast, intelligent results using OCR + LLM.
- Capture or upload product images
- Extract ingredients using OCR (VLM-based)
- Automatically parse ingredient lists
- Ingredient breakdown with benefits
- Conflict detection (ingredient interactions)
- Personalized warnings based on user profile
- Final safety verdict + score
- Skin type detection (onboarding)
- Sensitivity tracking (e.g. fragrance, acne triggers)
- Persistent user profile (stored locally)
- IndexedDB for scans & results
- localStorage for preferences & theme
- Works with minimal backend dependency
- Installable app experience
- Offline-friendly UI
- React (Vite)
- Tailwind CSS
- RunAnywhere SDK (OCR + VLM + LLM)
- Local model compatibility support
- IndexedDB (via
db.js) - localStorage
src/
│
├── ai/ # AI integration (OCR + LLM logic)
│ ├── compatibilityLLM.js
│ ├── modelLoader.js
│ ├── runanywhere.js
│ └── vlmOCR.js
│
├── components/ # Reusable UI components
├── pages/ # Main app screens (Dashboard, Results, etc.)
├── hooks/ # Custom React hooks
├── services/ # Business logic & API abstractions
├── utils/ # Core utilities
│ ├── db.js # IndexedDB logic
│ ├── storage.js # localStorage helpers
│ ├── ingredientParser.js
│ └── promptTemplates.js
│
├── assets/ # Static assets
│
├── App.jsx # Root component
├── main.jsx # Entry point
└── index.css # Global stylesgit clone <your-repo-url>
cd skinsyncnpm installnpm run devnpm run buildUser captures or uploads an image of a product.
vlmOCR.jsextracts ingredient text using a vision-language model
ingredientParser.jscleans and structures ingredients
-
compatibilityLLM.jsevaluates:- ingredient safety
- conflicts
- personalization
User sees:
- Ingredient breakdown
- Conflicts
- Warnings
- Final verdict
| Data Type | Storage |
|---|---|
| User profile | localStorage |
| Scan history | IndexedDB |
| AI results | IndexedDB |
- No mandatory backend
- No user data stored on servers
- All scans & preferences remain on-device (unless API is used)
- AI features require internet if using API-based models
- Fully offline mode requires locally hosted models
- Offline AI inference (WebGPU / local models)
- Multi-device sync (optional backend)
- Advanced ingredient scoring system
- Dermatology-grade recommendations
Pull requests are welcome. For major changes, open an issue first.
MIT License
SkinSync aims to make skincare transparent, personalized, and trustworthy by decoding complex ingredient lists into actionable insights — instantly.