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)