How eunseong-jo/capstone works
Swappy is a personalized skincare-commerce app: users create a skin profile through Q&A or photo analysis, then browse skin-fit recommendations and ingredient-based cheaper alternatives; budget routines and a profile-aware chatbot extend that journey. The graph preserves the README’s major capabilities and the central backend, persistence, and frontend layers. Relationships are limited to README-documented behavior and source-index references; some implementation details were not sampled, so uncertain links are omitted.
Main entry points: chat.py Chat API · main.py FastAPI Router · diagnosis.py Diagnosis API · App.tsx App Navigation
Components 29
User App
- App Navigation
frontend/src/App.tsx - API Client
frontend/src/api/client.ts - Auth State
frontend/src/context/auth.ts - Diagnosis Screens
frontend/src/pages/Onboarding/index.tsx - Home and Profile
frontend/src/pages/Home/index.tsx
Skin Profiling
- Diagnosis API
backend/app/api/diagnosis.py - Skin Type Diagnosis
backend/app/services/diagnosis.py - Skin Photo API
backend/app/api/skin_photo.py - Photo Analysis
backend/app/services/skin_photo.py - Photo Validation
backend/app/services/face_gate.py
Product Intelligence
- Product API
backend/app/api/products.py - Recommendation API
backend/app/api/recommendations.py - Ingredient Similarity
backend/app/services/similarity.py - Skin Fit Scoring
backend/app/services/skin_fit.py - Budget Routines
backend/app/services/budget_guide.py
Personal AI
- Chat API
backend/app/api/chat.py - Product RAG
backend/app/services/rag.py - Personal Context
backend/app/services/personal_context.py - AI Memory
backend/app/services/memory.py - LLM Providers
backend/app/services/llm.py - Chat Fallback
backend/app/services/chat_fallback.py
API and Data
- FastAPI Router
backend/app/main.py - DB Sessions
backend/app/db/session.py - Product Models
backend/app/models/product.py - User Models
backend/app/models/user.py - Personal Models
backend/app/models/personal.py - Cache and Limits
backend/app/core/cache.py - Weather API
backend/app/api/weather.py
Other components
- Skincare Shopper
Connections 32
- Skincare Shopper → App Navigation: uses
frontend/src/App.tsx - App Navigation → Diagnosis Screens: routes to
frontend/src/App.tsx - App Navigation → Home and Profile: routes to
frontend/src/App.tsx - Diagnosis Screens → API Client: requests diagnosis
- Home and Profile → API Client: requests products
- API Client → FastAPI Router: HTTP requests
- FastAPI Router → Diagnosis API: registers router
backend/app/main.py - FastAPI Router → Product API: registers router
backend/app/main.py - FastAPI Router → Recommendation API: registers router
backend/app/main.py - FastAPI Router → Chat API: registers router
backend/app/main.py - FastAPI Router → Weather API: registers router
backend/app/main.py - Diagnosis API → Skin Type Diagnosis: uses
backend/app/api/diagnosis.py - Skin Photo API → Photo Validation: validates photo
README.md - Skin Photo API → Photo Analysis: analyzes photo
README.md - Diagnosis API → Photo Analysis: combines photo scores
README.md - Product API → Ingredient Similarity: serves similar products
README.md - Recommendation API → Skin Fit Scoring: uses skin fit
README.md - Budget Routines → Skin Fit Scoring: shares scoring
README.md - Chat API → Product RAG: retrieves products
backend/app/api/chat.py - Chat API → Personal Context: loads context
backend/app/api/chat.py - Chat API → AI Memory: uses memory
backend/app/api/chat.py - Chat API → LLM Providers: requests response
backend/app/api/chat.py - Chat API → Chat Fallback: falls back
backend/app/api/chat.py - Product RAG → Skin Fit Scoring: filters by fit
backend/app/services/rag.py - Diagnosis API → DB Sessions: uses session
backend/app/api/diagnosis.py - Product API → Product Models: queries products
- Chat API → User Models: loads user
backend/app/api/chat.py - Chat API → Personal Models: reads memory
backend/app/api/chat.py - Chat API → Cache and Limits: uses cache
backend/app/api/chat.py - LLM Providers → Skincare Shopper: calls providers
README.md - Photo Analysis → Skincare Shopper: sends analysis request
README.md - Weather API → Skincare Shopper: fetches weather
README.md