Project Info
Inspiration
Consumers are expected to make healthy and safe choices, yet the information needed to do so is often scattered, technical, or hidden in regulatory databases, lawsuits, and long reports. Most people don’t have the time or expertise to interpret FDA violations, recalls, or media investigations before buying or consuming a product. We wanted to make product transparency instant and accessible, allowing anyone to quickly understand whether a product is safe, trustworthy, and healthy.
What it does
FluxCareAI lets users take a photo of a consumer product and receive a clear, evidence-backed safety and trust report about the product and the company behind it. The app identifies the product, resolves the correct manufacturer, and analyzes lawsuits, FDA warnings, recalls, and documented safety concerns. Results are presented in a client-friendly format explaining what was found, what the risks are, and gives recommendations to the client.
How we built it
We built FluxCareAI using Expo with React Native for the mobile app and FastAPI for the backend. The frontend handles image capture and report display, while the backend coordinates a multi-agent AI pipeline. After a photo is submitted, AI agents identify the product, resolve the correct company, gather evidence from the FDA, lawsuits, and news sources, and synthesize the findings into a client-friendly report.
Challenges we ran into
A major challenge was defining the right context and scope for each AI agent. Overly broad research instructions caused agents to take on too much work, which could disrupt the report-generation process. We solved this by clearly constraining each agent’s role, improving reliability and performance.
Accomplishments we're proud of
We are proud to build a fully functional end-to-end system that turns a simple product photo into a detailed, evidence-backed safety report. We’re especially proud of creating a multi-agent AI pipeline that reliably gathers regulatory and legal information while enforcing credibility and transparency before reaching the user.
What we learned
We learned the importance of clear task definition and scoped responsibilities when working with multiple AI agents. We also gained experience translating complex regulatory and legal data into information that is clear, accurate, and usable for everyday consumers.
What's next
With sufficient funding, we plan to evolve FluxCareAI into a fully released product or startup. Next steps include scaling the infrastructure, expanding coverage across more product categories, improving real-time data access, and refining the user experience to make FluxCare a trusted consumer safety tool.
Image Upload Feature
This feature allows users to upload images or take photos directly from their mobile device and send them to a backend API.
Frontend Implementation
Features
- Camera Access: Take photos directly from the camera
- Gallery Access: Select images from the device's photo library
- Image Preview: Shows selected image before upload
- Upload Progress: Loading indicator during upload
- Error Handling: User-friendly error messages
- Permissions: Automatic permission requests for camera and media library
API Configuration
The API endpoint is configured via environment variable in frontend/.env:
EXPO_PUBLIC_API_BASE_URL=http://192.168.1.42:8000
The upload endpoint is /api/upload.
Usage
- Tap "Upload / Take Picture" button
- Choose between "Take Photo" or "Choose from Gallery"
- Grant necessary permissions if prompted
- Preview the selected image
- Tap "Upload Image" to send to backend
- Success/error message will be displayed
Backend Implementation
FastAPI Server
The backend uses FastAPI with automatic OpenAPI documentation.
Running the FastAPI Server
-
Install dependencies:
cd backend pip install -r requirements.txt -
Start the server:
# Using the startup script ./start-server.sh # Or manually uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 -
Access points:
- API:
http://localhost:8000 - Documentation:
http://localhost:8000/docs - Health check:
http://localhost:8000/api/health
- API:
API Requirements
Endpoint: POST /api/upload
Content-Type: multipart/form-data
Form Field: image (file upload)
Response Format:
{
"success": true,
"message": "Image uploaded successfully",
"image": {
"filename": "image-123456789.jpg",
"originalName": "photo.jpg",
"size": 1024000,
"mimetype": "image/jpeg",
"path": "uploads/image-123456789.jpg",
"uploadedAt": "2024-01-17T12:00:00.000Z"
},
"analysis": {
// Your AI/ML analysis results here
}
}
Error Responses
{
"error": "Error message",
"details": "Additional error details"
}
Setup Instructions
Frontend
- Packages are already installed (
expo-image-picker,expo-media-library) - Environment variable is configured in
.env - Update
EXPO_PUBLIC_API_BASE_URLto match your server IP/port
Backend
- Install Python dependencies:
pip install -r requirements.txt - Create
uploads/directory in backend folder - Run the server:
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 - Update frontend
.envwith correct server URL
Security Considerations
- Implement authentication/authorization
- Validate file types and sizes
- Consider rate limiting
- Store uploaded files securely
- Add image processing/validation
Customization
- Modify image quality/compression in
ImagePicker.launchCameraAsync()andlaunchImageLibraryAsync() - Change upload limits in the backend
- Add image resizing/processing
- Implement authentication headers
- Add progress indicators for large uploads
Auth0 Authentication Setup
The app includes Auth0 authentication integration. When users are not signed in, the history section shows "Login to save history!" with a login button.
Auth0 Setup Steps
-
Create Auth0 Account & Application:
- Go to auth0.com and create an account
- Create a new Application (Native App)
- Note down your Domain and Client ID
-
Configure Allowed Callback URLs:
- In Auth0 Dashboard → Applications → Your App → Settings
- Add these URLs to "Allowed Callback URLs":
http://localhost:8081,http://localhost:8082,exp://localhost:8081,exp://localhost:8082 - Add to "Allowed Logout URLs":
http://localhost:8081,http://localhost:8082,exp://localhost:8081,exp://localhost:8082
-
Update Environment Variables:
- Edit
frontend/.env:EXPO_PUBLIC_AUTH0_DOMAIN=your-domain.auth0.com EXPO_PUBLIC_AUTH0_CLIENT_ID=your-client-id EXPO_PUBLIC_AUTH0_AUDIENCE=https://your-api-identifier
- Edit
-
Update App Configuration:
- Edit
frontend/app.jsonin the react-native-auth0 plugin section:[ "react-native-auth0", { "domain": "your-domain.auth0.com", "clientId": "your-client-id" } ]
- Edit
Authentication Features
- Login/Logout: Available through the drawer menu
- User Info: Shows user name and email in drawer when authenticated
- Conditional UI: History section changes based on auth state
- Token Management: Automatic token storage and refresh
Testing Authentication
- Start the app:
npm start - Open drawer (☰ button)
- Tap "Log In / Sign Up"
- Complete Auth0 authentication flow
- User info should appear in drawer
- History section should show "No history yet..." instead of login prompt
Analysis
View
Metric
- 8
- 7
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- FastAPIIn code
- JavaScriptIn code
- PythonIn code
- ReactIn code
- TypeScriptIn code
- AWSClaimed
- MongoDBClaimed
5 of 7 appear in the indexed code. 2 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
101 KB
Source files
35
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
rubenyh/fusion-cruzhacks2.0
61 files · 1.1 MB · @ c3691c4
Structure
Interface
26 files · 43%Screens, components and styles rendered to the user.
Application logic
7 files · 11%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python49%
- TypeScript39%
- Markdown7%
- JavaScript6%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 36- @expo/vector-icons
- @react-navigation/bottom-tabs
- @react-navigation/drawer
- @react-navigation/elements
- @react-navigation/native
- base-64
- expo
- expo-auth-session
- expo-constants
- expo-font
- expo-haptics
- expo-image
- expo-image-picker
- expo-linking
- expo-media-library
- expo-router
- expo-secure-store
- expo-sharing
- +18 more
backend/requirements.txt
pypi · 11- boto3
- fastapi
- google-generativeai
- groq
- langchain-groq
- pymongo[srv]
- python-dotenv
- python-jose[cryptography]
- reportlab
- uagents
- uvicorn
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.