SkinSense is a full-stack AI-powered skincare analysis platform that captures a user’s face image, analyzes skin condition using an ML model, and returns personalized skincare insights along with product recommendations.
This project demonstrates real-world microservice architecture, API communication, and AI integration.
This project is designed to help students understand:
- Full-stack application development
- Microservices architecture (Frontend + Backend + ML Service)
- REST API communication between services
- Image upload handling (multipart/form-data)
- Integration of AI/ML into real applications
- External API usage (RapidAPI)
- Debugging distributed systems
📸 React Frontend (Camera Capture)
↓
☕ Spring Boot Backend (/api/skin/analyze)
↓
🤖 FastAPI ML Service (/predict)
↓
🧠 AI Model Output (Skin Type + Concern)
↓
🌐 RapidAPI (Product Recommendations)
↓
📦 Final Response → Frontend UI
Make sure you have installed:
- Node.js (v16+)
- Java 17+
- Maven
- Python 3.8+
- React (Vite)
- TypeScript
- Tailwind CSS
- Axios
- Spring Boot (Java 17)
- REST APIs
- Multipart file handling
- HTTP client for ML communication
- Python
- FastAPI
- Image classification model (CNN / rule-based prototype)
- RapidAPI (Product Recommendation APIs)
SkinSense/
├── skinsense-frontend/ # React frontend
├── skinsense-backend/ # Spring Boot backend
├── skinsense-ml/ # FastAPI ML service
└── README.md
git clone <your-repo-link>
cd SkinSenseCreate:
skinsense-backend/src/main/resources/application.properties
Add:
server.port=8080
# ML Service URL (IMPORTANT)
ml.service.url=http://localhost:8000/predict
# RapidAPI Key
rapidapi.key=YOUR_RAPIDAPI_KEYCreate:
skinsense-frontend/.env
Add:
VITE_BACKEND_URL=http://localhost:8080cd skinsense-ml
pip install -r requirements.txt
uvicorn main:app --reloadRuns at:
http://localhost:8000
cd skinsense-backend
mvn spring-boot:runRuns at:
http://localhost:8080
cd skinsense-frontend
npm install
npm run devRuns at:
http://localhost:5173
- Type:
multipart/form-data - Key:
file
{
"skinType": "OILY",
"concern": "ACNE",
"tips": [
"Wash face twice daily",
"Use oil-free moisturizer"
],
"products": [
{
"name": "Gentle Face Wash",
"price": "₹299",
"rating": "4.3",
"image": "image_url",
"url": "product_link"
}
]
}- Spring Boot calls ML service using HTTP
- It requires the exact URL:
http://localhost:8000/predict
👉 This is NOT automatic 👉 Port must be explicitly configured 👉 Services are independent processes
Used to fetch:
- skincare products
- beauty recommendations
- external product listings
- Go to https://rapidapi.com/
- Create account
- Subscribe to a skincare/product API
- Copy API key
- Paste into:
rapidapi.key=YOUR_KEY- Never commit API keys to GitHub
- Use environment variables in production
- Invalid key → product section will fail
→ You are sending JSON instead of FormData
→ Ensure FastAPI is running on port 8000
→ Enable in backend:
@CrossOrigin(origins = "*")→ Check RapidAPI key + subscription
→ Allow browser permissions
- 📸 Live webcam capture
- 🤖 AI-based skin analysis
- 💡 Personalized skincare recommendations
- 🛍️ Product suggestions via external API
- ⚡ Microservice-based architecture
#Frontend
- Home Page Enhancement
- Design SignUp/Login Page
- Products Cards Enhancement in the Result Section
- About page Enhancement
- User authentication (JWT)
- Add Product Filtering
- Smarter Querying
- Better Ranking of Products
- Save scan history in database
- Deploy backend + ML service (cloud)
- Improve ML accuracy (deep learning model)
- Add dashboard analytics
- Add SignUp/Login Page
- Improve UI animations ✨
- Add dark mode 🌙
- Add loading skeletons ⏳
- Improve ML model accuracy 🤖
Shreya Pawar
This project, SkinSense, is independently developed by me as a full-stack + AI learning project.
## 🤝 Contributing
We welcome contributions!
Please check the CONTRIBUTING.md file for guidelines.
👉 Read the full guide here: [Contributing Guide](CONTRIBUTING.md)