A modern web application that uses AI to detect and analyze various skin conditions. Built with React, FastAPI, and PyTorch.
- 🔍 Real-time skin disease detection
- 🤖 AI-powered analysis and insights
- 📱 Responsive design for all devices
- 🌓 Dark/Light mode support
- 🔐 Google Authentication
- 💡 Detailed disease information and treatment recommendations
-
Core Framework
- React 18.x
- TypeScript 5.x
- Vite/React Scripts for build tooling
-
UI & Styling
- Tailwind CSS for utility-first styling
- Heroicons for UI icons
- React Dropzone for file uploads
- Headless UI for accessible components
-
State Management & Routing
- React Context API for global state
- React Router for navigation
-
Authentication & Backend Integration
- Firebase Authentication
- Firebase Firestore for database
- Firebase Storage for image storage
-
Development Tools
- ESLint for code linting
- Prettier for code formatting
- TypeScript for type safety
-
Core Framework
- FastAPI for REST API
- Python 3.8+
- Uvicorn ASGI server
-
Machine Learning
- PyTorch for deep learning
- DinoV2 model for image classification
- Custom dermatology model weights
-
AI & Natural Language Processing
- OpenRouter API for GPT integration
- Custom prompt engineering for medical insights
-
Image Processing
- Pillow (PIL) for image manipulation
- OpenCV for image preprocessing
-
Database & Storage
- Firebase Firestore
- Firebase Storage
-
Firebase Services
- Authentication API
- Firestore Database API
- Storage API
- Configuration: Environment variables for Firebase setup
-
OpenRouter API
- GPT model access
- Medical information generation
- Treatment recommendations
-
Custom ML Model API
- DinoV2-based skin disease classification
- Confidence scoring
- Disease detection endpoints
-
Version Control
- Git for source control
- GitHub for repository hosting
-
Development Environment
- Node.js 14+ for frontend
- Python 3.8+ for backend
- Virtual environment (venv) for Python dependencies
-
Package Management
- npm/yarn for frontend
- pip for Python packages
-
Environment Variables
.envfiles for configuration- Environment-specific settings
skin-disease-detection/
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # UI components
│ │ ├── context/ # React context providers
│ │ ├── config/ # Configuration files
│ │ ├── utils/ # Utility functions
│ │ └── types/ # TypeScript type definitions
│ └── public/ # Static assets
├── app/ # Backend application
│ ├── model/ # ML model handling
│ └── utils/ # Utility functions
├── main.py # FastAPI application entry
└── requirements.txt # Python dependencies
-
Authentication
POST /auth/login: User loginPOST /auth/register: User registrationPOST /auth/logout: User logout
-
Disease Detection
POST /detect: Upload and analyze skin imageGET /diseases: List supported diseasesGET /diseases/{id}: Get disease details
-
Monitoring
POST /monitoring/start: Start condition monitoringPOST /monitoring/check-in: Add progress check-inGET /monitoring/conditions: Get user's monitored conditionsGET /monitoring/progress/{id}: Get condition progress
-
Authentication
- Firebase Authentication
- JWT token management
- Secure session handling
-
Data Protection
- Environment variable management
- API key security
- Data encryption
-
Access Control
- Role-based access control
- User data isolation
- API rate limiting
-
Frontend
- Node.js environment
- Build optimization
- Environment configuration
-
Backend
- Python environment
- ML model deployment
- API server configuration
-
Infrastructure
- Firebase project setup
- API key management
- Environment variables
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- DinoV2 model for image classification
- OpenRouter for AI insights
- Firebase for authentication and database
- FastAPI for the backend framework
- React and Tailwind CSS for the frontend